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(
|
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
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user