OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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 part of dart.io; | 5 part of dart.io; |
6 | 6 |
7 /** | 7 /** |
8 * Helper class to wrap a [StreamConsumer<List<int>>] and provide | 8 * Helper class to wrap a [StreamConsumer<List<int>>] and provide |
9 * utility functions for writing to the StreamConsumer directly. The | 9 * utility functions for writing to the StreamConsumer directly. The |
10 * [IOSink] buffers the input given by all [StringSink] methods and will delay | 10 * [IOSink] buffers the input given by all [StringSink] methods and will delay |
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
266 Encoding get encoding => _encoding; | 266 Encoding get encoding => _encoding; |
267 | 267 |
268 void set encoding(Encoding value) { | 268 void set encoding(Encoding value) { |
269 if (!_encodingMutable) { | 269 if (!_encodingMutable) { |
270 throw new StateError("IOSink encoding is not mutable"); | 270 throw new StateError("IOSink encoding is not mutable"); |
271 } | 271 } |
272 _encoding = value; | 272 _encoding = value; |
273 } | 273 } |
274 | 274 |
275 void write(Object obj) { | 275 void write(Object obj) { |
276 // This comment is copied from runtime/lib/string_buffer_patch.dart. | 276 String string = '$obj'; |
277 // TODO(srdjan): The following four lines could be replaced by | |
278 // '$obj', but apparently this is too slow on the Dart VM. | |
279 String string; | |
280 if (obj is String) { | |
281 string = obj; | |
282 } else { | |
283 string = obj.toString(); | |
284 if (string is! String) { | |
285 throw new ArgumentError('toString() did not return a string'); | |
286 } | |
287 } | |
288 if (string.isEmpty) return; | 277 if (string.isEmpty) return; |
289 add(_encoding.encode(string)); | 278 add(_encoding.encode(string)); |
290 } | 279 } |
291 | 280 |
292 void writeAll(Iterable objects, [String separator = ""]) { | 281 void writeAll(Iterable objects, [String separator = ""]) { |
293 Iterator iterator = objects.iterator; | 282 Iterator iterator = objects.iterator; |
294 if (!iterator.moveNext()) return; | 283 if (!iterator.moveNext()) return; |
295 if (separator.isEmpty) { | 284 if (separator.isEmpty) { |
296 do { | 285 do { |
297 write(iterator.current); | 286 write(iterator.current); |
298 } while (iterator.moveNext()); | 287 } while (iterator.moveNext()); |
299 } else { | 288 } else { |
300 write(iterator.current); | 289 write(iterator.current); |
301 while (iterator.moveNext()) { | 290 while (iterator.moveNext()) { |
302 write(separator); | 291 write(separator); |
303 write(iterator.current); | 292 write(iterator.current); |
304 } | 293 } |
305 } | 294 } |
306 } | 295 } |
307 | 296 |
308 void writeln([Object obj = ""]) { | 297 void writeln([Object obj = ""]) { |
309 write(obj); | 298 write(obj); |
310 write("\n"); | 299 write("\n"); |
311 } | 300 } |
312 | 301 |
313 void writeCharCode(int charCode) { | 302 void writeCharCode(int charCode) { |
314 write(new String.fromCharCode(charCode)); | 303 write(new String.fromCharCode(charCode)); |
315 } | 304 } |
316 } | 305 } |
OLD | NEW |