Index: pkg/matcher/lib/src/description.dart |
diff --git a/pkg/matcher/lib/src/description.dart b/pkg/matcher/lib/src/description.dart |
index f03934d0bfd494c890291742f3495b34c05f0ba9..f8ebf09d7d0b072ab9e0c4ea761d4689249f70ac 100644 |
--- a/pkg/matcher/lib/src/description.dart |
+++ b/pkg/matcher/lib/src/description.dart |
@@ -6,39 +6,44 @@ library matcher.description; |
import 'interfaces.dart'; |
import 'pretty_print.dart'; |
+import 'utils.dart'; |
-/// The default implementation of [Description]. This should rarely need |
-/// substitution, although conceivably it is a place where other languages |
-/// could be supported. |
+/** |
+ * The default implementation of IDescription. 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(); |
+ var _out; |
- /// Initialize the description with initial contents [init]. |
+ /** Initialize the description with initial contents [init]. */ |
StringDescription([String init = '']) { |
- _out.write(init); |
+ _out = init; |
} |
int get length => _out.length; |
- /// Get the description as a string. |
- String toString() => _out.toString(); |
+ /** Get the description as a string. */ |
+ String toString() => _out; |
- /// Append [text] to the description. |
- Description add(String text) { |
- _out.write(text); |
+ /** Append [text] to the description. */ |
+ Description add(text) { |
+ _out = '${_out}${text}'; |
return this; |
} |
- /// Change the value of the description. |
+ /** Change the value of the description. */ |
Description replace(String text) { |
- _out.clear(); |
- return add(text); |
+ _out = text; |
+ return this; |
} |
- /// 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". |
+ /** |
+ * 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); |
@@ -48,9 +53,11 @@ class StringDescription implements Description { |
return this; |
} |
- /// Append an [Iterable] [list] of objects to the description, using the |
- /// specified [separator] and framing the list with [start] |
- /// and [end]. |
+ /** |
+ * 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; |
@@ -65,4 +72,11 @@ class StringDescription implements Description { |
add(end); |
return this; |
} |
+ |
+ /** Escape the control characters in [string] so that they are visible. */ |
+ _addEscapedString(String string) { |
+ add("'"); |
+ add(escapeString(string)); |
+ add("'"); |
+ } |
} |