mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
Support multiple elements \u syntax
This commit is contained in:
@@ -3995,6 +3995,20 @@ parse_string(parser_state *p)
|
||||
tokadd(p, '\\');
|
||||
tokadd(p, c);
|
||||
}
|
||||
else if (c == 'u' && peek(p, '{')) {
|
||||
/* \u{xxxx xxxx xxxx} form */
|
||||
nextc(p);
|
||||
while (1) {
|
||||
do c = nextc(p); while (ISSPACE(c));
|
||||
if (c == '}') break;
|
||||
pushback(p, c);
|
||||
c = read_escape_unicode(p, 8);
|
||||
if (c < 0) break;
|
||||
tokadd(p, -c);
|
||||
}
|
||||
if (hinf)
|
||||
hinf->line_head = FALSE;
|
||||
}
|
||||
else {
|
||||
pushback(p, c);
|
||||
tokadd(p, read_escape(p));
|
||||
|
||||
@@ -33,3 +33,7 @@ assert('braced \u notation test') do
|
||||
assert_equal("\xF0\x90\x80\x80", "\u{10000}")
|
||||
assert_equal("\xF4\x8F\xBF\xBF", "\u{10FFFF}")
|
||||
end
|
||||
|
||||
assert('braced multiple \u notation test') do
|
||||
assert_equal("ABC", "\u{41 42 43}")
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user