diff options
Diffstat (limited to 'Lib/json/scanner.py')
-rw-r--r-- | Lib/json/scanner.py | 20 |
1 files changed, 7 insertions, 13 deletions
diff --git a/Lib/json/scanner.py b/Lib/json/scanner.py index 7a61cfc..74e6805 100644 --- a/Lib/json/scanner.py +++ b/Lib/json/scanner.py @@ -17,25 +17,25 @@ def py_make_scanner(context): parse_array = context.parse_array parse_string = context.parse_string match_number = NUMBER_RE.match + encoding = context.encoding strict = context.strict parse_float = context.parse_float parse_int = context.parse_int parse_constant = context.parse_constant object_hook = context.object_hook object_pairs_hook = context.object_pairs_hook - memo = context.memo def _scan_once(string, idx): try: nextchar = string[idx] except IndexError: - raise StopIteration(idx) from None + raise StopIteration if nextchar == '"': - return parse_string(string, idx + 1, strict) + return parse_string(string, idx + 1, encoding, strict) elif nextchar == '{': - return parse_object((string, idx + 1), strict, - _scan_once, object_hook, object_pairs_hook, memo) + return parse_object((string, idx + 1), encoding, strict, + _scan_once, object_hook, object_pairs_hook) elif nextchar == '[': return parse_array((string, idx + 1), _scan_once) elif nextchar == 'n' and string[idx:idx + 4] == 'null': @@ -60,14 +60,8 @@ def py_make_scanner(context): elif nextchar == '-' and string[idx:idx + 9] == '-Infinity': return parse_constant('-Infinity'), idx + 9 else: - raise StopIteration(idx) + raise StopIteration - def scan_once(string, idx): - try: - return _scan_once(string, idx) - finally: - memo.clear() - - return scan_once + return _scan_once make_scanner = c_make_scanner or py_make_scanner |