[utils] Improve js_to_json comment regex

Capture the newline character as part of a single-line comment

From #497, Authored by: fstirlitz
This commit is contained in:
felix 2021-07-13 09:18:20 +02:00 committed by pukkandan
parent 198f7ea89e
commit c843e68588
No known key found for this signature in database
GPG Key ID: 0F00D95A001F4698
2 changed files with 4 additions and 1 deletions

View File

@ -1054,6 +1054,9 @@ def test_js_to_json_edgecases(self):
on = js_to_json('{ "040": "040" }') on = js_to_json('{ "040": "040" }')
self.assertEqual(json.loads(on), {'040': '040'}) self.assertEqual(json.loads(on), {'040': '040'})
on = js_to_json('[1,//{},\n2]')
self.assertEqual(json.loads(on), [1, 2])
def test_js_to_json_malformed(self): def test_js_to_json_malformed(self):
self.assertEqual(js_to_json('42a1'), '42"a1"') self.assertEqual(js_to_json('42a1'), '42"a1"')
self.assertEqual(js_to_json('42a-1'), '42"a"-1') self.assertEqual(js_to_json('42a-1'), '42"a"-1')

View File

@ -4365,7 +4365,7 @@ def strip_jsonp(code):
def js_to_json(code, vars={}): def js_to_json(code, vars={}):
# vars is a dict of var, val pairs to substitute # vars is a dict of var, val pairs to substitute
COMMENT_RE = r'/\*(?:(?!\*/).)*?\*/|//[^\n]*' COMMENT_RE = r'/\*(?:(?!\*/).)*?\*/|//[^\n]*\n'
SKIP_RE = r'\s*(?:{comment})?\s*'.format(comment=COMMENT_RE) SKIP_RE = r'\s*(?:{comment})?\s*'.format(comment=COMMENT_RE)
INTEGER_TABLE = ( INTEGER_TABLE = (
(r'(?s)^(0[xX][0-9a-fA-F]+){skip}:?$'.format(skip=SKIP_RE), 16), (r'(?s)^(0[xX][0-9a-fA-F]+){skip}:?$'.format(skip=SKIP_RE), 16),