Allow passing of concatFn

This commit is contained in:
Florian Schroedl
2022-05-04 17:00:00 +02:00
parent af7ff33ca3
commit f41534ab1a

View File

@@ -15,6 +15,7 @@ proc tryParseBuild*[T](
]], ]],
defaultBuilderFn: seq[ParserToken] -> seq[T], defaultBuilderFn: seq[ParserToken] -> seq[T],
stopAtParserFn = newline, stopAtParserFn = newline,
concatFn = concat[T],
): BuilderResult[T] = ): BuilderResult[T] =
## Parse remaining text in `builder` by going checking in the `builderFns` list for a sucessful `parserFn`. ## Parse remaining text in `builder` by going checking in the `builderFns` list for a sucessful `parserFn`.
## The `ok` `parserFn` result will be merged into the `Builder[T].tree` by using the `concatFn`. ## The `ok` `parserFn` result will be merged into the `Builder[T].tree` by using the `concatFn`.
@@ -50,7 +51,7 @@ proc tryParseBuild*[T](
parserAcc = parseResult.map(emptyTokens) parserAcc = parseResult.map(emptyTokens)
builderAcc = builder.initBuilder( builderAcc = builder.initBuilder(
okParser, okParser,
concat( concatFn(
builderAcc.tree, builderAcc.tree,
defaultBuilderTokens, defaultBuilderTokens,
builderFn(okParser.tokens), builderFn(okParser.tokens),
@@ -69,7 +70,7 @@ proc tryParseBuild*[T](
BuilderResult[T].ok(builder.initBuilder( BuilderResult[T].ok(builder.initBuilder(
builderAcc.parser, builderAcc.parser,
concat( concatFn(
builderAcc.tree, builderAcc.tree,
defaultBuilderTokens, defaultBuilderTokens,
), ),