aboutsummaryrefslogtreecommitdiffstats
path: root/src/parse
diff options
context:
space:
mode:
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();