From 4b0489e2f3c1136b206e93915ebedcc207d70969 Mon Sep 17 00:00:00 2001 From: Ika Date: Sun, 1 Sep 2019 14:30:33 +0800 Subject: [PATCH] fix: allow lowercase unicode escape (#440) --- cli/src/generate/prepare_grammar/expand_tokens.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cli/src/generate/prepare_grammar/expand_tokens.rs b/cli/src/generate/prepare_grammar/expand_tokens.rs index 2b88762b..9b594f3c 100644 --- a/cli/src/generate/prepare_grammar/expand_tokens.rs +++ b/cli/src/generate/prepare_grammar/expand_tokens.rs @@ -12,7 +12,7 @@ use std::i32; lazy_static! { static ref CURLY_BRACE_REGEX: Regex = - Regex::new(r#"(^|[^\\])\{([^}]*[^0-9A-F,}][^}]*)\}"#).unwrap(); + Regex::new(r#"(^|[^\\])\{([^}]*[^0-9A-Fa-f,}][^}]*)\}"#).unwrap(); } const ALLOWED_REDUNDANT_ESCAPED_CHARS: [char; 4] = ['!', '\'', '"', '/']; @@ -653,12 +653,15 @@ mod tests { Rule::pattern(r#"\{[ab]{3}\}"#), // Unicode codepoints Rule::pattern(r#"\u{1000A}"#), + // Unicode codepoints (lowercase) + Rule::pattern(r#"\u{1000b}"#), ], separators: vec![], examples: vec![ ("u{1234} ok", Some((0, "u{1234}"))), ("{aba}}", Some((1, "{aba}"))), ("\u{1000A}", Some((2, "\u{1000A}"))), + ("\u{1000b}", Some((3, "\u{1000b}"))), ], }, ];