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

Side by Side Diff: packages/matcher/lib/src/pretty_print.dart

Issue 2989763002: Update charted to 0.4.8 and roll (Closed)
Patch Set: Removed Cutch from list of reviewers Created 3 years, 4 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library matcher.pretty_print;
6
7 import 'description.dart'; 5 import 'description.dart';
8 import 'interfaces.dart'; 6 import 'interfaces.dart';
9 import 'util.dart'; 7 import 'util.dart';
10 8
11 /// Returns a pretty-printed representation of [object]. 9 /// Returns a pretty-printed representation of [object].
12 /// 10 ///
13 /// If [maxLineLength] is passed, this will attempt to ensure that each line is 11 /// If [maxLineLength] is passed, this will attempt to ensure that each line is
14 /// no longer than [maxLineLength] characters long. This isn't guaranteed, since 12 /// no longer than [maxLineLength] characters long. This isn't guaranteed, since
15 /// individual objects may have string representations that are too long, but 13 /// individual objects may have string representations that are too long, but
16 /// most lines will be less than [maxLineLength] long. 14 /// most lines will be less than [maxLineLength] long.
(...skipping 27 matching lines...) Expand all
44 // If the printed string is short and doesn't contain a newline, print it 42 // If the printed string is short and doesn't contain a newline, print it
45 // as a single line. 43 // as a single line.
46 var singleLine = "$type[${strings.join(', ')}]"; 44 var singleLine = "$type[${strings.join(', ')}]";
47 if ((maxLineLength == null || 45 if ((maxLineLength == null ||
48 singleLine.length + indent <= maxLineLength) && 46 singleLine.length + indent <= maxLineLength) &&
49 !singleLine.contains("\n")) { 47 !singleLine.contains("\n")) {
50 return singleLine; 48 return singleLine;
51 } 49 }
52 50
53 // Otherwise, print each member on its own line. 51 // Otherwise, print each member on its own line.
54 return "$type[\n" + strings.map((string) { 52 return "$type[\n" +
55 return _indent(indent + 2) + string; 53 strings.map((string) {
56 }).join(",\n") + "\n" + _indent(indent) + "]"; 54 return _indent(indent + 2) + string;
55 }).join(",\n") +
56 "\n" +
57 _indent(indent) +
58 "]";
57 } else if (object is Map) { 59 } else if (object is Map) {
58 // Convert the contents of the map to string representations. 60 // Convert the contents of the map to string representations.
59 var strings = object.keys.map((key) { 61 var strings = object.keys.map((key) {
60 return '${pp(key)}: ${pp(object[key])}'; 62 return '${pp(key)}: ${pp(object[key])}';
61 }).toList(); 63 }).toList();
62 64
63 // Truncate the list of strings if it's longer than [maxItems]. 65 // Truncate the list of strings if it's longer than [maxItems].
64 if (maxItems != null && strings.length > maxItems) { 66 if (maxItems != null && strings.length > maxItems) {
65 strings.replaceRange(maxItems - 1, strings.length, ['...']); 67 strings.replaceRange(maxItems - 1, strings.length, ['...']);
66 } 68 }
67 69
68 // If the printed string is short and doesn't contain a newline, print it 70 // If the printed string is short and doesn't contain a newline, print it
69 // as a single line. 71 // as a single line.
70 var singleLine = "{${strings.join(", ")}}"; 72 var singleLine = "{${strings.join(", ")}}";
71 if ((maxLineLength == null || 73 if ((maxLineLength == null ||
72 singleLine.length + indent <= maxLineLength) && 74 singleLine.length + indent <= maxLineLength) &&
73 !singleLine.contains("\n")) { 75 !singleLine.contains("\n")) {
74 return singleLine; 76 return singleLine;
75 } 77 }
76 78
77 // Otherwise, print each key/value pair on its own line. 79 // Otherwise, print each key/value pair on its own line.
78 return "{\n" + strings.map((string) { 80 return "{\n" +
79 return _indent(indent + 2) + string; 81 strings.map((string) {
80 }).join(",\n") + "\n" + _indent(indent) + "}"; 82 return _indent(indent + 2) + string;
83 }).join(",\n") +
84 "\n" +
85 _indent(indent) +
86 "}";
81 } else if (object is String) { 87 } else if (object is String) {
82 // Escape strings and print each line on its own line. 88 // Escape strings and print each line on its own line.
83 var lines = object.split("\n"); 89 var lines = object.split("\n");
84 return "'" + 90 return "'" +
85 lines.map(_escapeString).join("\\n'\n${_indent(indent + 2)}'") + 91 lines.map(_escapeString).join("\\n'\n${_indent(indent + 2)}'") +
86 "'"; 92 "'";
87 } else { 93 } else {
88 var value = object.toString().replaceAll("\n", _indent(indent) + "\n"); 94 var value = object.toString().replaceAll("\n", _indent(indent) + "\n");
89 var defaultToString = value.startsWith("Instance of "); 95 var defaultToString = value.startsWith("Instance of ");
90 96
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 return "?"; 133 return "?";
128 } 134 }
129 } 135 }
130 136
131 /// Returns [source] with any control characters replaced by their escape 137 /// Returns [source] with any control characters replaced by their escape
132 /// sequences. 138 /// sequences.
133 /// 139 ///
134 /// This doesn't add quotes to the string, but it does escape single quote 140 /// This doesn't add quotes to the string, but it does escape single quote
135 /// characters so that single quotes can be applied externally. 141 /// characters so that single quotes can be applied externally.
136 String _escapeString(String source) => escape(source).replaceAll("'", r"\'"); 142 String _escapeString(String source) => escape(source).replaceAll("'", r"\'");
OLDNEW
« no previous file with comments | « packages/matcher/lib/src/order_matchers.dart ('k') | packages/matcher/lib/src/string_matchers.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698