Render items with react

This commit is contained in:
Florian Schroedl
2022-05-04 17:00:00 +02:00
parent 2e57ff5129
commit 643ced98ab
16 changed files with 6238 additions and 40 deletions

26
src/org/index.html Normal file
View File

@@ -0,0 +1,26 @@
<!doctype html>
<html class="no-js" lang="">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<title>Untitled</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
<!-- Place favicon.ico in the root directory -->
</head>
<body>
<!--[if lt IE 8]>
<p class="browserupgrade">
You are using an <strong>outdated</strong> browser. Please
<a href="http://browsehappy.com/">upgrade your browser</a> to improve
your experience.
</p>
<![endif]-->
<script type="text/javascript" src="./org_block_heading.js"></script>
</body>
</html>

5539
src/org/org_block_heading.js Normal file

File diff suppressed because one or more lines are too long

View File

@@ -32,7 +32,7 @@ let parseTodoKeyword = todoKeywords.createTodoKeywordParser()
let parseDoneKeyword = doneKeywords.createTodoKeywordParser()
let parseContentText = @[
anyUntil(choice(@[endOfStream, str("\n*")])),
anyUntilPerformant(choice(@[endOfStream, str("\n*")])),
]
let parseHeadlineNewline = @[
@@ -40,7 +40,7 @@ let parseHeadlineNewline = @[
]
let parseHeadingText = @[
anyUntil(newline),
anyUntilPerformant(newline),
]
# func buildStars(token: seq[ParserToken]): seq[ParserToken] =
@@ -71,7 +71,7 @@ let buildHeadlineContent = func(tokens: seq[ParserToken], org: OrgBlock): OrgBlo
let buildHeadlineChildren = func(tokens: seq[ParserToken], org: OrgBlock): OrgBlock {.closure.}=
# let headlineString = tokens.tokensToString()
org.headlineChildrenText = tokens.tokensToString()
# org.headlineChildrenText = tokens.tokensToString()
org
let buildHeadlineNewline = func(tokens: seq[ParserToken], org: OrgBlock): OrgBlock {.closure.}=
@@ -92,26 +92,20 @@ proc tryBuildHeading(builder: OrgBuilderResult): OrgBuilderResult =
(parseContentText, buildHeadlineChildren, true),
(parseHeadlineNewline, buildHeadlineContent, true),
(parseHeadlineNewline, buildHeadlineNewline, true),
(parseHeadlineNewline, buildHeadlineNewline, false),
]
)
when isMainModule:
var acc = initOrgBuilder("""* TODO Level 1
** TODO Level 2
""")
proc makeOrg*(x: string): OrgBuilderResult =
var acc = initOrgBuilder(x)
while acc.isOk() and acc.tryParser(endOfStream).isErr():
let unsafeAcc = acc.unsafeGet()
let item = acc
.tryBuildHeading()
.fold(
err => OrgBuilderResult.err((unsafeAcc, "Error")),
.flatMap(
(x: OrgBuilder) => OrgBuilderResult.ok(OrgBuilder((
parser: x.parser,
tree: unsafeAcc.tree & x.tree,
@@ -120,35 +114,34 @@ when isMainModule:
acc = item
echo acc
acc
# let sampleBuilder = StringBuilderResult
# .ok(StringBuilder((
# parser: initParser("""**** TODO Some stars
# :PROPERTIES:
# :PROP_NAME: Value
# :PROP_NAME: Value
# :PROP_NAME: Value
# :PROP_NAME: Value
# :PROPERTIES_END:
proc foldOrg*(x: OrgBuilderResult): seq[string] =
x
.fold(
(err) => @["Error"],
(builder: OrgBuilder) => builder.tree.map((x: OrgBlock) => $x.headlineContent),
)
# echo acc.unsafeGet().tree[^1]
# Foo
# """),
# tree: newSeq[StringBuilderT](),
# )))
# .applyParsersSeq(@[
# (parseHeadingStars, stringConcat("Stars: ")),
when isMainModule:
# import nimprof
# import timeit
let test1 = """* TODO Level 1
Some stuff inbetween
# (@[optional(parseTodoKeyword)], stringConcat("TODO: ")),
# (@[optional(parseDoneKeyword)], stringConcat("DONE: ")),
** DONE Level 2 """
# (parseHeadingText, stringConcat("Text: ")),
# (parseProperties, stringConcat("Properties: ", seperator = ", ")),
# # (@[optional(choice(parseProperties))], stringConcat("Properties: ")),
# ])
# .foldBuilder(
# err => &"Error Parsing: {err}",
# xs => "Parser Succesfull:\n" & xs.join("\n"),
# )
let test1_2 = """* TODO Failing
# echo sampleBuilder
*
** Level 2"""
# let test2 = readFile("/home/floscr/Documents/Org/Bookmarks/bookmarks.org")
# let test2 = readFile("/tmp/gtd.org")
var acc = makeOrg(test1)
echo acc .foldOrg()
# echo acc.unsafeGet().tree[^1]