Parse content
This commit is contained in:
@@ -31,9 +31,12 @@ let doneKeywords = @["DONE"]
|
||||
let parseTodoKeyword = todoKeywords.createTodoKeywordParser()
|
||||
let parseDoneKeyword = doneKeywords.createTodoKeywordParser()
|
||||
|
||||
let parseContentText = @[
|
||||
anyUntil(choice(@[endOfStream, str("\n*")])),
|
||||
]
|
||||
|
||||
let parseHeadingText = @[
|
||||
anyUntil(newline),
|
||||
ignore(newline),
|
||||
]
|
||||
|
||||
# func buildStars(token: seq[ParserToken]): seq[ParserToken] =
|
||||
@@ -61,6 +64,11 @@ let buildHeadlineContent = func(tokens: seq[ParserToken], org: OrgBlock): OrgBlo
|
||||
org.headlineContent = tokens
|
||||
org
|
||||
|
||||
let buildHeadlineChildren = func(tokens: seq[ParserToken], org: OrgBlock): OrgBlock {.closure.}=
|
||||
# let headlineString = tokens.tokensToString()
|
||||
|
||||
org.headlineChildrenText = tokens.tokensToString()
|
||||
org
|
||||
|
||||
proc tryBuildHeading(builder: OrgBuilderResult): OrgBuilderResult =
|
||||
builder
|
||||
@@ -73,13 +81,13 @@ proc tryBuildHeading(builder: OrgBuilderResult): OrgBuilderResult =
|
||||
(@[optional(parseDoneKeyword)], buildTodo, true),
|
||||
|
||||
(parseHeadingText, buildHeadlineContent, false),
|
||||
|
||||
(parseContentText, buildHeadlineChildren, true)
|
||||
]
|
||||
)
|
||||
|
||||
when isMainModule:
|
||||
let test = initOrgBuilder("""* TODO Level 1
|
||||
** DONE Level 2
|
||||
""")
|
||||
let test = initOrgBuilder("""* TODO Level 1""")
|
||||
.tryBuildHeading()
|
||||
.fold(
|
||||
x => "Nothing",
|
||||
|
||||
@@ -92,13 +92,15 @@ type
|
||||
level*: int
|
||||
todo*: Option[string]
|
||||
headlineContent*: seq[OrgInlineBlock]
|
||||
headlineChildrenText*: string
|
||||
|
||||
func stringifySpecialFields(x: OrgBlock): string =
|
||||
let specialFields = case x.kind:
|
||||
of orgHeading:
|
||||
&"""level: {x.level}
|
||||
todo: {x.todo}
|
||||
headlineContent: {x.headlineContent}"""
|
||||
headlineContent: {x.headlineContent}
|
||||
headlineChildrenText: {x.headlineChildrenText}"""
|
||||
else: ""
|
||||
|
||||
specialFields
|
||||
|
||||
Reference in New Issue
Block a user