Chromium Code Reviews| Index: client/json/dart_json.dart |
| =================================================================== |
| --- client/json/dart_json.dart (revision 3201) |
| +++ client/json/dart_json.dart (working copy) |
| @@ -493,7 +493,8 @@ |
| // TODO: add others. |
| static bool _needsEscape(int charCode) { |
| - return JsonTokenizer.QUOTE == charCode || JsonTokenizer.BACKSLASH == charCode; |
| + return JsonTokenizer.QUOTE == charCode || JsonTokenizer.BACKSLASH == charCode |
| + || JsonTokenizer.NEW_LINE == charCode || JsonTokenizer.LINE_FEED == charCode; |
| } |
| static void _escape(StringBuffer sb, String s) { |
| @@ -504,10 +505,16 @@ |
| bool needsEscape = false; |
| final charCodes = new List<int>(); |
| for (int i = 0; i < length; i++) { |
| - final int charCode = s.charCodeAt(i); |
| + int charCode = s.charCodeAt(i); |
| if (_needsEscape(charCode)) { |
| charCodes.add(JsonTokenizer.BACKSLASH); |
| needsEscape = true; |
| + |
| + if (JsonTokenizer.NEW_LINE == charCode) { |
| + charCode = 110; // 'n' |
|
Anton Muhin
2012/01/12 13:23:00
as an option see A_SMALL above. Ditto for r
devoncarew
2012/01/12 21:28:11
Done.
|
| + } else if (JsonTokenizer.LINE_FEED == charCode) { |
| + charCode = 114; // 'r' |
| + } |
| } |
| charCodes.add(charCode); |
| } |