Browse Source
[utils] Handle single-line comments in js_to_json
master
Michal Čihař
8 years ago
committed by
Sergey M․
No known key found for this signature in database
GPG Key ID: 2C393E0F18A9236D
2 changed files with
5 additions and
2 deletions
-
test/test_utils.py
-
youtube_dl/utils.py
|
|
@ -791,6 +791,9 @@ class TestUtil(unittest.TestCase): |
|
|
|
on = js_to_json('{ 0: /* " \n */ ",]" , }') |
|
|
|
self.assertEqual(json.loads(on), {'0': ',]'}) |
|
|
|
|
|
|
|
on = js_to_json('{ 0: // comment\n1 }') |
|
|
|
self.assertEqual(json.loads(on), {'0': 1}) |
|
|
|
|
|
|
|
on = js_to_json(r'["<p>x<\/p>"]') |
|
|
|
self.assertEqual(json.loads(on), ['<p>x</p>']) |
|
|
|
|
|
|
|
|
|
@ -2107,7 +2107,7 @@ def js_to_json(code): |
|
|
|
v = m.group(0) |
|
|
|
if v in ('true', 'false', 'null'): |
|
|
|
return v |
|
|
|
elif v.startswith('/*') or v == ',': |
|
|
|
elif v.startswith('/*') or v.startswith('//') or v == ',': |
|
|
|
return "" |
|
|
|
|
|
|
|
if v[0] in ("'", '"'): |
|
|
@ -2134,7 +2134,7 @@ def js_to_json(code): |
|
|
|
return re.sub(r'''(?sx) |
|
|
|
"(?:[^"\\]*(?:\\\\|\\['"nurtbfx/\n]))*[^"\\]*"| |
|
|
|
'(?:[^'\\]*(?:\\\\|\\['"nurtbfx/\n]))*[^'\\]*'| |
|
|
|
/\*.*?\*/|,(?=\s*[\]}])| |
|
|
|
/\*.*?\*/|//[^\n]*|,(?=\s*[\]}])| |
|
|
|
[a-zA-Z_][.a-zA-Z_0-9]*| |
|
|
|
\b(?:0[xX][0-9a-fA-F]+|0+[0-7]+)(?:\s*:)?| |
|
|
|
[0-9]+(?=\s*:) |
|
|
|