Restore delimiter parsers

This commit is contained in:
Florian Schroedl
2022-08-27 15:53:41 +02:00
parent 67e5a44d49
commit 19d2cae392
4 changed files with 354 additions and 0 deletions

View File

@@ -0,0 +1,61 @@
import std/[
collections/sequtils,
sugar,
]
import fp/[
resultM,
]
import ./org_types
import ../parser/parser
# -- OrgInlineBlock.Builder.Type
type OrgInlineBuilderT* = OrgInlineBlock
type OrgInlineBuilder* = Builder[OrgInlineBuilderT]
type OrgInlineBuilderResult* = BuilderResult[OrgInlineBuilderT]
# -- OrgInlineBlock.Builder.Initializers
func initOrgInlineBuilder*(content: string): OrgInlineBuilderResult =
return OrgInlineBuilderResult.ok(OrgInlineBuilder((
parser: initParser(content),
tree: newSeq[OrgInlineBuilderT](),
)))
func convertTokens*(kind: orgInlineBlockKind): seq[ParserToken] -> seq[OrgInlineBuilderT] =
return func(tokens: seq[ParserToken]): seq[OrgInlineBuilderT] =
return @[
OrgInlineBuilderT(
kind: kind,
content: tokens.tokensToString(),
)
]
# func rawTextTokenizer*(kind: orgInlineBlockKind): string -> OrgInlineBuilderT =
# return func(content: string): OrgInlineBuilderT =
# return OrgInlineBuilderT(
# kind: kind,
# content: content,
# )
# ## Blocks
# type OrgBuilderT* = OrgBlock
# type OrgBuilder* = Builder[OrgBuilderT]
# type OrgBuilderResult* = BuilderResult[OrgBuilderT]
# func initOrgBuilder*(content: string): OrgBuilderResult =
# return OrgBuilderResult.ok(OrgBuilder((
# parser: initParser(content),
# tree: newSeq[OrgBuilderT](),
# )))
# # proc orgBuilderConcat*(typeInfo: OrgBuilderT, concatFn: (ParserToken, OrgBuilderT) -> OrgBuilderT):
# # (seq[ParserToken], OrgBuilderT) -> OrgBuilderT =
# # return proc(xs: seq[ParserToken], builder: OrgBuilderT): OrgBuilderT =
# # return xs.foldl(concatFn(b, a), typeInfo)
# proc orgBuilderApply*(concatFn: (ParserToken, OrgBuilderT) -> OrgBuilderT):
# (seq[ParserToken], OrgBuilderT) -> OrgBuilderT =
# return proc(tokens: seq[ParserToken], builder: OrgBuilderT): OrgBuilderT =
# tokens.foldl(concatFn(b, a), builder)