diff --git a/src_v2/org/org_builder_paragraph.nim b/src_v2/org/org_builder_paragraph.nim index fe3488f..7690b80 100644 --- a/src_v2/org/org_builder_paragraph.nim +++ b/src_v2/org/org_builder_paragraph.nim @@ -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 diff --git a/src_v2/parser/builder_types.nim b/src_v2/parser/builder_types.nim index 19a5b6c..31ac914 100644 --- a/src_v2/parser/builder_types.nim +++ b/src_v2/parser/builder_types.nim @@ -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,