OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 // Patch file for dart:convert library. | 5 // Patch file for dart:convert library. |
6 | 6 |
7 import 'dart:_js_helper' show patch; | 7 import 'dart:_js_helper' show argumentErrorValue, patch; |
8 import 'dart:_foreign_helper' show JS; | 8 import 'dart:_foreign_helper' show JS; |
9 import 'dart:_interceptors' show JSExtendableArray; | 9 import 'dart:_interceptors' show JSExtendableArray; |
10 import 'dart:_internal' show MappedIterable, ListIterable; | 10 import 'dart:_internal' show MappedIterable, ListIterable; |
11 import 'dart:collection' show Maps, LinkedHashMap; | 11 import 'dart:collection' show Maps, LinkedHashMap; |
12 | 12 |
13 /** | 13 /** |
14 * Parses [json] and builds the corresponding parsed JSON value. | 14 * Parses [json] and builds the corresponding parsed JSON value. |
15 * | 15 * |
16 * Parsed JSON values Nare of the types [num], [String], [bool], [Null], | 16 * Parsed JSON values Nare of the types [num], [String], [bool], [Null], |
17 * [List]s of parsed JSON values or [Map]s from [String] to parsed | 17 * [List]s of parsed JSON values or [Map]s from [String] to parsed |
18 * JSON values. | 18 * JSON values. |
19 * | 19 * |
20 * The optional [reviver] function, if provided, is called once for each object | 20 * The optional [reviver] function, if provided, is called once for each object |
21 * or list property parsed. The arguments are the property name ([String]) or | 21 * or list property parsed. The arguments are the property name ([String]) or |
22 * list index ([int]), and the value is the parsed value. The return value of | 22 * list index ([int]), and the value is the parsed value. The return value of |
23 * the reviver will be used as the value of that property instead of the parsed | 23 * the reviver will be used as the value of that property instead of the parsed |
24 * value. The top level value is passed to the reviver with the empty string as | 24 * value. The top level value is passed to the reviver with the empty string as |
25 * a key. | 25 * a key. |
26 * | 26 * |
27 * Throws [FormatException] if the input is not valid JSON text. | 27 * Throws [FormatException] if the input is not valid JSON text. |
28 */ | 28 */ |
29 @patch | 29 @patch |
30 _parseJson(String source, reviver(key, value)) { | 30 _parseJson(String source, reviver(key, value)) { |
31 if (source is! String) throw new ArgumentError(source); | 31 if (source is! String) throw argumentErrorValue(source); |
32 | 32 |
33 var parsed; | 33 var parsed; |
34 try { | 34 try { |
35 parsed = JS('=Object|JSExtendableArray|Null|bool|num|String', | 35 parsed = JS('=Object|JSExtendableArray|Null|bool|num|String', |
36 'JSON.parse(#)', | 36 'JSON.parse(#)', |
37 source); | 37 source); |
38 } catch (e) { | 38 } catch (e) { |
39 throw new FormatException(JS('String', 'String(#)', e)); | 39 throw new FormatException(JS('String', 'String(#)', e)); |
40 } | 40 } |
41 | 41 |
(...skipping 359 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
401 return super.fuse(next); | 401 return super.fuse(next); |
402 } | 402 } |
403 | 403 |
404 // Currently not intercepting UTF8 decoding. | 404 // Currently not intercepting UTF8 decoding. |
405 @patch | 405 @patch |
406 static String _convertIntercepted(bool allowMalformed, List<int> codeUnits, | 406 static String _convertIntercepted(bool allowMalformed, List<int> codeUnits, |
407 int start, int end) { | 407 int start, int end) { |
408 return null; // This call was not intercepted. | 408 return null; // This call was not intercepted. |
409 } | 409 } |
410 } | 410 } |
OLD | NEW |