This commit is contained in:
Florian Schroedl
2023-10-04 15:02:49 +02:00
parent 065b298d1f
commit 6e50d9f013
3 changed files with 25 additions and 5 deletions

View File

@@ -1,5 +1,14 @@
#+TITLE: Spec
- dsfsd
1. 23231o
#+begin_src
#+end_src
- sdfsdfsdf
- sdfsdfsdf
* Specs

View File

@@ -31,7 +31,7 @@ let verbatimTokenizer* = tokenizeInlineTokens(orgVerbatimText)
let codeTokenizer* = tokenizeInlineTokens(orgCodeText)
let strikeThroughTokenizer* = tokenizeInlineTokens(orgStrikeThroughText)
let styledTextTokenizers = @[
let styledTextTokenizers* = @[
(boldParser, boldTokenizer),
(italicParser, italicTokenizer),
(underlineParser, underlineTokenizer),
@@ -41,7 +41,7 @@ let styledTextTokenizers = @[
(linkParser, linkTokenizer),
]
proc tryTokenizeRawText(tokens: seq[ParserToken]): seq[OrgInlineBuilderT] =
proc tryTokenizeRawText*(tokens: seq[ParserToken]): seq[OrgInlineBuilderT] =
## Merge all parser `tokens` into a string to tokenize for the builder.
## Unless the string is empty, in this case return an empty list.
let str = tokens.foldl(a & b.toString(), "")

View File

@@ -35,6 +35,8 @@ import fusion/matching
# with default OrgBuilder -> OrgBuilder
# until Eol
let lineParser = anyUntil(newlineOrEol)
let listTypesParser = choice(@[
ch('-'),
ch('+'),
@@ -71,7 +73,6 @@ let buildListItem = proc(builder: OrgBuilder): OrgBuilderResult {.closure.} =
listBulletType: '-',
listContent: tryTokenizeInline(content.tokens.tokensToString()).unsafeGet().tree
)
# echo treeResult
OrgBuilderResult.ok(OrgBuilder((
parser: content,
@@ -100,11 +101,21 @@ proc buildParagraph*(
if builderResult.isOk():
found = true
builderAcc = builderResult
break
if not found:
builderAcc
.flatMap((builder: OrgBuilder) => tryTokenize(
builder = builder,
builderFns = styledTextTokenizers,
defaultTokenizerFn = tryTokenizeRawText,
))
.fold(
OrgInlineBuilder
)
builderAcc = OrgBuilderResult.err(OrgBuilderError(
kind: builderError,
parser: builderAcc.fold(
@@ -123,5 +134,5 @@ when isMainModule:
block testParsers:
let test = initOrgBuilder("""- List item
1. List item
- random stuff""").flatMap((builder: OrgBuilder) => builder.buildParagraph(paragraphBuilders))
random stuff""").flatMap((builder: OrgBuilder) => builder.buildParagraph(paragraphBuilders))
echo test