Parse org heading content
This commit is contained in:
@@ -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((
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user