Files
org-parser/src/org/org_builder.nim
Florian Schroedl 8e220bcb81 Clean up structure
2022-02-16 10:19:37 +01:00

20 lines
724 B
Nim

import std/sugar
import std/collections/sequtils
import ./org_types
import ../parser/parser_types
type OrgBuilderT* = OrgElement
type OrgBuilder* = Builder[OrgBuilderT]
type OrgBuilderResult* = BuilderResult[OrgBuilderT]
func makeOrgBuilderToken*(kind: orgElementKind): string -> OrgBuilderT =
return func(content: string): OrgBuilderT =
return OrgBuilderT(
kind: orgRawText,
content: content,
)
proc mergeOrgToken*(orgTokenFn: 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()