Extact builders

This commit is contained in:
Florian Schroedl
2022-01-20 17:00:00 +01:00
parent b5a678557b
commit 4abd1604c1

View File

@@ -26,6 +26,15 @@ let verbatimTokenizer* = makeOrgBuilderToken(orgVerbatimText)
let codeTokenizer* = makeOrgBuilderToken(orgCodeText)
let strikeThroughTokenizer* = makeOrgBuilderToken(orgStrikeThroughText)
let orgStyledTextBuilders = @[
(boldParser, mergeOrgTokens(boldTokenizer)),
(italicParser, mergeOrgTokens(italicTokenizer)),
(underlineParser, mergeOrgTokens(underlineTokenizer)),
(verbatimParser, mergeOrgTokens(verbatimTokenizer)),
(codeParser, mergeOrgTokens(codeTokenizer)),
(strikeThroughParser, mergeOrgTokens(strikeThroughTokenizer)),
]
proc makeRawTokenOrEmpty(tokens: seq[ParserToken]): seq[OrgBuilderT] =
## Merge all parser `tokens` into a string to tokenize for the builder.
## Unless the string is empty, in this case return an empty list.
@@ -40,14 +49,7 @@ when isMainModule:
)))
.flatMap((builder: OrgBuilder) => tryParseBuild(
builder = builder,
builderFns = @[
(boldParser, mergeOrgTokens(boldTokenizer)),
(italicParser, mergeOrgTokens(italicTokenizer)),
(underlineParser, mergeOrgTokens(underlineTokenizer)),
(verbatimParser, mergeOrgTokens(verbatimTokenizer)),
(codeParser, mergeOrgTokens(codeTokenizer)),
(strikeThroughParser, mergeOrgTokens(strikeThroughTokenizer)),
],
builderFns = orgStyledTextBuilders,
defaultBuilderFn = makeRawTokenOrEmpty,
))