Generic base parsers which are not specifically tailored for parsing of text markup.
A generic base trait for block parsers.
A generic base trait for inline parsers.
A generic base trait for inline parsers. Provides base parsers that abstract aspects of inline parsing common to most lightweight markup languages.
It contains helper parsers that abstract the typical logic required for parsing nested spans. In many cases a parser has to recognize the end of the span as well as potentially the start of a nested spans. These two concerns are usually unrelated.
This trait offers helpers that simplify creating these types of parsers and also optimize performance of inline parsing. Due to the nature of lightweight text markup inline parsing would usually require trying a long list of choicing on each input character, which is slow. These base parsers work based on mappings from the first character of an inline span to the corresponding full parser.
Base parsers that provide optimized low-level renderers for typical requirements of text markup parsers.
Base parsers that provide optimized low-level renderers for typical requirements of text markup parsers. In particular they are meant as an efficient replacement for scenarios where usually regex parsers are used. In cases where different parsers need to be tried for relatively short input sequences, regex parsers tend to be less efficient. Furthermore, these base parsers may also improve readability, as it allows to combine simple low-level parsers to higher-level parsers based on the Scala SDK combinator API, instead of producing long regexes which may be hard to read.
A generic base trait for block parsers. Provides base parsers that abstract aspects of block parsing common to most lightweight markup languages.
It contains simple parsers for parsing chunks that make up blocks (text lines, blank lines, etc.) as well as a convenient
block
helper parser that simplifies parsing of full blocks.Concrete sub-traits can specify the block parsers for a specific markup format by overriding
prepareBlockParsers
and implementingnonRecursiveBlock
.A block parser in Laika can always safely assume that it is invoked at the start of the current line and that the line is not empty.