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

Side by Side Diff: pkg/matcher/lib/src/description.dart

Issue 306283002: pkg/matcher: cleanup, updates, deprecations, fixes (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 6 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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.description; 5 library matcher.description;
6 6
7 import 'interfaces.dart'; 7 import 'interfaces.dart';
8 import 'pretty_print.dart'; 8 import 'pretty_print.dart';
9 import 'utils.dart';
10 9
11 /** 10 /// The default implementation of [Description]. This should rarely need
12 * The default implementation of IDescription. This should rarely need 11 /// substitution, although conceivably it is a place where other languages
13 * substitution, although conceivably it is a place where other languages 12 /// could be supported.
14 * could be supported.
15 */
16 class StringDescription implements Description { 13 class StringDescription implements Description {
17 var _out; 14 final StringBuffer _out = new StringBuffer();
18 15
19 /** Initialize the description with initial contents [init]. */ 16 /// Initialize the description with initial contents [init].
20 StringDescription([String init = '']) { 17 StringDescription([String init = '']) {
21 _out = init; 18 _out.write(init);
22 } 19 }
23 20
24 int get length => _out.length; 21 int get length => _out.length;
25 22
26 /** Get the description as a string. */ 23 /// Get the description as a string.
27 String toString() => _out; 24 String toString() => _out.toString();
28 25
29 /** Append [text] to the description. */ 26 /// Append [text] to the description.
30 Description add(text) { 27 Description add(String text) {
31 _out = '${_out}${text}'; 28 _out.write(text);
32 return this; 29 return this;
33 } 30 }
34 31
35 /** Change the value of the description. */ 32 /// Change the value of the description.
36 Description replace(String text) { 33 Description replace(String text) {
37 _out = text; 34 _out.clear();
38 return this; 35 return add(text);
39 } 36 }
40 37
41 /** 38 /// Appends a description of [value]. If it is an IMatcher use its
42 * Appends a description of [value]. If it is an IMatcher use its 39 /// describe method; if it is a string use its literal value after
43 * describe method; if it is a string use its literal value after 40 /// escaping any embedded control characters; otherwise use its
44 * escaping any embedded control characters; otherwise use its 41 /// toString() value and wrap it in angular "quotes".
45 * toString() value and wrap it in angular "quotes".
46 */
47 Description addDescriptionOf(value) { 42 Description addDescriptionOf(value) {
48 if (value is Matcher) { 43 if (value is Matcher) {
49 value.describe(this); 44 value.describe(this);
50 } else { 45 } else {
51 add(prettyPrint(value, maxLineLength: 80, maxItems: 25)); 46 add(prettyPrint(value, maxLineLength: 80, maxItems: 25));
52 } 47 }
53 return this; 48 return this;
54 } 49 }
55 50
56 /** 51 /// Append an [Iterable] [list] of objects to the description, using the
57 * Append an [Iterable] [list] of objects to the description, using the 52 /// specified [separator] and framing the list with [start]
58 * specified [separator] and framing the list with [start] 53 /// and [end].
59 * and [end].
60 */
61 Description addAll(String start, String separator, String end, 54 Description addAll(String start, String separator, String end,
62 Iterable list) { 55 Iterable list) {
63 var separate = false; 56 var separate = false;
64 add(start); 57 add(start);
65 for (var item in list) { 58 for (var item in list) {
66 if (separate) { 59 if (separate) {
67 add(separator); 60 add(separator);
68 } 61 }
69 addDescriptionOf(item); 62 addDescriptionOf(item);
70 separate = true; 63 separate = true;
71 } 64 }
72 add(end); 65 add(end);
73 return this; 66 return this;
74 } 67 }
75
76 /** Escape the control characters in [string] so that they are visible. */
77 _addEscapedString(String string) {
78 add("'");
79 add(escapeString(string));
80 add("'");
81 }
82 } 68 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698