Use parser result in builder error, as it might not always be a parser error
This commit is contained in:
@@ -79,7 +79,7 @@ let buildListItem = proc(builder: OrgBuilder): OrgBuilderResult {.closure.} =
|
||||
)))
|
||||
else: OrgBuilderResult.err(OrgBuilderError(
|
||||
kind: parserError,
|
||||
parser: listContent.error,
|
||||
parser: listContent,
|
||||
tree: tree,
|
||||
))
|
||||
|
||||
@@ -106,7 +106,11 @@ proc buildParagraph*(
|
||||
|
||||
if not found:
|
||||
builderAcc = OrgBuilderResult.err(OrgBuilderError(
|
||||
kind: parserError,
|
||||
kind: builderError,
|
||||
parser: builderAcc.fold(
|
||||
(err: OrgBuilderError) => err.parser,
|
||||
(builder: OrgBuilder) => ParserResult.ok(builder.parser),
|
||||
),
|
||||
tree: builder.tree,
|
||||
))
|
||||
break
|
||||
|
||||
@@ -14,9 +14,10 @@ type
|
||||
]
|
||||
builderErrorKind* = enum
|
||||
parserError
|
||||
builderError
|
||||
BuilderError*[T] = ref object
|
||||
kind*: builderErrorKind
|
||||
parser*: ParserError
|
||||
parser*: ParserResult
|
||||
tree*: seq[T]
|
||||
BuilderResult*[T] = Result[Builder[T], BuilderError[T]]
|
||||
|
||||
@@ -59,12 +60,11 @@ proc tryParser*[T](
|
||||
.foldTokens(
|
||||
(err: ParserError) => BuilderResult[T].err(BuilderError[T](
|
||||
kind: parserError,
|
||||
parser: err,
|
||||
parser: parser,
|
||||
tree: builder.tree,
|
||||
)),
|
||||
(newTokens: seq[ParserToken]) => BuilderResult[T].ok(builder),
|
||||
)
|
||||
|
||||
proc tryParserResult*[T](
|
||||
builder: BuilderResult[T],
|
||||
parser: Parser -> ParserResult,
|
||||
|
||||
Reference in New Issue
Block a user