| Index: runtime/observatory/lib/utils.dart
|
| diff --git a/runtime/observatory/lib/utils.dart b/runtime/observatory/lib/utils.dart
|
| index b8b5bb33bd9ff998e016a549cb417c29c2a89346..8796e3d61c1dce1c3ac5e242425e5d15439d8028 100644
|
| --- a/runtime/observatory/lib/utils.dart
|
| +++ b/runtime/observatory/lib/utils.dart
|
| @@ -157,6 +157,32 @@ class Utils {
|
| formatMillis(x.inMicroseconds / Duration.MICROSECONDS_PER_MILLISECOND);
|
|
|
| static bool runningInJavaScript() => identical(1.0, 1);
|
| +
|
| + static formatStringAsLiteral(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) {
|
| + var escapeSequence = "\\u" + codeUnit.toRadixString(16).padLeft(4, "0");
|
| + result.addAll(escapeSequence.codeUnits);
|
| + } else result.add(codeUnit);
|
| + }
|
| + if (wasTruncated) {
|
| + result.addAll("...".codeUnits);
|
| + } else {
|
| + result.add("'".codeUnitAt(0));
|
| + }
|
| + return new String.fromCharCodes(result);
|
| + }
|
| }
|
|
|
| /// A [Task] that can be scheduled on the Dart event queue.
|
|
|