[utils] Correct octal/hexadecimal number detection in js_to_json
parent
9e5751b9fe
commit
e4659b4547
|
@ -1,3 +1,9 @@
|
||||||
|
version <unreleased>
|
||||||
|
|
||||||
|
Core
|
||||||
|
* Fix js_to_json(): correct octal or hexadecimal number detection
|
||||||
|
|
||||||
|
|
||||||
version 2016.08.19
|
version 2016.08.19
|
||||||
|
|
||||||
Core
|
Core
|
||||||
|
|
|
@ -712,6 +712,9 @@ class TestUtil(unittest.TestCase):
|
||||||
inp = '''{"foo":101}'''
|
inp = '''{"foo":101}'''
|
||||||
self.assertEqual(js_to_json(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):
|
def test_js_to_json_edgecases(self):
|
||||||
on = js_to_json("{abc_def:'1\\'\\\\2\\\\\\'3\"4'}")
|
on = js_to_json("{abc_def:'1\\'\\\\2\\\\\\'3\"4'}")
|
||||||
self.assertEqual(json.loads(on), {"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])
|
}.get(m.group(0), m.group(0)), v[1:-1])
|
||||||
|
|
||||||
INTEGER_TABLE = (
|
INTEGER_TABLE = (
|
||||||
(r'^0[xX][0-9a-fA-F]+', 16),
|
(r'^(0[xX][0-9a-fA-F]+)\s*:?$', 16),
|
||||||
(r'^0+[0-7]+', 8),
|
(r'^(0+[0-7]+)\s*:?$', 8),
|
||||||
)
|
)
|
||||||
|
|
||||||
for regex, base in INTEGER_TABLE:
|
for regex, base in INTEGER_TABLE:
|
||||||
im = re.match(regex, v)
|
im = re.match(regex, v)
|
||||||
if im:
|
if im:
|
||||||
i = int(im.group(0), base)
|
i = int(im.group(1), base)
|
||||||
return '"%d":' % i if v.endswith(':') else '%d' % i
|
return '"%d":' % i if v.endswith(':') else '%d' % i
|
||||||
|
|
||||||
return '"%s"' % v
|
return '"%s"' % v
|
||||||
|
|
Loading…
Reference in New Issue