Chromium Code Reviews| Index: dart/tools/testing/dart/utils.dart |
| diff --git a/dart/tools/testing/dart/utils.dart b/dart/tools/testing/dart/utils.dart |
| index 661cd638032f0307dc6bcacef6bc99c4b399da2b..c8e4270949ff9a619d35ee0a6504ec938dc9e9ad 100644 |
| --- a/dart/tools/testing/dart/utils.dart |
| +++ b/dart/tools/testing/dart/utils.dart |
| @@ -65,6 +65,59 @@ class DebugLogger { |
| static String get _datetime => "${new DateTime.now()}"; |
| } |
| +String prettifyJson(Object json, {int startIndentation: 0}) { |
| + int LEVEL = 6; |
|
Bill Hesse
2013/11/15 11:24:03
Make LEVEL an optional parameter with a default va
kustermann
2013/11/19 10:06:10
Done.
|
| + |
| + int currentIndentation = startIndentation; |
| + var buffer = new StringBuffer(); |
| + |
| + String indentationString() { |
| + String str = ""; |
| + for (var i=0; i<currentIndentation; i++) { |
|
ricow1
2013/11/14 14:42:27
spaces around = and <
kustermann
2013/11/19 10:06:10
Done.
|
| + str += " "; |
| + } |
|
Bill Hesse
2013/11/15 11:24:03
new List.filled(i, ' ').join() is better, I think.
kustermann
2013/11/19 10:06:10
Done.
|
| + return str; |
| + } |
| + |
| + addString(String s, {bool indentation: true, bool newLine: true}) { |
| + if (indentation) { |
| + buffer.write(indentationString()); |
| + } |
| + buffer.write(s.replaceAll("\n", "\n${indentationString()}")); |
| + if (newLine) buffer.write("\n"); |
| + } |
| + |
| + prettifyJsonInternal( |
| + Object obj, {bool indentation: true, bool newLine: true}) { |
| + if (obj is List) { |
| + addString("[", indentation: indentation); |
| + currentIndentation += LEVEL; |
| + for (var item in obj) { |
| + |
| + prettifyJsonInternal(item, indentation: indentation, newLine: false); |
| + addString(",", indentation: false); |
| + } |
| + currentIndentation -= LEVEL; |
| + addString("]", indentation: indentation); |
| + } else if (obj is Map) { |
| + addString("{", indentation: indentation); |
| + currentIndentation += LEVEL; |
| + for (var key in obj.keys) { |
| + addString("$key: ", indentation: indentation, newLine: false); |
| + currentIndentation += LEVEL; |
| + prettifyJsonInternal(obj[key], indentation: false); |
| + currentIndentation -= LEVEL; |
| + } |
| + currentIndentation -= LEVEL; |
| + addString("}", indentation: indentation, newLine: newLine); |
| + } else { |
| + addString("$obj", indentation: indentation, newLine: newLine); |
| + } |
| + } |
| + prettifyJsonInternal(json); |
| + return buffer.toString(); |
| +} |
| + |
| /** |
| * [areByteArraysEqual] compares a range of bytes from [buffer1] with a |