Fix types for builder seq

This commit is contained in:
Florian Schroedl
2022-01-20 17:00:00 +01:00
parent 86a3c009b8
commit e99c7352b6

View File

@@ -36,7 +36,7 @@ let linkParser* = proc(parser: Parser): ParserResult {.closure.} =
else: else:
linkValue linkValue
func linkStringifier*(linkUrl: string, linkDescription: Maybe[string]): string = proc linkStringifier*(linkUrl: string, linkDescription: Maybe[string]): string =
case (linkUrl, linkDescription): case (linkUrl, linkDescription):
of (@linkUrl, Some(@linkDescription)): of (@linkUrl, Some(@linkDescription)):
return &"[[{linkUrl}][{linkDescription}]]" return &"[[{linkUrl}][{linkDescription}]]"
@@ -46,19 +46,21 @@ func linkStringifier*(linkUrl: string, linkDescription: Maybe[string]): string =
func linkTokenizer*(parserTokens: seq[ParserToken]): OrgBuilderT = func linkTokenizer*(parserTokens: seq[ParserToken]): OrgBuilderT =
[@linkUrl, @linkDescription] := parserTokens.map(tokenStringValue) [@linkUrl, @linkDescription] := parserTokens.map(tokenStringValue)
let maybeLinkDescription = linkDescription.just().notEmpty() let maybeLinkDescription = linkDescription.just().notEmpty()
OrgBuilderT( return OrgBuilderT(
kind: orgLink, kind: orgLink,
content: linkStringifier(linkUrl, maybeLinkDescription), content: linkStringifier(linkUrl, maybeLinkDescription),
linkUrl: linkUrl, linkUrl: linkUrl,
linkDescription: maybeLinkDescription, linkDescription: maybeLinkDescription,
) )
let linkTokenizerSeq* = proc(parserTokens: seq[ParserToken]): seq[OrgBuilderT] {.closure.} =
return @[linkTokenizer(parserTokens)]
when isMainModule: when isMainModule:
# echo initParser("[[https://florianschroedl.com]]").linkParser() # echo initParser("[[https://florianschroedl.com]]").linkParser()
echo initParser("[[https://florianschroedl.com][My blog]]") echo initParser("[[https://florianschroedl.com][My blog]]")
.linkParser() .linkParser()
.foldTokens( .foldTokens(
onError = (x) => nothing(OrgBuilderT), onError = (x) => newSeq[OrgBuilderT](),
onSuccess = xs => just(linkTokenizer(xs)), onSuccess = proc(xs: seq[ParserToken]): seq[OrgBuilderT] = linkTokenizerSeq(xs),
) )