| // Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| /// A [StringSink] that writes into two other [StringSink]s. |
| class TeeStringSink implements StringSink { |
| final StringSink sink1; |
| final StringSink sink2; |
| |
| TeeStringSink(this.sink1, this.sink2); |
| |
| @override |
| void write(Object? obj) { |
| sink1.write(obj); |
| sink2.write(obj); |
| } |
| |
| @override |
| void writeAll(Iterable<dynamic> objects, [String separator = '']) { |
| sink1.writeAll(objects, separator); |
| sink2.writeAll(objects, separator); |
| } |
| |
| @override |
| void writeCharCode(int charCode) { |
| sink1.writeCharCode(charCode); |
| sink2.writeCharCode(charCode); |
| } |
| |
| @override |
| void writeln([Object? obj = '']) { |
| sink1.writeln(obj); |
| sink2.writeln(obj); |
| } |
| } |