Clean up structure

This commit is contained in:
Florian Schroedl
2022-01-20 17:00:00 +01:00
parent a4f842e946
commit 8e220bcb81
2 changed files with 34 additions and 141 deletions

View File

@@ -1,17 +1,19 @@
import std/sugar
import std/collections/sequtils
import ./org_types
import ../parser/parser_types
type OrgBuilderT* = seq[OrgElement]
type StringBuilder* = Builder[OrgBuilderT]
type OrgBuilderT* = OrgElement
type OrgBuilder* = Builder[OrgBuilderT]
type OrgBuilderResult* = BuilderResult[OrgBuilderT]
proc concat*(typeInfo: OrgBuilderT): (seq[ParserToken], seq[OrgBuilderT]) -> seq[OrgBuilderT] =
return proc(xs: seq[ParserToken], ys: seq[OrgBuilderT]): seq[OrgBuilderT] =
return ys & xs.foldl(a & b.tokenStringValue() & seperator, typeInfo)
func makeOrgBuilderToken*(kind: orgElementKind): string -> OrgBuilderT =
return func(content: string): OrgBuilderT =
return OrgBuilderT(
kind: orgRawText,
content: content,
)
proc initStringBuilder*(str: string): StringBuilderResult =
StringBuilderResult
.ok(StringBuilder((
parser: initParser(str),
tree: newSeq[OrgBuilderT](),
)))
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()