Stuff
This commit is contained in:
@@ -1,5 +1,14 @@
|
|||||||
#+TITLE: Spec
|
#+TITLE: Spec
|
||||||
|
|
||||||
|
- dsfsd
|
||||||
|
1. 23231o
|
||||||
|
|
||||||
|
#+begin_src
|
||||||
|
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
- sdfsdfsdf
|
||||||
|
- sdfsdfsdf
|
||||||
|
|
||||||
* Specs
|
* Specs
|
||||||
|
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ let verbatimTokenizer* = tokenizeInlineTokens(orgVerbatimText)
|
|||||||
let codeTokenizer* = tokenizeInlineTokens(orgCodeText)
|
let codeTokenizer* = tokenizeInlineTokens(orgCodeText)
|
||||||
let strikeThroughTokenizer* = tokenizeInlineTokens(orgStrikeThroughText)
|
let strikeThroughTokenizer* = tokenizeInlineTokens(orgStrikeThroughText)
|
||||||
|
|
||||||
let styledTextTokenizers = @[
|
let styledTextTokenizers* = @[
|
||||||
(boldParser, boldTokenizer),
|
(boldParser, boldTokenizer),
|
||||||
(italicParser, italicTokenizer),
|
(italicParser, italicTokenizer),
|
||||||
(underlineParser, underlineTokenizer),
|
(underlineParser, underlineTokenizer),
|
||||||
@@ -41,7 +41,7 @@ let styledTextTokenizers = @[
|
|||||||
(linkParser, linkTokenizer),
|
(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.
|
## Merge all parser `tokens` into a string to tokenize for the builder.
|
||||||
## Unless the string is empty, in this case return an empty list.
|
## Unless the string is empty, in this case return an empty list.
|
||||||
let str = tokens.foldl(a & b.toString(), "")
|
let str = tokens.foldl(a & b.toString(), "")
|
||||||
|
|||||||
@@ -35,6 +35,8 @@ import fusion/matching
|
|||||||
# with default OrgBuilder -> OrgBuilder
|
# with default OrgBuilder -> OrgBuilder
|
||||||
# until Eol
|
# until Eol
|
||||||
|
|
||||||
|
let lineParser = anyUntil(newlineOrEol)
|
||||||
|
|
||||||
let listTypesParser = choice(@[
|
let listTypesParser = choice(@[
|
||||||
ch('-'),
|
ch('-'),
|
||||||
ch('+'),
|
ch('+'),
|
||||||
@@ -71,7 +73,6 @@ let buildListItem = proc(builder: OrgBuilder): OrgBuilderResult {.closure.} =
|
|||||||
listBulletType: '-',
|
listBulletType: '-',
|
||||||
listContent: tryTokenizeInline(content.tokens.tokensToString()).unsafeGet().tree
|
listContent: tryTokenizeInline(content.tokens.tokensToString()).unsafeGet().tree
|
||||||
)
|
)
|
||||||
# echo treeResult
|
|
||||||
|
|
||||||
OrgBuilderResult.ok(OrgBuilder((
|
OrgBuilderResult.ok(OrgBuilder((
|
||||||
parser: content,
|
parser: content,
|
||||||
@@ -100,11 +101,21 @@ proc buildParagraph*(
|
|||||||
|
|
||||||
if builderResult.isOk():
|
if builderResult.isOk():
|
||||||
found = true
|
found = true
|
||||||
|
|
||||||
builderAcc = builderResult
|
builderAcc = builderResult
|
||||||
break
|
break
|
||||||
|
|
||||||
if not found:
|
if not found:
|
||||||
|
builderAcc
|
||||||
|
.flatMap((builder: OrgBuilder) => tryTokenize(
|
||||||
|
builder = builder,
|
||||||
|
builderFns = styledTextTokenizers,
|
||||||
|
defaultTokenizerFn = tryTokenizeRawText,
|
||||||
|
))
|
||||||
|
.fold(
|
||||||
|
OrgInlineBuilder
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
builderAcc = OrgBuilderResult.err(OrgBuilderError(
|
builderAcc = OrgBuilderResult.err(OrgBuilderError(
|
||||||
kind: builderError,
|
kind: builderError,
|
||||||
parser: builderAcc.fold(
|
parser: builderAcc.fold(
|
||||||
@@ -123,5 +134,5 @@ when isMainModule:
|
|||||||
block testParsers:
|
block testParsers:
|
||||||
let test = initOrgBuilder("""- List item
|
let test = initOrgBuilder("""- List item
|
||||||
1. List item
|
1. List item
|
||||||
- random stuff""").flatMap((builder: OrgBuilder) => builder.buildParagraph(paragraphBuilders))
|
random stuff""").flatMap((builder: OrgBuilder) => builder.buildParagraph(paragraphBuilders))
|
||||||
echo test
|
echo test
|
||||||
|
|||||||
Reference in New Issue
Block a user