diff options
Diffstat (limited to 'src/parse/regex.rs')
| -rw-r--r-- | src/parse/regex.rs | 13 |
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(); |
