Skip to content

Commit

Permalink
Fix identifier unicode escape recognition
Browse files Browse the repository at this point in the history
Fixed #1211
  • Loading branch information
bitwiseman committed Jan 30, 2019
1 parent 3d3bbf2 commit f6ed35d
Show file tree
Hide file tree
Showing 6 changed files with 67 additions and 20 deletions.
6 changes: 3 additions & 3 deletions js/src/javascript/acorn.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions js/test/generated/beautify-javascript-tests.js
Original file line number Diff line number Diff line change
Expand Up @@ -350,6 +350,14 @@ function run_javascript_tests(test_obj, Urlencoded, js_beautify, html_beautify,
'var ' + unicode_char(228) + 'x = {\n' +
' ' + unicode_char(228) + 'rgerlich: true\n' +
'};');
bt(
'var \\u00E4\\u0ca0\\u0cA0\\u0Ca0 = {\n' +
' \\u0ca0rgerlich: true\n' +
'};');
bt(
'var \\u00E4add\\u0025 = {\n' +
' \\u0044rgerlich\\u0ca0: true\n' +
'};');
bt(
'var' + unicode_char(160) + unicode_char(3232) + '_' + unicode_char(3232) + ' = "hi";',
// -- output --
Expand Down
41 changes: 30 additions & 11 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 6 additions & 6 deletions python/jsbeautifier/javascript/acorn.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,24 +39,24 @@
#_nonASCIIidentifierStart = re.compile("[" + _nonASCIIidentifierStartChars + "]")
#_nonASCIIidentifier = re.compile("[" + _nonASCIIidentifierStartChars + _nonASCIIidentifierChars + "]")

_identifierStart = six.u("[") + \
_identifierStart = six.u(r"(?:\\u[0-9a-fA-F]{4}|[") + \
_baseASCIIidentifierStartChars + \
_nonASCIIidentifierStartChars + \
six.u("]")
_identifierChars = six.u("[") + \
six.u("])")
_identifierChars = six.u(r"(?:\\u[0-9a-fA-F]{4}|[") + \
_baseASCIIidentifierChars + \
_nonASCIIidentifierStartChars + \
_nonASCIIidentifierChars + \
six.u("]*")
six.u("])*")

identifier = re.compile(_identifierStart + _identifierChars)

identifierStart = re.compile(_identifierStart)
identifierMatch = re.compile(six.u("[") + \
identifierMatch = re.compile(six.u(r"(?:\\u[0-9a-fA-F]{4}|[") + \
_baseASCIIidentifierChars + \
_nonASCIIidentifierStartChars + \
_nonASCIIidentifierChars + \
six.u("]+"))
six.u("])+"))

_nonASCIIwhitespace = re.compile(
six.u(r"[\u1680\u180e\u2000-\u200a\u202f\u205f\u3000\ufeff]"))
Expand Down
8 changes: 8 additions & 0 deletions python/jsbeautifier/tests/generated/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,14 @@ def unicode_char(value):
'var ' + unicode_char(228) + 'x = {\n' +
' ' + unicode_char(228) + 'rgerlich: true\n' +
'};')
bt(
'var \\u00E4\\u0ca0\\u0cA0\\u0Ca0 = {\n' +
' \\u0ca0rgerlich: true\n' +
'};')
bt(
'var \\u00E4add\\u0025 = {\n' +
' \\u0044rgerlich\\u0ca0: true\n' +
'};')
bt(
'var' + unicode_char(160) + unicode_char(3232) + '_' + unicode_char(3232) + ' = "hi";',
# -- output --
Expand Down
12 changes: 12 additions & 0 deletions test/data/javascript/tests.js
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,18 @@ exports.test_data = {
" ' + unicode_char(228) + 'rgerlich: true",
"};"
]
}, {
unchanged: [
"var \\\\u00E4\\\\u0ca0\\\\u0cA0\\\\u0Ca0 = {",
" \\\\u0ca0rgerlich: true",
"};"
]
}, {
unchanged: [
"var \\\\u00E4add\\\\u0025 = {",
" \\\\u0044rgerlich\\\\u0ca0: true",
"};"
]
}, {
input_: "var' + unicode_char(160) + unicode_char(3232) + '_' + unicode_char(3232) + ' = \"hi\";",
output: "var ' + unicode_char(3232) + '_' + unicode_char(3232) + ' = \"hi\";"
Expand Down

0 comments on commit f6ed35d

Please sign in to comment.