blob: fffeb2b473c4892cddd456c20949bfaf31f43334 [file] [log] [blame]
part of mustache;
class PrefixingStringSink implements StringSink {
bool _started = false;
final StringSink _sink;
final String _prefix;
PrefixingStringSink(this._sink, this._prefix);
void write(Object obj) {
if (!_started) {
_started = true;
_sink.write(_prefix);
}
var s = obj.toString();
_sink.write(s.replaceAll('\n', '\n$_prefix'));
}
void writeCharCode(int charCode) {
if (!_started) {
_started = true;
_sink.write(_prefix);
}
_sink.writeCharCode(charCode);
if (charCode == _NEWLINE) _sink.write(_prefix);
}
void writeAll(Iterable objects, [String separator = ""]) {
Iterator iterator = objects.iterator;
if (!iterator.moveNext()) return;
if (separator.isEmpty) {
do {
write(iterator.current);
} while (iterator.moveNext());
} else {
write(iterator.current);
while (iterator.moveNext()) {
write(separator);
write(iterator.current);
}
}
}
void writeln([Object obj = ""]) {
write(obj);
_sink.write('\n');
_sink.write(_prefix);
}
}