From b5a678557bf0b2a141f933894cab31b9ff3679f1 Mon Sep 17 00:00:00 2001 From: Florian Schroedl Date: Thu, 20 Jan 2022 17:00:00 +0100 Subject: [PATCH] Extract token flattening function --- src/org/org_builder.nim | 4 ++-- src/org/org_text_delimiter.nim | 12 ++++++------ src/parser/parser_types.nim | 3 +++ 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/org/org_builder.nim b/src/org/org_builder.nim index 5e9c9d2..86e1655 100644 --- a/src/org/org_builder.nim +++ b/src/org/org_builder.nim @@ -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()) diff --git a/src/org/org_text_delimiter.nim b/src/org/org_text_delimiter.nim index 3922425..f07072e 100644 --- a/src/org/org_text_delimiter.nim +++ b/src/org/org_text_delimiter.nim @@ -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, )) diff --git a/src/parser/parser_types.nim b/src/parser/parser_types.nim index 8ae8810..d63d2e7 100644 --- a/src/parser/parser_types.nim +++ b/src/parser/parser_types.nim @@ -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 =