Parse org heading content

This commit is contained in:
Florian Schroedl
2022-05-04 17:00:00 +02:00
parent 6559220f74
commit 59815a517e
2 changed files with 26 additions and 11 deletions

View File

@@ -1,17 +1,19 @@
import std/sugar
import std/strformat
import std/collections/sequtils
import std/strutils
import results
import fusion/matching
import results
import std/collections/sequtils
import std/strformat
import std/strutils
import std/sugar
import ../utils/fp
import ../parser/parser_internals
import ../parser/parser_types
import ../parser/utils
import ./org_properties_block
import ./org_types
import ../utils/fp
import ./org_builder
import ./org_properties_block
import ./org_text_delimiter
import ./org_types
{.experimental: "caseStmtMacros".}
@@ -48,9 +50,18 @@ let buildTodo = func(tokens: seq[ParserToken], org: OrgBlock): OrgBlock {.closur
org
let buildHeadlineContent = func(tokens: seq[ParserToken], org: OrgBlock): OrgBlock {.closure.}=
org.headlineContent = tokens.tokensToString()
let headlineString = tokens.tokensToString()
let tokens = tryBuildInline(headlineString)
.fold(
x => newSeq[OrgInlineBuilderT](),
(x: OrgInlineBuilder) => x.tree,
)
org.headlineContent = tokens
org
proc tryBuildHeading(builder: OrgBuilderResult): OrgBuilderResult =
builder
.applyParsersSeqToSingle(
@@ -66,13 +77,17 @@ proc tryBuildHeading(builder: OrgBuilderResult): OrgBuilderResult =
)
when isMainModule:
echo initOrgBuilder("*** Some stars")
let test = initOrgBuilder("""* TODO Level 1
** DONE Level 2
""")
.tryBuildHeading()
.fold(
x => "Nothing",
x => $x.tree
)
echo test
# let sampleBuilder = StringBuilderResult
# .ok(StringBuilder((

View File

@@ -91,7 +91,7 @@ type
of orgHeading:
level*: int
todo*: Option[string]
headlineContent*: string
headlineContent*: seq[OrgInlineBlock]
func stringifySpecialFields(x: OrgBlock): string =
let specialFields = case x.kind: