| Index: lib/core/string_buffer.dart
|
| diff --git a/lib/core/string_buffer.dart b/lib/core/string_buffer.dart
|
| index 8095f6a0c367a3b05ade9b494bd9ca36ec1fba57..d56b3a3c7ffd2622595d95046da4979fa03cc144 100644
|
| --- a/lib/core/string_buffer.dart
|
| +++ b/lib/core/string_buffer.dart
|
| @@ -11,7 +11,8 @@ abstract class StringBuffer {
|
| /**
|
| * Creates the string buffer with an initial content.
|
| */
|
| - factory StringBuffer([Object content = ""]) => new StringBufferImpl(content);
|
| + factory StringBuffer([Object content = ""])
|
| + => new _StringBufferImpl(content);
|
|
|
| /**
|
| * Returns the length of the buffer.
|
| @@ -49,3 +50,81 @@ abstract class StringBuffer {
|
| */
|
| String toString();
|
| }
|
| +
|
| +class _StringBufferImpl implements StringBuffer {
|
| + /**
|
| + * Creates the string buffer with an initial content.
|
| + */
|
| + _StringBufferImpl(Object content) {
|
| + clear();
|
| + add(content);
|
| + }
|
| +
|
| + /**
|
| + * Returns the length of the buffer.
|
| + */
|
| + int get length {
|
| + return _length;
|
| + }
|
| +
|
| + bool isEmpty() {
|
| + return _length === 0;
|
| + }
|
| +
|
| + /**
|
| + * Adds [obj] to the buffer. Returns [this].
|
| + */
|
| + StringBuffer add(Object obj) {
|
| + String str = obj.toString();
|
| + if (str === null || str.isEmpty()) {
|
| + return this;
|
| + }
|
| + _buffer.add(str);
|
| + _length += str.length;
|
| + return this;
|
| + }
|
| +
|
| + /**
|
| + * Adds all items in [objects] to the buffer. Returns [this].
|
| + */
|
| + StringBuffer addAll(Collection objects) {
|
| + for (Object obj in objects) {
|
| + add(obj);
|
| + }
|
| + return this;
|
| + }
|
| +
|
| + /**
|
| + * Adds the string representation of [charCode] to the buffer.
|
| + * Returns [this].
|
| + */
|
| + StringBuffer addCharCode(int charCode) {
|
| + return add(new String.fromCharCodes([charCode]));
|
| + }
|
| +
|
| + /**
|
| + * Clears the string buffer. Returns [this].
|
| + */
|
| + StringBuffer clear() {
|
| + _buffer = new List<String>();
|
| + _length = 0;
|
| + return this;
|
| + }
|
| +
|
| + /**
|
| + * Returns the contents of buffer as a concatenated string.
|
| + */
|
| + String toString() {
|
| + if (_buffer.length === 0) return "";
|
| + if (_buffer.length === 1) return _buffer[0];
|
| + String result = StringImplementation.concatAll(_buffer);
|
| + _buffer.clear();
|
| + _buffer.add(result);
|
| + // Since we track the length at each add operation, there is no
|
| + // need to update it in this function.
|
| + return result;
|
| + }
|
| +
|
| + List<String> _buffer;
|
| + int _length;
|
| +}
|
|
|