fix(dsl): tail condition

This commit is contained in:
🪞👃🪞 2025-07-31 21:00:13 +03:00
parent 85c305385b
commit 9e0b7be9a9

View file

@ -6,19 +6,13 @@
extern crate const_panic;
use const_panic::PanicFmt;
use std::fmt::Debug;
pub(crate) use std::error::Error;
pub(crate) use std::sync::Arc;
pub(crate) use konst::string::{str_range, char_indices};
pub(crate) use thiserror::Error;
pub(crate) use ::tengri_core::*;
pub(crate) use self::DslError::*;
mod dsl_conv;
pub use self::dsl_conv::*;
mod dsl_conv; pub use self::dsl_conv::*;
mod dsl_parse;
pub(crate) use self::dsl_parse::*;
pub mod parse { pub use crate::dsl_parse::*; }
@ -47,11 +41,20 @@ pub trait DslExp: Dsl {
Ok(exp_peek(self.src())?)
}
fn head (&self) -> DslPerhaps<&str> {
Ok(peek(&self.src()[1..])?)
let start = 1;
let src = self.src();
let src = &src[start.min(src.len().saturating_sub(1))..];
peek(src)
}
fn tail (&self) -> DslPerhaps<&str> {
Ok(if let Some((head_start, head_len)) = seek(&self.src()[1..])? {
peek(&self.src()[(1+head_start+head_len)..])?
let start = 1;
let src = self.src();
let src = &src[start.min(src.len().saturating_sub(1))..];
Ok(if let Some((head_start, head_len)) = seek(src)? {
let start = 1 + head_start + head_len;
let src = self.src();
let src = &src[start.min(src.len().saturating_sub(1))..];
peek(src)?
} else {
None
})