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); |
} |