From: KO. Mattsson Date: Mon, 18 Apr 2016 16:33:11 +0000 (+0200) Subject: jslexer.py: Change jsx_tag regex X-Git-Tag: v2.4.0~27^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=572f75a3e90ee3ee608a65b01de0886395fd2331;p=thirdparty%2Fbabel.git jslexer.py: Change jsx_tag regex A less greedy jsx_tag regex. Can handle translatable strings both as children or as props to a component. --- diff --git a/babel/messages/jslexer.py b/babel/messages/jslexer.py index aed39f33..665a86fb 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'<(?:/?)\w+.+?>', re.I)), # May be mangled in `get_rules` + ('jsx_tag', re.compile(r' ]+', 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 84221a1d..e125fec7 100644 --- a/tests/messages/test_jslexer.py +++ b/tests/messages/test_jslexer.py @@ -32,3 +32,63 @@ def test_template_string(): ('name', 'gettext', 1), ('template_string', '`foo"bar"p`', 1) ] + + +def test_jsx(): + assert list(jslexer.tokenize(""" + + + + + """, 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) + ]