add method
Adds object
to this printer. object
can be a String,
NestedPrinter, or anything implementing NestedItem. If object
is a
String, the value is appended directly, without doing any formatting
changes. If you wish to add a line of code with automatic indentation, use
addLine instead. NestedPrinters and NestedItems are not processed
until build gets called later on. We ensure that build emits every
object in the order that they were added to this printer.
The location
and span
parameters indicate the corresponding source map
location of object
in the original input. Only one, location
or
span
, should be provided at a time.
Indicate isOriginal
when object
is copied directly from the user code.
Setting isOriginal
will make this printer propagate source map locations
on every line-break.
Implementation
void add(Object object,
{SourceLocation? location, SourceSpan? span, bool isOriginal = false}) {
if (object is! String || location != null || span != null || isOriginal) {
_flush();
assert(location == null || span == null);
if (location != null) _items.add(location);
if (span != null) _items.add(span);
if (isOriginal) _items.add(_original);
}
if (object is String) {
_appendString(object);
} else {
_items.add(object);
}
}