diff --git a/src/org/org_block_heading.nim b/src/org/org_block_heading.nim index 136966f..3994800 100644 --- a/src/org/org_block_heading.nim +++ b/src/org/org_block_heading.nim @@ -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(( diff --git a/src/org/org_types.nim b/src/org/org_types.nim index c066a51..1393c51 100644 --- a/src/org/org_types.nim +++ b/src/org/org_types.nim @@ -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: