diff options
| author | Jonas Maier <jonas@x77.dev> | 2026-06-06 13:45:54 +0200 |
|---|---|---|
| committer | Jonas Maier <jonas@x77.dev> | 2026-06-06 13:45:54 +0200 |
| commit | d39ed8fc77981f937c35fa84a7ff5d288d0c7181 (patch) | |
| tree | c17ba6e489a66e732853e9720eba4c16fa86d441 /src/regex/simple.rs | |
| parent | 1c0c0c35f3dff0abc8ac24ec90dedf554697cec5 (diff) | |
| download | pish-d39ed8fc77981f937c35fa84a7ff5d288d0c7181.tar.gz | |
clean up
Diffstat (limited to 'src/regex/simple.rs')
| -rw-r--r-- | src/regex/simple.rs | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/src/regex/simple.rs b/src/regex/simple.rs index e75ff14..4286322 100644 --- a/src/regex/simple.rs +++ b/src/regex/simple.rs @@ -8,6 +8,7 @@ fn empty_match() -> Option<Match> { }) } +#[derive(Debug)] pub struct Anything; #[derive(Debug, Clone)] @@ -17,12 +18,19 @@ impl RegexEngine for Anything { type CompileError = NotASimpleWildcard; fn compile(pat: Pattern) -> Result<Self, Self::CompileError> { - if let Pattern::Rep(pat, 0, None, _) = pat - && let Pattern::CharacterClass(Class::Everything) = *pat - { - Ok(Anything) - } else { - Err(NotASimpleWildcard) + match pat { + Pattern::Rep(pat, 0, None, _) => match *pat { + Pattern::CharacterClass(Class::Everything) => Ok(Anything), + _ => Err(NotASimpleWildcard), + }, + Pattern::Concat(pats) | Pattern::Alt(pats) => { + if !pats.is_empty() && pats.into_iter().all(|p| Anything::compile(p).is_ok()) { + Ok(Anything) + } else { + Err(NotASimpleWildcard) + } + } + _ => Err(NotASimpleWildcard), } } @@ -31,6 +39,7 @@ impl RegexEngine for Anything { } } +#[derive(Debug)] pub struct Nothing; #[derive(Debug, Clone)] pub struct NotASimpleNothing; @@ -70,8 +79,9 @@ impl RegexEngine for Nothing { } } +#[derive(Debug)] pub struct Exact { - bytes: Vec<u8>, + pub bytes: Vec<u8>, } const MEM_LIMIT: usize = 25_000; |
