Extract token flattening function
This commit is contained in:
@@ -14,6 +14,6 @@ func makeOrgBuilderToken*(kind: orgElementKind): string -> OrgBuilderT =
|
||||
content: content,
|
||||
)
|
||||
|
||||
proc mergeOrgToken*(orgTokenFn: string -> OrgBuilderT): (seq[ParserToken], seq[OrgBuilderT]) -> seq[OrgBuilderT] =
|
||||
proc mergeOrgTokens*(tokenizer: string -> OrgBuilderT): (seq[ParserToken], seq[OrgBuilderT]) -> seq[OrgBuilderT] =
|
||||
return proc(parserTokens: seq[ParserToken], builderTokens: seq[OrgBuilderT]): seq[OrgBuilderT] =
|
||||
return builderTokens & parserTokens.foldl(a & b.tokenStringValue(), "").orgTokenFn()
|
||||
return builderTokens & tokenizer(parserTokens.tokensToString())
|
||||
|
||||
@@ -41,12 +41,12 @@ when isMainModule:
|
||||
.flatMap((builder: OrgBuilder) => tryParseBuild(
|
||||
builder = builder,
|
||||
builderFns = @[
|
||||
(boldParser, mergeOrgToken(boldTokenizer)),
|
||||
(italicParser, mergeOrgToken(italicTokenizer)),
|
||||
(underlineParser, mergeOrgToken(underlineTokenizer)),
|
||||
(verbatimParser, mergeOrgToken(verbatimTokenizer)),
|
||||
(codeParser, mergeOrgToken(codeTokenizer)),
|
||||
(strikeThroughParser, mergeOrgToken(strikeThroughTokenizer)),
|
||||
(boldParser, mergeOrgTokens(boldTokenizer)),
|
||||
(italicParser, mergeOrgTokens(italicTokenizer)),
|
||||
(underlineParser, mergeOrgTokens(underlineTokenizer)),
|
||||
(verbatimParser, mergeOrgTokens(verbatimTokenizer)),
|
||||
(codeParser, mergeOrgTokens(codeTokenizer)),
|
||||
(strikeThroughParser, mergeOrgTokens(strikeThroughTokenizer)),
|
||||
],
|
||||
defaultBuilderFn = makeRawTokenOrEmpty,
|
||||
))
|
||||
|
||||
@@ -80,6 +80,9 @@ func tokenStringValue*(x: ParserToken): string =
|
||||
of parserTokenString:
|
||||
x.stringValue
|
||||
|
||||
func tokensToString*(tokens: seq[ParserToken]): string =
|
||||
tokens.foldl(a & b.tokenStringValue(), "")
|
||||
|
||||
# -- Modifiers
|
||||
|
||||
func flattenParserTokens*(parser: Parser): ParserResult =
|
||||
|
||||
Reference in New Issue
Block a user