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

Unified Diff: runtime/bin/vmservice/observatory/lib/src/elements/observatory_element.dart

Issue 542363003: Don't double-escape in strings in the VM Service, and don't use \u0000 to determine the string lengt (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: build Created 6 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: runtime/bin/vmservice/observatory/lib/src/elements/observatory_element.dart
diff --git a/runtime/bin/vmservice/observatory/lib/src/elements/observatory_element.dart b/runtime/bin/vmservice/observatory/lib/src/elements/observatory_element.dart
index 4dccf987b54d039ec03ae8d79fb81c3e221dd8fc..1141def5ee66e662aae0a149a9601f220a167931 100644
--- a/runtime/bin/vmservice/observatory/lib/src/elements/observatory_element.dart
+++ b/runtime/bin/vmservice/observatory/lib/src/elements/observatory_element.dart
@@ -111,4 +111,28 @@ class ObservatoryElement extends PolymerElement {
}
int parseInt(String value) => int.parse(value);
+
+ String asStringLiteral(String value, [bool wasTruncated=false]) {
+ var result = new List();
+ result.add("'".codeUnitAt(0));
+ for (int codeUnit in value.codeUnits) {
+ if (codeUnit == '\n'.codeUnitAt(0)) result.addAll('\\n'.codeUnits);
+ else if (codeUnit == '\r'.codeUnitAt(0)) result.addAll('\\r'.codeUnits);
+ else if (codeUnit == '\f'.codeUnitAt(0)) result.addAll('\\f'.codeUnits);
+ else if (codeUnit == '\b'.codeUnitAt(0)) result.addAll('\\b'.codeUnits);
+ else if (codeUnit == '\t'.codeUnitAt(0)) result.addAll('\\t'.codeUnits);
+ else if (codeUnit == '\v'.codeUnitAt(0)) result.addAll('\\v'.codeUnits);
+ else if (codeUnit == '\$'.codeUnitAt(0)) result.addAll('\\\$'.codeUnits);
+ else if (codeUnit == '\\'.codeUnitAt(0)) result.addAll('\\\\'.codeUnits);
+ else if (codeUnit == "'".codeUnitAt(0)) result.addAll("'".codeUnits);
+ else if (codeUnit < 32) result.addAll("\\u$codeUnit".codeUnits);
+ else result.add(codeUnit);
+ }
+ if (wasTruncated) {
+ result.addAll("...".codeUnits);
+ } else {
+ result.add("'".codeUnitAt(0));
+ }
+ return new String.fromCharCodes(result);
+ }
}

Powered by Google App Engine
This is Rietveld 408576698