Base class for text formatters-types that output text_fragments.
class plain formatter
extends text formatter
private var nonnegative chars written
private list[underline style] underline stack
private string writer carets
private static character SPACE : ' '
private static string DEFAULT INDENT : " "
overload plain formatter(output[character] the output, string spaces)
super(the output, spaces)
carets = string writer • new()
public overload plain formatter(output[character] the output)
this(the output, DEFAULT INDENT)
override void process element(text element element)
if text utilitiesis block(element)
if !first || elementget id == text libraryBR if text utilitiesis indent(element)
indent += 1
style : underline styleall stylesget(elementget id)
if style is_not null
underline stackappend(style)
children : elementchildren
if children is_not null
process(children)
if text utilitiesis block(element)
if !first if text utilitiesis indent(element)
assert new indent is nonnegative
indent = new indent
if style is_not null
override void do write newline()
super • do write newline()
if caretssize() > 0
the outputwrite all(caretselements())
caretsclear()
override void do write string(readonly list[character] the string)
super • do write string(the string)
if underline stackis not empty
while caretssize() < chars written
assert last underline index is nonnegative
for var nonnegative i : 0; i < the stringsize; i += 1
caretswrite(underline character)
chars written += the stringsize