aboutsummaryrefslogtreecommitdiffstats
path: root/src/parse
diff options
context:
space:
mode:
authorJonas Maier <jonas@x77.dev>2026-06-06 12:34:22 +0200
committerJonas Maier <jonas@x77.dev>2026-06-06 12:34:22 +0200
commita2e9e8647daa2622cf55a047c329027fcfc49bf8 (patch)
treee59787ebbd6a71735190d222a55edc351927d8be /src/parse
parent53980774c327675e886179c0a2c140744dcf9b95 (diff)
downloadpish-a2e9e8647daa2622cf55a047c329027fcfc49bf8.tar.gz
some small opt
Diffstat (limited to 'src/parse')
-rw-r--r--src/parse/regex.rs13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/parse/regex.rs b/src/parse/regex.rs
index e5329e8..22c3b9c 100644
--- a/src/parse/regex.rs
+++ b/src/parse/regex.rs
@@ -1,5 +1,5 @@
use super::{Cursor, OtherHighlights, Parse, ParseError, Result};
-use crate::regex::{GreedyBehavior, Pattern, LookDirection, LookPolarity};
+use crate::regex::{Class, GreedyBehavior, LookDirection, LookPolarity, Pattern};
const SYMBOLS: &[u8] = b"{}[]()*+-?|.\\ ";
fn is_symbol(x: u8) -> bool {
@@ -10,10 +10,13 @@ impl Parse for Pattern {
fn parse(b: &mut Cursor<'_>) -> super::Result<Self> {
let begin = b.loc();
let result = parse0(b);
- if result.is_ok() {
- b.highlight_from(begin, OtherHighlights::Regex);
+ match result {
+ Ok(re) => {
+ b.highlight_from(begin, OtherHighlights::Regex);
+ Ok(re.simplify())
+ }
+ Err(e) => Err(e),
}
- result
}
}
@@ -187,7 +190,7 @@ fn parse_atom(s: &mut super::Cursor<'_>) -> Result<Pattern> {
b'.' => {
s.adv();
s.highlight_from(begin, OtherHighlights::RegexSymbol);
- Ok(Pattern::Range(0, 127))
+ Ok(Pattern::CharacterClass(Class::Everything))
}
b'\\' => {
s.adv();