Use parser result in builder error, as it might not always be a parser error

This commit is contained in:
Florian Schroedl
2022-10-17 15:22:15 +02:00
parent 2727cf1821
commit fe2b7d065d
2 changed files with 9 additions and 5 deletions

View File

@@ -79,7 +79,7 @@ let buildListItem = proc(builder: OrgBuilder): OrgBuilderResult {.closure.} =
))) )))
else: OrgBuilderResult.err(OrgBuilderError( else: OrgBuilderResult.err(OrgBuilderError(
kind: parserError, kind: parserError,
parser: listContent.error, parser: listContent,
tree: tree, tree: tree,
)) ))
@@ -106,7 +106,11 @@ proc buildParagraph*(
if not found: if not found:
builderAcc = OrgBuilderResult.err(OrgBuilderError( builderAcc = OrgBuilderResult.err(OrgBuilderError(
kind: parserError, kind: builderError,
parser: builderAcc.fold(
(err: OrgBuilderError) => err.parser,
(builder: OrgBuilder) => ParserResult.ok(builder.parser),
),
tree: builder.tree, tree: builder.tree,
)) ))
break break

View File

@@ -14,9 +14,10 @@ type
] ]
builderErrorKind* = enum builderErrorKind* = enum
parserError parserError
builderError
BuilderError*[T] = ref object BuilderError*[T] = ref object
kind*: builderErrorKind kind*: builderErrorKind
parser*: ParserError parser*: ParserResult
tree*: seq[T] tree*: seq[T]
BuilderResult*[T] = Result[Builder[T], BuilderError[T]] BuilderResult*[T] = Result[Builder[T], BuilderError[T]]
@@ -59,12 +60,11 @@ proc tryParser*[T](
.foldTokens( .foldTokens(
(err: ParserError) => BuilderResult[T].err(BuilderError[T]( (err: ParserError) => BuilderResult[T].err(BuilderError[T](
kind: parserError, kind: parserError,
parser: err, parser: parser,
tree: builder.tree, tree: builder.tree,
)), )),
(newTokens: seq[ParserToken]) => BuilderResult[T].ok(builder), (newTokens: seq[ParserToken]) => BuilderResult[T].ok(builder),
) )
proc tryParserResult*[T]( proc tryParserResult*[T](
builder: BuilderResult[T], builder: BuilderResult[T],
parser: Parser -> ParserResult, parser: Parser -> ParserResult,