Restore InlineBuilder
This commit is contained in:
@@ -22,7 +22,7 @@ func initOrgInlineBuilder*(content: string): OrgInlineBuilderResult =
|
|||||||
tree: newSeq[OrgInlineBuilderT](),
|
tree: newSeq[OrgInlineBuilderT](),
|
||||||
)))
|
)))
|
||||||
|
|
||||||
func convertTokens*(kind: orgInlineBlockKind): seq[ParserToken] -> seq[OrgInlineBuilderT] =
|
func tokenizeInlineTokens*(kind: orgInlineBlockKind): seq[ParserToken] -> seq[OrgInlineBuilderT] =
|
||||||
return func(tokens: seq[ParserToken]): seq[OrgInlineBuilderT] =
|
return func(tokens: seq[ParserToken]): seq[OrgInlineBuilderT] =
|
||||||
return @[
|
return @[
|
||||||
OrgInlineBuilderT(
|
OrgInlineBuilderT(
|
||||||
@@ -31,12 +31,12 @@ func convertTokens*(kind: orgInlineBlockKind): seq[ParserToken] -> seq[OrgInline
|
|||||||
)
|
)
|
||||||
]
|
]
|
||||||
|
|
||||||
# func rawTextTokenizer*(kind: orgInlineBlockKind): string -> OrgInlineBuilderT =
|
func tokenizeRawText*(kind: orgInlineBlockKind): string -> OrgInlineBuilderT =
|
||||||
# return func(content: string): OrgInlineBuilderT =
|
return func(content: string): OrgInlineBuilderT =
|
||||||
# return OrgInlineBuilderT(
|
return OrgInlineBuilderT(
|
||||||
# kind: kind,
|
kind: kind,
|
||||||
# content: content,
|
content: content,
|
||||||
# )
|
)
|
||||||
|
|
||||||
# ## Blocks
|
# ## Blocks
|
||||||
# type OrgBuilderT* = OrgBlock
|
# type OrgBuilderT* = OrgBlock
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
import std/[
|
import std/[
|
||||||
collections/sequtils,
|
collections/sequtils,
|
||||||
strformat,
|
|
||||||
strutils,
|
|
||||||
sugar,
|
sugar,
|
||||||
]
|
]
|
||||||
import fp/[
|
import fp/[
|
||||||
@@ -11,10 +9,6 @@ import ./org_types
|
|||||||
import ./org_builder
|
import ./org_builder
|
||||||
import ../parser/parser
|
import ../parser/parser
|
||||||
# import ./org_text_link
|
# import ./org_text_link
|
||||||
# import ../utils/fp
|
|
||||||
# import ../parser/parser_internals
|
|
||||||
# import ../parser/parser_types
|
|
||||||
# import ../parser/builder_api
|
|
||||||
|
|
||||||
# -- Parsers
|
# -- Parsers
|
||||||
|
|
||||||
@@ -25,47 +19,44 @@ let verbatimParser* = anyBetweenPair(ch('='))
|
|||||||
let codeParser* = anyBetweenPair(ch('~'))
|
let codeParser* = anyBetweenPair(ch('~'))
|
||||||
let strikeThroughParser* = anyBetweenPair(ch('+'))
|
let strikeThroughParser* = anyBetweenPair(ch('+'))
|
||||||
|
|
||||||
# let rawTokenizer* = rawTextTokenizer(orgRawText)
|
# -- Tokenizers
|
||||||
# let boldTokenizer* = textTokenizer(orgBoldText)
|
|
||||||
# let italicTokenizer* = textTokenizer(orgItalicText)
|
|
||||||
# let underlineTokenizer* = textTokenizer(orgUnderlineText)
|
|
||||||
# let verbatimTokenizer* = textTokenizer(orgVerbatimText)
|
|
||||||
# let codeTokenizer* = textTokenizer(orgCodeText)
|
|
||||||
# let strikeThroughTokenizer* = textTokenizer(orgStrikeThroughText)
|
|
||||||
|
|
||||||
# let tok = linkTokenizerSeq
|
let rawTextTokenizer* = tokenizeRawText(orgRawText)
|
||||||
|
|
||||||
# let orgStyledTextBuilders = @[
|
let boldTokenizer* = tokenizeInlineTokens(orgBoldText)
|
||||||
# (boldParser, boldTokenizer),
|
let italicTokenizer* = tokenizeInlineTokens(orgItalicText)
|
||||||
# (italicParser, italicTokenizer),
|
let underlineTokenizer* = tokenizeInlineTokens(orgUnderlineText)
|
||||||
# (underlineParser, underlineTokenizer),
|
let verbatimTokenizer* = tokenizeInlineTokens(orgVerbatimText)
|
||||||
# (verbatimParser, verbatimTokenizer),
|
let codeTokenizer* = tokenizeInlineTokens(orgCodeText)
|
||||||
# (codeParser, codeTokenizer),
|
let strikeThroughTokenizer* = tokenizeInlineTokens(orgStrikeThroughText)
|
||||||
# (strikeThroughParser, strikeThroughTokenizer),
|
|
||||||
|
let styledTextTokenizers = @[
|
||||||
|
(boldParser, boldTokenizer),
|
||||||
|
(italicParser, italicTokenizer),
|
||||||
|
(underlineParser, underlineTokenizer),
|
||||||
|
(verbatimParser, verbatimTokenizer),
|
||||||
|
(codeParser, codeTokenizer),
|
||||||
|
(strikeThroughParser, strikeThroughTokenizer),
|
||||||
# (linkParser, linkTokenizerSeq),
|
# (linkParser, linkTokenizerSeq),
|
||||||
# ]
|
]
|
||||||
|
|
||||||
# proc makeRawTokenOrEmpty(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.tokenStringValue(), "")
|
let str = tokens.foldl(a & b.toString(), "")
|
||||||
# if str.len == 0: @[]
|
if str.len == 0: @[]
|
||||||
# else: @[rawTokenizer(str)]
|
else: @[rawTextTokenizer(str)]
|
||||||
|
|
||||||
# proc tryBuildInline*(content: string): OrgInlineBuilderResult =
|
proc tryTokenizeInline*(content: string): OrgInlineBuilderResult =
|
||||||
# initOrgInlineBuilder(content)
|
initOrgInlineBuilder(content)
|
||||||
# .flatMap((builder: OrgInlineBuilder) => tryParseBuild(
|
.flatMap((builder: OrgInlineBuilder) => tryTokenize(
|
||||||
# builder = builder,
|
builder = builder,
|
||||||
# builderFns = orgStyledTextBuilders,
|
builderFns = styledTextTokenizers,
|
||||||
# defaultBuilderFn = makeRawTokenOrEmpty,
|
defaultTokenizerFn = tryTokenizeRawText,
|
||||||
# ))
|
))
|
||||||
|
|
||||||
# when isMainModule:
|
|
||||||
# let test = tryBuildInline(
|
|
||||||
# "Regular *bold* [[placeholder.com]] /italic/ _underline_ =verbatim= ~code~ +strikethrough+ [[https://placeholder.com][title]]"
|
|
||||||
# )
|
|
||||||
|
|
||||||
# echo test
|
# -- Tests
|
||||||
|
|
||||||
when isMainModule:
|
when isMainModule:
|
||||||
block testParsers:
|
block testParsers:
|
||||||
@@ -78,3 +69,9 @@ when isMainModule:
|
|||||||
assert testParser("=verbatim=", verbatimParser) == "verbatim"
|
assert testParser("=verbatim=", verbatimParser) == "verbatim"
|
||||||
assert testParser("~code~", codeParser) == "code"
|
assert testParser("~code~", codeParser) == "code"
|
||||||
assert testParser("+strikeThrough+", strikeThroughParser) == "strikeThrough"
|
assert testParser("+strikeThrough+", strikeThroughParser) == "strikeThrough"
|
||||||
|
|
||||||
|
block testTokenizers:
|
||||||
|
let test = tryTokenizeInline(
|
||||||
|
"Regular *bold* [[placeholder.com]] /italic/ _underline_ =verbatim= ~code~ +strikethrough+ [[https://placeholder.com][title]]"
|
||||||
|
)
|
||||||
|
echo test.unsafeGet()
|
||||||
|
|||||||
Reference in New Issue
Block a user