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()