Browse Source
[utils] Correct octal/hexadecimal number detection in js_to_json
master
Yen Chi Hsuan
8 years ago
No known key found for this signature in database
GPG Key ID: 3FDDD575826C5C30
3 changed files with
12 additions and
3 deletions
-
ChangeLog
-
test/test_utils.py
-
youtube_dl/utils.py
|
|
@ -1,3 +1,9 @@ |
|
|
|
version <unreleased> |
|
|
|
|
|
|
|
Core |
|
|
|
* Fix js_to_json(): correct octal or hexadecimal number detection |
|
|
|
|
|
|
|
|
|
|
|
version 2016.08.19 |
|
|
|
|
|
|
|
Core |
|
|
|
|
|
@ -712,6 +712,9 @@ class TestUtil(unittest.TestCase): |
|
|
|
inp = '''{"foo":101}''' |
|
|
|
self.assertEqual(js_to_json(inp), '''{"foo":101}''') |
|
|
|
|
|
|
|
inp = '''{"duration": "00:01:07"}''' |
|
|
|
self.assertEqual(js_to_json(inp), '''{"duration": "00:01:07"}''') |
|
|
|
|
|
|
|
def test_js_to_json_edgecases(self): |
|
|
|
on = js_to_json("{abc_def:'1\\'\\\\2\\\\\\'3\"4'}") |
|
|
|
self.assertEqual(json.loads(on), {"abc_def": "1'\\2\\'3\"4"}) |
|
|
|
|
|
@ -2038,14 +2038,14 @@ def js_to_json(code): |
|
|
|
}.get(m.group(0), m.group(0)), v[1:-1]) |
|
|
|
|
|
|
|
INTEGER_TABLE = ( |
|
|
|
(r'^0[xX][0-9a-fA-F]+', 16), |
|
|
|
(r'^0+[0-7]+', 8), |
|
|
|
(r'^(0[xX][0-9a-fA-F]+)\s*:?$', 16), |
|
|
|
(r'^(0+[0-7]+)\s*:?$', 8), |
|
|
|
) |
|
|
|
|
|
|
|
for regex, base in INTEGER_TABLE: |
|
|
|
im = re.match(regex, v) |
|
|
|
if im: |
|
|
|
i = int(im.group(0), base) |
|
|
|
i = int(im.group(1), base) |
|
|
|
return '"%d":' % i if v.endswith(':') else '%d' % i |
|
|
|
|
|
|
|
return '"%s"' % v |
|
|
|