| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 #library("dart:json"); | 5 #library("dart:json"); |
| 6 | 6 |
| 7 #import('dart:math'); | 7 #import('dart:math'); |
| 8 | 8 |
| 9 // JSON parsing and serialization. | 9 // JSON parsing and serialization. |
| 10 | 10 |
| (...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 324 break; | 324 break; |
| 325 case CHAR_T: | 325 case CHAR_T: |
| 326 c = TAB; | 326 c = TAB; |
| 327 break; | 327 break; |
| 328 case CHAR_U: | 328 case CHAR_U: |
| 329 if (position + 5 > length) { | 329 if (position + 5 > length) { |
| 330 error('Invalid unicode esacape sequence'); | 330 error('Invalid unicode esacape sequence'); |
| 331 } | 331 } |
| 332 final codeString = json.substring(position + 1, position + 5); | 332 final codeString = json.substring(position + 1, position + 5); |
| 333 try { | 333 try { |
| 334 c = parseInt('0x${codeString}'); | 334 c = int.parse('0x${codeString}'); |
| 335 } catch (e) { | 335 } catch (e) { |
| 336 error('Invalid unicode esacape sequence'); | 336 error('Invalid unicode esacape sequence'); |
| 337 } | 337 } |
| 338 position += 4; | 338 position += 4; |
| 339 break; | 339 break; |
| 340 default: | 340 default: |
| 341 error('Invalid esacape sequence in string literal'); | 341 error('Invalid esacape sequence in string literal'); |
| 342 } | 342 } |
| 343 } | 343 } |
| 344 charCodes.add(c); | 344 charCodes.add(c); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 382 char = nextChar(); | 382 char = nextChar(); |
| 383 isInt = false; | 383 isInt = false; |
| 384 while (isDigit(char)) char = nextChar(); | 384 while (isDigit(char)) char = nextChar(); |
| 385 } else { | 385 } else { |
| 386 error('Expected digit following \'e\' or \'E\''); | 386 error('Expected digit following \'e\' or \'E\''); |
| 387 } | 387 } |
| 388 } | 388 } |
| 389 | 389 |
| 390 String number = json.substring(startPos, position); | 390 String number = json.substring(startPos, position); |
| 391 if (isInt) { | 391 if (isInt) { |
| 392 return parseInt(number); | 392 return int.parse(number); |
| 393 } else { | 393 } else { |
| 394 return parseDouble(number); | 394 return double.parse(number); |
| 395 } | 395 } |
| 396 } | 396 } |
| 397 | 397 |
| 398 bool isChar(int char) { | 398 bool isChar(int char) { |
| 399 if (position >= length) return false; | 399 if (position >= length) return false; |
| 400 return json.charCodeAt(position) == char; | 400 return json.charCodeAt(position) == char; |
| 401 } | 401 } |
| 402 | 402 |
| 403 bool isDigit(int char) { | 403 bool isDigit(int char) { |
| 404 return char >= CHAR_0 && char <= CHAR_9; | 404 return char >= CHAR_0 && char <= CHAR_9; |
| (...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 593 first = false; | 593 first = false; |
| 594 }); | 594 }); |
| 595 sb.add('}'); | 595 sb.add('}'); |
| 596 seen.removeLast(); | 596 seen.removeLast(); |
| 597 return true; | 597 return true; |
| 598 } else { | 598 } else { |
| 599 return false; | 599 return false; |
| 600 } | 600 } |
| 601 } | 601 } |
| 602 } | 602 } |
| OLD | NEW |