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