Remove concatination from the builder, it's now the duty of the internal method
This commit is contained in:
@@ -11,9 +11,9 @@ proc tryParseBuild*[T](
|
||||
builder: Builder[T],
|
||||
builderFns: seq[tuple[
|
||||
parserFn: Parser -> ParserResult,
|
||||
concatFn: (seq[ParserToken], seq[T]) -> seq[T],
|
||||
builderFn: seq[ParserToken] -> seq[T],
|
||||
]],
|
||||
defaultBuilderFn: (seq[ParserToken]) -> seq[T],
|
||||
defaultBuilderFn: seq[ParserToken] -> seq[T],
|
||||
stopAtParserFn = newline,
|
||||
): BuilderResult[T] =
|
||||
## Parse remaining text in `builder` by going checking in the `builderFns` list for a sucessful `parserFn`.
|
||||
@@ -32,8 +32,8 @@ proc tryParseBuild*[T](
|
||||
|
||||
# Find the first matching parser and convert its tokens
|
||||
var found = false
|
||||
for builderFn in builderFns:
|
||||
let (parserFn, concatFn) = builderFn
|
||||
for fn in builderFns:
|
||||
let (parserFn, builderFn) = fn
|
||||
|
||||
let parseResult = emptyParser.flatMap(parserFn)
|
||||
if parseResult.isOk():
|
||||
@@ -50,10 +50,11 @@ proc tryParseBuild*[T](
|
||||
parserAcc = parseResult.map(emptyTokens)
|
||||
builderAcc = builder.initBuilder(
|
||||
okParser,
|
||||
concatFn(
|
||||
okParser.tokens,
|
||||
builderAcc[1] & defaultBuilderTokens,
|
||||
),
|
||||
concat(
|
||||
builderAcc[1],
|
||||
defaultBuilderTokens,
|
||||
builderFn(okParser.tokens),
|
||||
)
|
||||
)
|
||||
break
|
||||
|
||||
@@ -68,5 +69,8 @@ proc tryParseBuild*[T](
|
||||
|
||||
BuilderResult[T].ok(builder.initBuilder(
|
||||
builderAcc[0],
|
||||
builderAcc[1] & defaultBuilderTokens,
|
||||
concat(
|
||||
builderAcc[1],
|
||||
defaultBuilderTokens,
|
||||
),
|
||||
))
|
||||
|
||||
Reference in New Issue
Block a user