Stuff
This commit is contained in:
@@ -1,5 +1,14 @@
|
||||
#+TITLE: Spec
|
||||
|
||||
- dsfsd
|
||||
1. 23231o
|
||||
|
||||
#+begin_src
|
||||
|
||||
#+end_src
|
||||
|
||||
- sdfsdfsdf
|
||||
- sdfsdfsdf
|
||||
|
||||
* Specs
|
||||
|
||||
|
||||
@@ -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(), "")
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user