From: KO. Mattsson Date: Mon, 25 Apr 2016 12:46:06 +0000 (+0200) Subject: jslexer.py: Change jsx_tag regex again X-Git-Tag: v2.4.0~9^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=be0d8cb340264c0f11f29efc67c5fb109b429e39;p=thirdparty%2Fbabel.git jslexer.py: Change jsx_tag regex again We've had some syntactic variations that my previous PR, #392, did not account for. One case had a component as a prop that tripped up the regex. --- diff --git a/babel/messages/jslexer.py b/babel/messages/jslexer.py index 665a86fb..a9bab2f2 100644 --- a/babel/messages/jslexer.py +++ b/babel/messages/jslexer.py @@ -45,7 +45,7 @@ _rules = [ ([eE][-+]?\d+)? | (0x[a-fA-F0-9]+) )''')), - ('jsx_tag', re.compile(r' ]+', re.I)), # May be mangled in `get_rules` + ('jsx_tag', re.compile(r'(?:\s]+|/>)', re.I)), # May be mangled in `get_rules` ('operator', re.compile(r'(%s)' % '|'.join(map(re.escape, operators)))), ('template_string', re.compile(r'''`(?:[^`\\]*(?:\\.[^`\\]*)*)`''', re.UNICODE)), ('string', re.compile(r'''(?xs)( diff --git a/tests/messages/test_jslexer.py b/tests/messages/test_jslexer.py index e125fec7..b70621fc 100644 --- a/tests/messages/test_jslexer.py +++ b/tests/messages/test_jslexer.py @@ -40,55 +40,86 @@ def test_jsx(): + } data={{active: true}}> + + """, jsx=True)) == [ - ('jsx_tag', '', 2), - ('operator', '{', 2), - ('name', 'i18n._', 2), - ('operator', '(', 2), - ('string', "'String1'", 2), - ('operator', ')', 2), - ('operator', '}', 2), - ('jsx_tag', '', 2), - ('jsx_tag', '', 3), - ('operator', '{', 3), - ('name', 'i18n._', 3), - ('operator', '(', 3), - ('string', "'String 2'", 3), - ('operator', ')', 3), - ('operator', '}', 3), - ('jsx_tag', '', 3), - ('jsx_tag', '', 4), - ('operator', '{', 4), - ('name', 'i18n._', 4), - ('operator', '(', 4), - ('string', "'String 3'", 4), - ('operator', ')', 4), - ('operator', '}', 4), - ('jsx_tag', '', 4), - ('jsx_tag', '', 5) - ] + ('jsx_tag', '', 2), + ('operator', '{', 2), + ('name', 'i18n._', 2), + ('operator', '(', 2), + ('string', "'String1'", 2), + ('operator', ')', 2), + ('operator', '}', 2), + ('jsx_tag', '', 2), + ('jsx_tag', '', 3), + ('operator', '{', 3), + ('name', 'i18n._', 3), + ('operator', '(', 3), + ('string', "'String 2'", 3), + ('operator', ')', 3), + ('operator', '}', 3), + ('jsx_tag', '', 3), + ('jsx_tag', '', 4), + ('operator', '{', 4), + ('name', 'i18n._', 4), + ('operator', '(', 4), + ('string', "'String 3'", 4), + ('operator', ')', 4), + ('operator', '}', 4), + ('jsx_tag', '', 4), + ('jsx_tag', '', 5), + ('jsx_tag', '', 6), + ('operator', '}', 6), + ('name', 'data', 6), + ('operator', '=', 6), + ('operator', '{', 6), + ('operator', '{', 6), + ('name', 'active', 6), + ('operator', ':', 6), + ('name', 'true', 6), + ('operator', '}', 6), + ('operator', '}', 6), + ('operator', '>', 6), + ('jsx_tag', '', 7), + ('jsx_tag', '', 8) + ]