Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(386)

Side by Side Diff: frog/server/dart_json.dart

Issue 9181003: Fix to the JsonStringifier in dart_json.dart to escape eols. The error messages that frog sends t... (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: '' Created 8 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2011, 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("json"); 5 #library("json");
6 6
7 // TODO(devoncarew): this file is a copy of client/json/dart_json.dart and shoul d be deleted as 7 // TODO(devoncarew): this file is a copy of client/json/dart_json.dart and shoul d be deleted as
8 // soon as it is no longer referenced from frog_server.dart. 8 // soon as it is no longer referenced from frog_server.dart.
9 9
10 // Pure Dart implementation of JSON protocol. 10 // Pure Dart implementation of JSON protocol.
(...skipping 478 matching lines...) Expand 10 before | Expand all | Expand 10 after
489 case x is double: 489 case x is double:
490 return x.toString(); 490 return x.toString();
491 491
492 default: 492 default:
493 return x.toDouble().toString(); 493 return x.toDouble().toString();
494 } 494 }
495 } 495 }
496 496
497 // TODO: add others. 497 // TODO: add others.
498 static bool _needsEscape(int charCode) { 498 static bool _needsEscape(int charCode) {
499 return JsonTokenizer.QUOTE == charCode || JsonTokenizer.BACKSLASH == charCod e; 499 return JsonTokenizer.QUOTE == charCode || JsonTokenizer.BACKSLASH == charCod e
500 || JsonTokenizer.NEW_LINE == charCode || JsonTokenizer.LINE_FEED == charCo de;
500 } 501 }
501 502
502 static void _escape(StringBuffer sb, String s) { 503 static void _escape(StringBuffer sb, String s) {
503 // TODO: support \u code points. 504 // TODO: support \u code points.
504 // TODO: use writeCodePoint when implemented. 505 // TODO: use writeCodePoint when implemented.
505 // TODO: use for each if implemented. 506 // TODO: use for each if implemented.
506 final int length = s.length; 507 final int length = s.length;
507 bool needsEscape = false; 508 bool needsEscape = false;
508 final charCodes = new List<int>(); 509 final charCodes = new List<int>();
509 for (int i = 0; i < length; i++) { 510 for (int i = 0; i < length; i++) {
510 final int charCode = s.charCodeAt(i); 511 int charCode = s.charCodeAt(i);
511 if (_needsEscape(charCode)) { 512 if (_needsEscape(charCode)) {
512 charCodes.add(JsonTokenizer.BACKSLASH); 513 charCodes.add(JsonTokenizer.BACKSLASH);
513 needsEscape = true; 514 needsEscape = true;
515
516 if (JsonTokenizer.NEW_LINE == charCode) {
517 charCode = 110; // 'n'
518 } else if (JsonTokenizer.LINE_FEED == charCode) {
519 charCode = 114; // 'r'
520 }
514 } 521 }
515 charCodes.add(charCode); 522 charCodes.add(charCode);
516 } 523 }
517 sb.add(needsEscape ? new String.fromCharCodes(charCodes) : s); 524 sb.add(needsEscape ? new String.fromCharCodes(charCodes) : s);
518 } 525 }
519 526
520 void _checkCycle(final object) { 527 void _checkCycle(final object) {
521 // TODO: use Iterables. 528 // TODO: use Iterables.
522 for (int i = 0; i < _seen.length; i++) { 529 for (int i = 0; i < _seen.length; i++) {
523 if (_seen[i] === object) { 530 if (_seen[i] === object) {
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
586 }); 593 });
587 _sb.add('}'); 594 _sb.add('}');
588 _seen.removeLast(); 595 _seen.removeLast();
589 return; 596 return;
590 597
591 default: 598 default:
592 throw const JsonUnsupportedObjectType(); 599 throw const JsonUnsupportedObjectType();
593 } 600 }
594 } 601 }
595 } 602 }
OLDNEW
« client/tests/client/json/json_tests.dart ('K') | « client/tests/client/json/json_tests.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698