MarkdownWriter
@Js
class MarkdownWriter : Obj
Writer for Markdown (CommonMark) text.
Wheter we're at the line start (not counting any prefixes), i.e
The last character that was written
Remove the last prefix from the top of the stack
Escape the characters matching the supplied matcher, in all text (text and raw)
Write a newline (line terminator)
Write the supplied string or character (raw/unescaped except if pushRawEscape was used)
Enqueue a block separator to be written before the next text is written
Remove the last "tight" setting from the top of the stack
Change whether blocks are tight or loose
Write the supplied string with escaping
Push a prefix onto the top of the stack
Write a prefix
Remove the last raw escape from the top of the stack
Bool : atLineStart
Wheter we're at the line start (not counting any prefixes), i.e. after a line or block.
Void block()
Enqueue a block separator to be written before the next text is written. Block separators are not written straight away because if there are no more blocks to write, we don't want a separator (at the end of the document)
Int : lastChar
The last character that was written
Void line()
Write a newline (line terminator).
new make(OutStream out)
Void popPrefix()
Remove the last prefix from the top of the stack
Void popRawEscape()
Remove the last raw escape from the top of the stack
Void popTight()
Remove the last "tight" setting from the top of the stack
Void pushPrefix(Str prefix)
Push a prefix onto the top of the stack. All prefixes are written at the beginning of each line, until the prefix is popped again.
Void pushRawEscape(|Int->Bool| rawEscape)
Escape the characters matching the supplied matcher, in all text (text and raw). This might be usefult to extensions that add another layer of syntax, e.g. the tables extension that uses | to separate cells and needs all | characters to be escaped (even in code spans)
Void pushTight(Bool tight)
Change whether blocks are tight or loose. Loose is the default where blocks are separated by a blank line. Tight is where blocks are not separated by a blank line. Tight blocks are used in lists, if there are no blank lines within the list.
Note that changing this does not affect block separators that have already been enqueued with block, only future ones.
Void raw(Obj obj)
Write the supplied string or character (raw/unescaped except if pushRawEscape was used).
Void text(Str s, |Int->Bool|? escape)
Write the supplied string with escaping
Void writePrefix(Str prefix)
Write a prefix