Index: tests/lib/mirrors/repo_19173/description.dart |
diff --git a/tests/lib/mirrors/repo_19173/description.dart b/tests/lib/mirrors/repo_19173/description.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..f03934d0bfd494c890291742f3495b34c05f0ba9 |
--- /dev/null |
+++ b/tests/lib/mirrors/repo_19173/description.dart |
@@ -0,0 +1,68 @@ |
+// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
+// for details. All rights reserved. Use of this source code is governed by a |
+// BSD-style license that can be found in the LICENSE file. |
+ |
+library matcher.description; |
+ |
+import 'interfaces.dart'; |
+import 'pretty_print.dart'; |
+ |
+/// The default implementation of [Description]. This should rarely need |
+/// substitution, although conceivably it is a place where other languages |
+/// could be supported. |
+class StringDescription implements Description { |
+ final StringBuffer _out = new StringBuffer(); |
+ |
+ /// Initialize the description with initial contents [init]. |
+ StringDescription([String init = '']) { |
+ _out.write(init); |
+ } |
+ |
+ int get length => _out.length; |
+ |
+ /// Get the description as a string. |
+ String toString() => _out.toString(); |
+ |
+ /// Append [text] to the description. |
+ Description add(String text) { |
+ _out.write(text); |
+ return this; |
+ } |
+ |
+ /// Change the value of the description. |
+ Description replace(String text) { |
+ _out.clear(); |
+ return add(text); |
+ } |
+ |
+ /// Appends a description of [value]. If it is an IMatcher use its |
+ /// describe method; if it is a string use its literal value after |
+ /// escaping any embedded control characters; otherwise use its |
+ /// toString() value and wrap it in angular "quotes". |
+ Description addDescriptionOf(value) { |
+ if (value is Matcher) { |
+ value.describe(this); |
+ } else { |
+ add(prettyPrint(value, maxLineLength: 80, maxItems: 25)); |
+ } |
+ return this; |
+ } |
+ |
+ /// Append an [Iterable] [list] of objects to the description, using the |
+ /// specified [separator] and framing the list with [start] |
+ /// and [end]. |
+ Description addAll(String start, String separator, String end, |
+ Iterable list) { |
+ var separate = false; |
+ add(start); |
+ for (var item in list) { |
+ if (separate) { |
+ add(separator); |
+ } |
+ addDescriptionOf(item); |
+ separate = true; |
+ } |
+ add(end); |
+ return this; |
+ } |
+} |