Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 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 | |
| 3 // BSD-style license that can be found in the LICENSE file. | |
| 4 | |
| 5 /** | |
| 6 * The default implementation of IDescription. This should rarely need | |
| 7 * substitution, although conceivably it is a place where other languages | |
| 8 * could be supported. | |
| 9 */ | |
| 10 | |
|
Bob Nystrom
2012/05/30 23:23:51
Remove blank line.
gram
2012/06/01 17:33:15
Done.
| |
| 11 class StringDescription implements IDescription { | |
| 12 var _out = ''; | |
| 13 | |
| 14 /** | |
| 15 * Get the description as a string. | |
| 16 */ | |
| 17 String toString() => _out; | |
| 18 | |
| 19 /** | |
| 20 * Append some plain [text] to the description. | |
| 21 */ | |
| 22 | |
|
Bob Nystrom
2012/05/30 23:23:51
Remove blank line, here and elsewhere.
gram
2012/06/01 17:33:15
Done.
| |
| 23 IDescription append(text) { | |
|
Bob Nystrom
2012/05/30 23:23:51
"add" to be consistent with List and StringBuffer.
gram
2012/06/01 17:33:15
Done.
| |
| 24 _out = '${_out}${text}'; | |
| 25 return this; | |
| 26 } | |
| 27 | |
| 28 /** | |
| 29 * Append a description of given [value]. If it is a string just | |
|
Bob Nystrom
2012/05/30 23:23:51
"Append" -> "appends". Remove "given".
gram
2012/06/01 17:33:15
Done.
| |
| 30 * append it with some control characters escaped. Else try | |
|
Bob Nystrom
2012/05/30 23:23:51
This sentence needs some grammar work.
| |
| 31 * call describe on the value itself, which will work for | |
| 32 * IMatchers. If that fails, just quote its toString() value. | |
| 33 */ | |
| 34 | |
| 35 IDescription appendDescriptionOf(value) { | |
| 36 try { | |
| 37 value.describe(this); | |
|
Bob Nystrom
2012/05/30 23:23:51
Instead of just trying to call describe(), why not
gram
2012/06/01 17:33:15
Done.
| |
| 38 } catch(var e) { | |
| 39 if (value is String) { | |
| 40 _appendEscapedString(value); | |
| 41 } else { | |
| 42 String description = value.toString(); | |
| 43 if (description.startsWith('<') && description.endsWith('>')) { | |
| 44 append(description); | |
| 45 } else { | |
| 46 append('<'); | |
| 47 append(description); | |
| 48 append('>'); | |
| 49 } | |
| 50 } | |
| 51 } | |
| 52 return this; | |
| 53 } | |
| 54 | |
| 55 /** | |
| 56 * Append a [list] of objects to the description, using the | |
| 57 * specified [separator] and framing the list with [start] | |
| 58 * and [end]. | |
| 59 */ | |
| 60 | |
| 61 IDescription appendList(start, separator, end, list) { | |
| 62 var separate = false; | |
| 63 append(start); | |
| 64 for (var item in list) { | |
| 65 if (separate) { | |
| 66 append(separator); | |
| 67 } | |
| 68 appendDescriptionOf(item); | |
| 69 separate = true; | |
| 70 } | |
| 71 append(end); | |
| 72 return this; | |
| 73 } | |
| 74 | |
| 75 /** | |
| 76 * Escape the control characters in [string] so that they are visible. | |
| 77 */ | |
| 78 _appendEscapedString(String string) { | |
| 79 append("'"); | |
| 80 for (var i = 0; i < string.length; i++) { | |
| 81 append(_escape(string[i])); | |
| 82 } | |
| 83 append("'"); | |
| 84 } | |
| 85 | |
| 86 /** | |
| 87 * Return the escaped form of a character [ch]. | |
| 88 */ | |
| 89 _escape(ch) { | |
| 90 if (ch == "'") | |
| 91 return "\'"; | |
| 92 else if (ch == '\n') | |
| 93 return '\\n'; | |
| 94 else if (ch == '\r') | |
| 95 return '\\r'; | |
| 96 else if (ch == '\t') | |
| 97 return '\\t'; | |
| 98 else | |
| 99 return ch; | |
| 100 } | |
| 101 } | |
| 102 | |
| 103 | |
| 104 | |
| 105 | |
| OLD | NEW |