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 utilities • is block(element)
if !first || element • get id == text library • BR if text utilities • is indent(element)
indent += 1
style : underline style • all styles • get(element • get id)
if style is_not null
underline stack • append(style)
children : element • children
if children is_not null
process(children)
if text utilities • is block(element)
if !first if text utilities • is 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 carets • size() > 0
the output • write all(carets • elements())
carets • clear()
override void do write string(readonly list[character] the string)
super • do write string(the string)
if underline stack • is not empty
while carets • size() < chars written
assert last underline index is nonnegative
for var nonnegative i : 0; i < the string • size; i += 1
carets • write(underline character)
chars written += the string • size