Commit Graph

897 Commits

Author SHA1 Message Date
Tom Alexander
ee02e07717
Read the setup file into memory. 2023-09-04 16:53:02 -04:00
Tom Alexander
a8f277efe5
Scan for setupfile at the beginning of a parse. 2023-09-04 12:48:59 -04:00
Tom Alexander
0ef141d65e
Switch to putting radio targets in the global settings instead of the context tree.
All checks were successful
rustfmt Build rustfmt has succeeded
rust-test Build rust-test has succeeded
rust-build Build rust-build has succeeded
2023-09-04 12:28:33 -04:00
Tom Alexander
33091112a5
Remove OrgSource from the public document parser interface.
All checks were successful
rustfmt Build rustfmt has succeeded
rust-test Build rust-test has succeeded
rust-build Build rust-build has succeeded
2023-09-04 11:38:12 -04:00
Tom Alexander
df79cbd0b7
Give global options their own lifetime. 2023-09-03 16:22:40 -04:00
Tom Alexander
a7b9eb9db4
Lifetime issue. 2023-09-03 12:58:46 -04:00
Tom Alexander
d262833f9b
Fixing more errors. 2023-09-03 12:52:09 -04:00
Tom Alexander
0d438a8e0f
Fixing more errors. 2023-09-03 12:45:12 -04:00
Tom Alexander
0b009511ff
Fixing more errors. 2023-09-03 12:28:45 -04:00
Tom Alexander
3bdb24ad88
Fixing more errors. 2023-09-03 12:23:18 -04:00
Tom Alexander
fdf35ba23c
Fixing more errors. 2023-09-03 12:07:51 -04:00
Tom Alexander
cd69e08516
Fixing more errors. 2023-09-03 11:05:34 -04:00
Tom Alexander
b54c6d366c
Fixing more errors. 2023-09-03 00:27:50 -04:00
Tom Alexander
15e8d1ab77
Implement check_exit_matcher. 2023-09-03 00:05:47 -04:00
Tom Alexander
8502a8830d
Fixing some errors. 2023-09-02 23:16:02 -04:00
Tom Alexander
74a6101de7
Update RefContext to three lifetimes. 2023-09-02 22:45:46 -04:00
Tom Alexander
0d728510d7
Implement iterator for context. 2023-09-02 20:46:17 -04:00
Tom Alexander
22e9bc991f
Fixing up compiler errors. 2023-09-02 19:28:33 -04:00
Tom Alexander
564104f1e8
Switch to RefContext. 2023-09-02 19:16:44 -04:00
Tom Alexander
12ad3b09f0
Fixing imports. 2023-09-02 19:15:47 -04:00
Tom Alexander
eabffe5ecc
Move over the rest of the types. 2023-09-02 19:08:01 -04:00
Tom Alexander
b47029fdbb
Starting to separate the context and parsed tokens into their own modules. 2023-09-02 18:46:45 -04:00
Tom Alexander
25b8c80d4e
Add default constructors. 2023-09-02 18:40:01 -04:00
Tom Alexander
54825538e4
fixup 2023-09-02 18:21:43 -04:00
Tom Alexander
66d10a7a1b
Started switching over to a stack-based context tree with global settings.
This change should hopefully allow for matchers to have captured borrowed values, it should eliminate the use of heap-allocated reference counting on the context nodes, and it adds in a global settings struct for passing around values that do not change during parsing.
2023-09-02 18:20:10 -04:00
Tom Alexander
510985e97c
Fix greater blocks by preventing nesting even if they are not the immediate parent. 2023-08-31 19:17:46 -04:00
Tom Alexander
5171326d63
Create a test for special blocks. 2023-08-31 19:02:18 -04:00
Tom Alexander
67f79aeb51
Remove context from detect plain list.
All checks were successful
rustfmt Build rustfmt has succeeded
rust-test Build rust-test has succeeded
rust-build Build rust-build has succeeded
2023-08-31 18:53:28 -04:00
Tom Alexander
b2383d9f93
Fix footnote definition performance.
All checks were successful
rustfmt Build rustfmt has succeeded
rust-test Build rust-test has succeeded
rust-build Build rust-build has succeeded
We were re-parsing each footnote definition in the footnote definition exit matcher which causes their contents to get re-parsed. This compounds with long lists of footnote definitions.
2023-08-31 18:47:23 -04:00
Tom Alexander
0fcb3f73f9
Move handling of contentless item to handle contentless description item. 2023-08-31 17:25:42 -04:00
Tom Alexander
bfc9e7f58d
When re-parsing last item in list, only disable white space consumption for last element in item. 2023-08-31 17:08:21 -04:00
Tom Alexander
b5f0521b56
Only consume trailing whitespace when not exiting for all objects. 2023-08-31 15:45:31 -04:00
Tom Alexander
2048d8f0b6
Support comments at the end of the line in diary sexp.
All checks were successful
rustfmt Build rustfmt has succeeded
rust-test Build rust-test has succeeded
rust-build Build rust-build has succeeded
2023-08-31 15:31:54 -04:00
Tom Alexander
466716881e
Fix macros consuming whitespace even when the exit matcher is calling for an exit.
All checks were successful
rustfmt Build rustfmt has succeeded
rust-test Build rust-test has succeeded
rust-build Build rust-build has succeeded
2023-08-31 15:11:29 -04:00
Tom Alexander
eb9c582fa5
'>' is allowed as a post character in text markup.
All checks were successful
rustfmt Build rustfmt has succeeded
rust-test Build rust-test has succeeded
rust-build Build rust-build has succeeded
2023-08-29 23:57:15 -04:00
Tom Alexander
214e895d85
Support backslash at the end of a macro. 2023-08-29 23:42:16 -04:00
Tom Alexander
6f2d90162b
Do not use the plain text parser for property drawers.
This additional exit condition was causing property drawers to parse incorrectly.
2023-08-29 22:03:20 -04:00
Tom Alexander
a6d742a536
Fix handling line breaks after divider in description lists. 2023-08-29 21:27:54 -04:00
Tom Alexander
f6c895319f
Add support for diffing description lists. 2023-08-29 19:35:54 -04:00
Tom Alexander
2682779534
Add support for parsing description lists. 2023-08-29 18:13:55 -04:00
Tom Alexander
b48d472546
Fix build.
All checks were successful
rustfmt Build rustfmt has succeeded
rust-test Build rust-test has succeeded
rust-build Build rust-build has succeeded
2023-08-29 18:07:35 -04:00
Tom Alexander
80b55fdd45
Consume trailing whitespace for macro. 2023-08-29 17:42:58 -04:00
Tom Alexander
f426e32798
Do not include trailing punctuation or whitespace in plain links. 2023-08-29 17:35:04 -04:00
Tom Alexander
1bcd1895c0
Allow affiliating keywords with regular keywords. 2023-08-29 17:19:13 -04:00
Tom Alexander
2ba0dc49be
Support export affiliated keywords. 2023-08-29 17:01:35 -04:00
Tom Alexander
9df40fb13f
Only allow specific keywords for affiliated keywords. 2023-08-29 16:56:07 -04:00
Tom Alexander
cc671925db
Support empty sections under headings. 2023-08-29 16:07:43 -04:00
Tom Alexander
950baa9d5d
Only allow a single section under a heading. 2023-08-29 16:03:13 -04:00
Tom Alexander
56865c68fc
Do not allow plain links without a path. 2023-08-29 15:44:04 -04:00
Tom Alexander
3206027b96
Add all entities. 2023-08-29 15:16:22 -04:00
Tom Alexander
3e6df7ba78
Print character offset from rust's parse perspective during compare. 2023-08-29 14:40:58 -04:00
Tom Alexander
f21385a901
Add a helper function for logging during debugging.
All checks were successful
rust-test Build rust-test has succeeded
rust-build Build rust-build has succeeded
2023-08-29 14:03:14 -04:00
Tom Alexander
1d06d95bb1
Add a minimum stars figure to heading parser to reduce re-parses. 2023-08-29 14:01:28 -04:00
Tom Alexander
bfc88c1d1b
Use a detect_headline function instead of the full headline parse for the section_end exit matcher.
This shaved 2 seconds off the first 800 lines of org-mode/doc/org-guide.org.
2023-08-29 11:35:54 -04:00
Tom Alexander
f29720e5b9
Switch to using a type for bracket depth.
This is to make changing the type easier in the future.
2023-08-29 11:18:15 -04:00
Tom Alexander
27a9b5aeb1
Switch to i16 for backet depth count.
This is having a measurable performance increase. 32k bracket depth should be enough for any non-malicious document.
2023-08-29 11:14:50 -04:00
Tom Alexander
8051c3d2b7
Remove line number tracking.
The documentation was incorrect, none of the org-mode elements have a line number restriction for their contents.
2023-08-29 11:09:28 -04:00
Tom Alexander
bd97d2f69d
Switch to i32 for tracking bracket depth. 2023-08-29 11:07:00 -04:00
Tom Alexander
14b1d0526c
Manually implement Debug and make convert_error more generic.
All checks were successful
rust-test Build rust-test has succeeded
rust-build Build rust-build has succeeded
2023-08-29 10:58:05 -04:00
Tom Alexander
288350daef
Iterate over the bytes instead of characters when counting brackets.
All checks were successful
rust-test Build rust-test has succeeded
rust-build Build rust-build has succeeded
2023-08-28 03:52:21 -04:00
Tom Alexander
c683516620
Switch inline source blocks to using bracket depth from OrgSource instead of from the context.
This is for the same reasons as footnote references.
2023-08-28 03:04:33 -04:00
Tom Alexander
e731e8ff6b
Switch inline babel call to using bracket depth from OrgSource instead of from the context.
This is for the same reasons as footnote references.
2023-08-28 03:04:33 -04:00
Tom Alexander
4c2037ec44
Switch subscript and superscript to using bracket depth from OrgSource instead of from the context.
This is for the same reasons as footnote references.
2023-08-28 03:04:33 -04:00
Tom Alexander
a46b358549
Switch citations to using bracket depth from OrgSource instead of from the context.
This is for the same reasons as footnote references.
2023-08-28 03:04:32 -04:00
Tom Alexander
ec813e3b3f
Switch to using bracket depth from OrgSource instead of from the context for footnote references.
It is currently unknown if this will produce a performance increase, but unless it has a significant performance penalty we are going to go forward with this change because it makes it more explicit which values need to be read deeply from other elements (therefore needing to be in the context) vs values that can be bound to the exit matcher since they are only used within the confines of the current element.

I suspect we will get a performance boost since it will be reducing the nodes that need to be walked in the context but maintaining bracket depth count over the entire document instead of only inside elements that need balanced brackets could cost us.
2023-08-28 03:04:32 -04:00
Tom Alexander
f11f7bcc73
Keep track of bracket, brace, and parenthesis depth when iterating over the OrgSource. 2023-08-28 01:18:46 -04:00
Tom Alexander
9e0e5f6f0a
Remove line number limit for LaTeX fragments. 2023-08-28 01:18:46 -04:00
Tom Alexander
1952d175c0
Record line number in OrgSource.
This will be used for elements who have limits on the number of lines inside of them. This includes LaTeX fragment bodies and text markup.
2023-08-28 01:18:45 -04:00
Tom Alexander
20c17c40be
Switch greater blocks to using name provided when building exit matcher instead of from context. 2023-08-28 01:18:45 -04:00
Tom Alexander
b6b869df25
Minor improvement to error message in diff.
All checks were successful
rustfmt Build rustfmt has succeeded
rust-test Build rust-test has succeeded
rust-build Build rust-build has succeeded
2023-08-28 01:05:09 -04:00
Tom Alexander
9c9964c66f
Add lt and gt entities.
All checks were successful
rustfmt Build rustfmt has succeeded
rust-test Build rust-test has succeeded
rust-build Build rust-build has succeeded
2023-08-27 22:15:23 -04:00
Tom Alexander
3e143796f7
Compare heading todo keywords.
All checks were successful
rust-test Build rust-test has succeeded
rust-build Build rust-build has succeeded
This only handles the default case where the only valid TODO keywords are TODO and DONE.
2023-08-27 15:56:08 -04:00
Tom Alexander
9cc5e63c1b
Compare heading tags.
Some checks failed
rust-test Build rust-test has failed
rust-build Build rust-build has succeeded
2023-08-25 07:05:59 -04:00
Tom Alexander
be6197e4c7
Store the tags in the heading. 2023-08-25 06:20:06 -04:00
Tom Alexander
2d4e54845b
Add support for parsing tags in headlines. 2023-08-25 06:13:29 -04:00
Tom Alexander
1b678fe81f
Add tests for detect_plain_list. 2023-08-25 05:27:09 -04:00
Tom Alexander
bfea828e62
Update detect_plain_list to support line breaks. 2023-08-25 05:27:08 -04:00
Tom Alexander
bc5745a95f
Add support for list items with a line break before their contents. 2023-08-25 05:18:26 -04:00
Tom Alexander
2fb57daaec
Move the table cell object parser into the object parser file.
All checks were successful
rustfmt Build rustfmt has succeeded
rust-test Build rust-test has succeeded
rust-build Build rust-build has succeeded
2023-08-25 04:35:54 -04:00
Tom Alexander
3a38f4cd35
Add support for the ast entity.
All checks were successful
rustfmt Build rustfmt has succeeded
rust-test Build rust-test has succeeded
rust-build Build rust-build has succeeded
2023-08-25 04:28:24 -04:00
Tom Alexander
9c1e6ccc97
Add a detect_element function.
All checks were successful
rust-test Build rust-test has succeeded
rust-build Build rust-build has succeeded
This is an optimization. When you have something like plain text which ends when it hits the next element, we only need to parse enough to detect that an element is about to occur. For elements like plain lists, this is as simple as parsing a line starting with optional whitespace and then a bullet, which avoids parsing the entire plain list tree. The benefit is most noticeable in deeply nested plain lists.
2023-08-25 01:07:53 -04:00
Tom Alexander
0dbc8f0925
Remove redundant exit matcher checks.
All checks were successful
rust-test Build rust-test has succeeded
rust-build Build rust-build has succeeded
2023-08-25 00:01:56 -04:00
Tom Alexander
02fe10fba3
Move objects to a lower exit class.
All checks were successful
rust-test Build rust-test has succeeded
rust-build Build rust-build has succeeded
Paragraph's exit matcher which detects elements was causing the plain list parser to exit after the first item was parsed which was causing significant amounts of re-parsing.
2023-08-24 23:34:23 -04:00
Tom Alexander
33d7ae03d1
Add a TODO.
All checks were successful
rust-test Build rust-test has succeeded
rust-build Build rust-build has succeeded
2023-08-24 21:35:34 -04:00
Tom Alexander
03faa7257f
Move the indent level for plain list's exit matcher to const fn instead of grabbing from the context.
All checks were successful
rust-test Build rust-test has succeeded
rust-build Build rust-build has succeeded
This made a slight improvement to performance.
2023-08-24 20:50:24 -04:00
Tom Alexander
ae3510abd5
Do not cast lesser block name to lowercase at runtime.
This reduced the runtime of my problematic test case from 6.9 seconds to 6 seconds.
2023-08-24 20:10:43 -04:00
fluxcdbot
ad3f47864a CI: autofix rust code.
Some checks failed
rustfmt Build rustfmt has succeeded
rust-test Build rust-test has succeeded
rust-build Build rust-build has failed
2023-08-24 23:43:41 +00:00
Tom Alexander
cf37bc4111
Remove unnecessary context from some util functions.
All checks were successful
rust-test Build rust-test has succeeded
rust-build Build rust-build has succeeded
2023-08-24 19:29:00 -04:00
Tom Alexander
e5224cda63
Removing dead code.
All checks were successful
rust-test Build rust-test has succeeded
rust-build Build rust-build has succeeded
2023-08-24 18:40:25 -04:00
Tom Alexander
64e3481660
Update get_consumed to use the new wrapped input type. 2023-08-24 18:33:40 -04:00
Tom Alexander
32071ce74d
Fix handling of start of line in OrgSource.
All checks were successful
rust-test Build rust-test has succeeded
rust-build Build rust-build has succeeded
2023-08-24 18:08:16 -04:00
Tom Alexander
e84e2b5147
Update tests to compile again. 2023-08-24 17:15:24 -04:00
Tom Alexander
3348807a05
Eliminate the document root context element. 2023-08-24 17:01:12 -04:00
Tom Alexander
720afa5d32
Update getting the previous character and previous line.
This can be done a lot more efficiently now that we are keeping track of this information in the wrapped input type instead of having to fetch to the original document out of the context tree.
2023-08-24 16:56:07 -04:00
Tom Alexander
dab598e5e7
Convert all functions to using the wrapped input type.
Some checks failed
rust-test Build rust-test has failed
rust-build Build rust-build has failed
2023-08-24 16:06:29 -04:00
Tom Alexander
b7a5dd48ea
Impl missing traits. 2023-08-22 23:32:27 -04:00
Tom Alexander
c475dce6da
Fix lifetime issue. 2023-08-22 23:14:23 -04:00
Tom Alexander
6d1675fa00
Lifetime issue. 2023-08-22 22:57:44 -04:00
Tom Alexander
cda49c628c
Move the wrapped input into the parser. 2023-08-22 22:33:50 -04:00
Tom Alexander
7cf1b2d2b8
Disable the failing plain list whitespace ownership test.
Some checks failed
rust-build Build rust-build has failed
rustfmt Build rustfmt has succeeded
rust-test Build rust-test has succeeded
2023-08-17 00:03:05 -04:00
Tom Alexander
7fafbfb6bb
Do not consume whitespace in the final plain list item. 2023-08-16 17:37:19 -04:00
Tom Alexander
56281633f3
Support blank link in plain_list_item_end, move exit matcher to end of loop in plain_list, and maybe consume trailing whitespace in plain_list_item. 2023-08-16 17:09:06 -04:00
Tom Alexander
7df393f31d
Make a new naive implementation of plain_list_item.
Still need to update plain_list_item_end and handle the whitespace ownership issues, but starting from a simplified state will help.
2023-08-16 16:05:24 -04:00
Tom Alexander
72d5f8f35c
Make a new naive implementation of plain_list. 2023-08-16 16:05:24 -04:00
Tom Alexander
e5e5120a10
Move telemetry handling to the tracing-specific main function.
All checks were successful
rustfmt Build rustfmt has succeeded
rust-test Build rust-test has succeeded
rust-build Build rust-build has succeeded
This is so main_body can exit with an error at any time without missing the shutdown_telemetry function. This does not catch panics.
2023-08-16 16:05:24 -04:00
Tom Alexander
a7b298eeec
Fix lesser block exit priority.
The paragraph end was matching text inside lesser blocks.
2023-08-14 17:32:10 -04:00
Tom Alexander
1bbfbc3164
Add additional tracing to lesser block. 2023-08-14 17:32:09 -04:00
Tom Alexander
b93a12c32c
Add support for escaped double quotes in sexp. 2023-08-14 16:55:04 -04:00
Tom Alexander
eb379af78d
Switch export snippet to use exit matchers. 2023-08-14 13:13:32 -04:00
Tom Alexander
cc83431d62
Consume trailing whitespace for property drawers.
Some checks failed
rust-build Build rust-build has failed
rust-test Build rust-test has failed
This is a change between the org-mode in emacs 29.1 and the org-mode currently in main.
2023-08-14 11:57:12 -04:00
Tom Alexander
e33ec4a02c
Add support for reading begin/end bounds in the new standard-properties format. 2023-08-13 02:21:02 -04:00
Tom Alexander
f7afcec824
Add support for hash notation in the elisp parser. 2023-08-13 02:21:02 -04:00
Tom Alexander
cf0991fdff
Add support for parsing vectors in the elisp parser. 2023-08-13 02:21:02 -04:00
Tom Alexander
cd1b4ba785
Make the tracing macros optional. 2023-08-10 20:22:34 -04:00
Tom Alexander
17e523b74c
Do not consume space in time rest when leading into a repeater or delay. 2023-07-27 20:39:13 -04:00
Tom Alexander
ece8fcd0c4
Implement parser for active/inactive timestamp time ranges. 2023-07-27 20:26:56 -04:00
Tom Alexander
1a5b7ca30c
Implement parser for active/inactive timestamp date ranges. 2023-07-27 19:59:36 -04:00
Tom Alexander
b5a029e2bf
Implement parser for inactive timestamps. 2023-07-27 19:54:33 -04:00
Tom Alexander
c5f81298ba
Switch to passing in the exit matcher from a higher context to reduce the permutations of functions. 2023-07-27 19:52:35 -04:00
Tom Alexander
529418a9d1
Implement parser for active timestamps. 2023-07-27 19:45:57 -04:00
Tom Alexander
d4a3628481
Implement parser for date. 2023-07-27 19:20:28 -04:00
Tom Alexander
70f2747291
Implement parser for diary timestamps. 2023-07-27 18:59:32 -04:00
Tom Alexander
49d5a4e4b5
Call out to the parsers for the various timestamp types.
The parsers for those types remain unimplemented.
2023-07-24 17:54:49 -04:00
Tom Alexander
fa5fc41121
Create structure for timestamps. 2023-07-24 17:34:07 -04:00
Tom Alexander
23d587c699
Implement parser for subscript/superscript with braces. 2023-07-24 16:29:31 -04:00
Tom Alexander
f717d5e7df
Implement parser for braceless subscript/superscript. 2023-07-24 15:41:14 -04:00
Tom Alexander
993c73dc9f
Create structure for subscript and superscript. 2023-07-24 14:23:36 -04:00
Tom Alexander
b8b2e33137
Implement the statistics cookie parser. 2023-07-22 02:12:21 -04:00
Tom Alexander
c73e26e2d6
Create structure for statistics cookies. 2023-07-22 02:12:20 -04:00
fluxcdbot
abb0aeacaf CI: autofix rust code.
All checks were successful
semver Build semver has succeeded
rustfmt Build rustfmt has succeeded
rust-test Build rust-test has succeeded
2023-07-22 05:43:17 +00:00
Tom Alexander
caa6c41798
Add a test case. 2023-07-22 01:40:27 -04:00
Tom Alexander
e54218c0d7
Implement the target parser. 2023-07-22 01:36:00 -04:00
Tom Alexander
d60cad07e0
Create structure for targets. 2023-07-22 01:15:04 -04:00
Tom Alexander
5c1d913c99
Check that the preceding line for a line break is non-empty. 2023-07-22 00:43:02 -04:00
Tom Alexander
a1f3e9ea47
Implement line break parser. 2023-07-22 00:03:21 -04:00
Tom Alexander
4d114206ef
Create structure for line breaks. 2023-07-21 23:48:37 -04:00
Tom Alexander
80039aa605
Fix bracket counting in inline babel calls. 2023-07-21 23:20:10 -04:00
Tom Alexander
0b41e12424
Fix counting brackets in inline source block. 2023-07-21 23:14:52 -04:00
Tom Alexander
e8979513aa
Implement parser for inline source blocks. 2023-07-21 22:51:19 -04:00
Tom Alexander
e0d2bb8213
Create structure for inline source blocks. 2023-07-21 22:29:04 -04:00
Tom Alexander
45b01012b3
Implement the parser for inline babel calls. 2023-07-21 21:39:53 -04:00
Tom Alexander
eef2944307
Create structure for inline babel calls. 2023-07-21 19:53:02 -04:00
Tom Alexander
7ce9dafd96
Fix parsing citations inside paragraphs. 2023-07-21 18:52:02 -04:00
Tom Alexander
d678391789
Fix parsing semicolons. 2023-07-21 18:42:22 -04:00
Tom Alexander
1a8bf01fba
Fix simple citations by making prefixes and suffixes optional. 2023-07-21 18:19:39 -04:00
Tom Alexander
4ad297f58a
Add a test for a simple citation. 2023-07-21 18:00:19 -04:00
Tom Alexander
6b47a6c6c3
Initial implementation for citations.
This implementation definitely has bugs and is completely untested at this point. I'm just committing the initial "assume everything works" version before I did into debugging and fixing.
2023-07-21 17:52:18 -04:00
Tom Alexander
e24b413cd0
Finish first implementation of citation reference. 2023-07-21 16:38:49 -04:00
Tom Alexander
339ff5cd26
Implement key parser and begin key_suffix parser. 2023-07-20 01:13:49 -04:00
Tom Alexander
d5c611674e
Create structure for citations. 2023-07-20 00:38:16 -04:00
Tom Alexander
7611deb1ff
Forgot to add the exit matcher nodes to the context and match the trailing ']'. 2023-07-19 23:40:26 -04:00
Tom Alexander
b850f59640
Implement parser for inline footnotes. 2023-07-19 23:20:17 -04:00
Tom Alexander
a36a820e84
Implement parser for the simplest form of footnote reference. 2023-07-19 21:32:08 -04:00
Tom Alexander
6822069c2f
Implement the parser for anonymous footnotes. 2023-07-19 21:14:09 -04:00
Tom Alexander
5fb66a586d
Implement a function to detect the end of a footnote reference definition with balanced brackets. 2023-07-19 20:52:09 -04:00
Tom Alexander
9c2eb3b122
Create structure for footnote references. 2023-07-19 18:56:46 -04:00
Tom Alexander
95e033a99b
Implement the export snippet parser. 2023-07-19 00:38:19 -04:00
Tom Alexander
1fb8ce9af6
Create structure for export snippets. 2023-07-19 00:09:16 -04:00
Tom Alexander
5e73ca74d5
Fix embedding text that coincidentally matches org-mode object syntax inside a LaTeX environment.
I was using the plain_text matcher before which adds its own exit condition that does not apply to LaTeX environments.
2023-07-18 23:27:48 -04:00
Tom Alexander
0d6f6288c9
Support escaping backslash in sexp. 2023-07-18 23:08:58 -04:00
Tom Alexander
a817eefce7
Add form 6 of LaTeX fragment. 2023-07-18 22:39:05 -04:00
Tom Alexander
4f5c40cd4b
Add forms 4 and 5 of LaTeX fragment. 2023-07-18 22:21:52 -04:00
Tom Alexander
faf81d0143
Add forms 2 and 3 of LaTeX fragment. 2023-07-18 22:02:38 -04:00
Tom Alexander
c79b8c7833
Implement the first form of LaTeX fragment. 2023-07-18 21:50:29 -04:00
Tom Alexander
5ad8fdf4b2
Add test cases. 2023-07-18 21:14:49 -04:00
Tom Alexander
3ab0dd4531
Create structure for LaTeX fragments. 2023-07-18 21:14:49 -04:00
Tom Alexander
754e9ff7d7
Implement entity parser. 2023-07-18 20:35:55 -04:00
Tom Alexander
21f46d09e6
Create structure for entities. 2023-07-18 20:05:39 -04:00
fluxcdbot
bab9232ebc CI: autofix rust code.
All checks were successful
semver Build semver has succeeded
rust-test Build rust-test has succeeded
rustfmt Build rustfmt has succeeded
2023-07-18 17:51:28 +00:00
fluxcdbot
0cd398c30c CI: autofix rust code.
Some checks failed
rustfmt Build rustfmt has failed
rust-test Build rust-test has succeeded
semver Build semver has succeeded
2023-07-18 17:48:21 +00:00
Tom Alexander
167ffa650c
Enable another test. 2023-07-14 20:58:11 -04:00
Tom Alexander
27d863b875
Fix the simple test by allowing bold to start/end with <> and by capturing trailing whitespace from radio links. 2023-07-14 20:55:16 -04:00
Tom Alexander
e608b73d1a
Implement all-token iteration.
Some checks failed
rust-test Build rust-test has failed
Radio targets are now being properly detected and they trigger re-parses but the tests do not yet pass.
2023-07-14 20:45:31 -04:00
Tom Alexander
b27f911ff3
Finish implementing token iteration. 2023-07-14 20:24:06 -04:00
Tom Alexander
08e6efe5f5
Filling in more of the iter_tokens tree. 2023-07-14 20:18:30 -04:00
Tom Alexander
0e73b83bf3
Filling in more of the iter_tokens tree. 2023-07-14 20:09:24 -04:00
Tom Alexander
793e560bd5
Boxing made it work. 2023-07-14 19:57:27 -04:00
Tom Alexander
0073af19e2
Running into an issue returning different iterators from the same function. 2023-07-14 19:54:41 -04:00
Tom Alexander
688779ba40
Fix tests. 2023-07-14 19:09:54 -04:00
Tom Alexander
bd04451d58
Implement the second parsing pass. 2023-07-14 19:06:58 -04:00
Tom Alexander
cdd3517655
Include the trailing space for the bolds. 2023-07-14 18:32:16 -04:00
Tom Alexander
7ca8beac5a
Allow matching bolds in radio link targets. 2023-07-14 18:27:09 -04:00
Tom Alexander
4ba1e63dde
Add a test for bold inside a radio target. 2023-07-14 18:12:04 -04:00
Tom Alexander
e4c6ca2880
Add tracing.
Some checks failed
rust-test Build rust-test has failed
2023-07-14 18:05:31 -04:00
Tom Alexander
b9a7c3f7f3
Fix lifetime issue. 2023-07-14 18:04:01 -04:00
Tom Alexander
4966b02b79
Expanded rematch_target to 3 lifetimes, no fix. 2023-07-14 17:45:20 -04:00
Tom Alexander
ddaefdbf78
Nearly done implementing re-matching of bold, but running into a lifetime issue. 2023-07-14 17:37:46 -04:00
Tom Alexander
e5c1b68b0e
Add a basic test showing the radio link rematching working on plain text.
Some checks failed
rust-test Build rust-test has failed
2023-07-14 16:51:23 -04:00
Tom Alexander
66ae70e790
Implement the rematch target parser. 2023-07-14 16:32:52 -04:00
Tom Alexander
0014dfc21f
Implement the radio link parser.
The parser depends on the rematch_target parser which is not yet implemented.
2023-07-14 16:18:04 -04:00
Tom Alexander
c44e7d642f
Starting code for iterating over the parsed ast. 2023-07-14 12:28:52 -04:00
Tom Alexander
3fc3ba58aa
Defining the RadioTarget context element. 2023-07-14 12:28:52 -04:00
Tom Alexander
22bb42882b
Implement rematch for plain text. 2023-07-14 12:28:51 -04:00
Tom Alexander
397083c658
Define a RematchObject trait for matching radio links based on radio targets. 2023-07-14 12:28:51 -04:00
fluxcdbot
57ac625350 CI: format rust code.
All checks were successful
semver Build semver has succeeded
rustfmt Build rustfmt has succeeded
rust-test Build rust-test has succeeded
2023-07-14 04:28:56 +00:00
Tom Alexander
cdd813fbe6
First implementation of macro. 2023-07-14 00:20:32 -04:00
Tom Alexander
d24c26de7b
Create structure for org macros. 2023-07-13 23:30:06 -04:00
Tom Alexander
d353c1623a
Implement the angle link parser. 2023-07-13 23:02:12 -04:00
Tom Alexander
178221a0a2
Update plain link to allow for exit matchers to trigger during matching. 2023-07-13 22:54:59 -04:00
Tom Alexander
ed8b1405db
Create structure for angle links. 2023-07-13 22:42:42 -04:00
Tom Alexander
475e25ba8e
Add a TODO.
Some checks failed
semver Build semver has succeeded
cargo-fmt Build cargo-fmt has succeeded
build-organic-test Build build-organic-test has succeeded
build-cargo-fmt Build build-cargo-fmt has succeeded
organic-test Build organic-test has failed
2023-07-13 19:33:38 -04:00
fluxcdbot
999c992bdf CI: format rust code.
Some checks failed
semver Build semver has succeeded
cargo-fmt Build cargo-fmt has succeeded
build-organic-test Build build-organic-test has failed
organic-test Build organic-test has failed
build-cargo-fmt Build build-cargo-fmt has succeeded
2023-07-13 23:22:10 +00:00
Tom Alexander
5f4e240af0
Add an initial implementation of PlainLink. 2023-07-13 19:20:17 -04:00
Tom Alexander
59f061ecca
Define pre and post matchers for plain link.
All checks were successful
organic-test Build organic-test has succeeded
2023-07-13 18:30:18 -04:00
Tom Alexander
dcec5c490a
Create structure for plain links.
All checks were successful
organic-test Build organic-test has succeeded
2023-07-13 18:18:07 -04:00
Tom Alexander
ec889bc868
Clean up old unused code. 2023-04-24 20:25:49 -04:00
Tom Alexander
a5585eb01f
Add a not yet implemented function.
This helps when creating new parsers since todo!()s will panic the whole parser.
2023-04-24 20:11:13 -04:00
Tom Alexander
6ed33d3522
Derive partial eq for all objects so we can match radio links. 2023-04-24 19:25:22 -04:00
Tom Alexander
fec7d51f75
Implement radio targets. 2023-04-24 19:18:38 -04:00
Tom Alexander
64c17e654a
Code structure for radio links and radio targets. 2023-04-24 19:06:45 -04:00
Tom Alexander
bc8e640574
Make plain text exit condition not an exit matcher.
I think this condition needs to not exist deeper down the tree.
2023-04-24 18:08:28 -04:00
Tom Alexander
b2ee44ec09
Simplify the implementation of plain text. 2023-04-24 17:58:10 -04:00
Tom Alexander
90a47b7b49
Exit text markup if the parent exit matcher is triggering. 2023-04-24 17:16:07 -04:00
Tom Alexander
ed174c1c41
Fix nested bolds child eating the parent exit. 2023-04-24 16:48:33 -04:00
Tom Alexander
f9d83ee09d
Consume trailing whitespace for links. 2023-04-24 16:29:19 -04:00
Tom Alexander
b2b1e9272c
Format. 2023-04-24 16:19:48 -04:00
Tom Alexander
28759edb3b
Remove unused imports. 2023-04-24 16:19:29 -04:00
Tom Alexander
87be28ed15
Fix matching of description in links. 2023-04-24 16:05:46 -04:00
Tom Alexander
b4d4453186
Just doing a simple match everything for path reg. 2023-04-23 17:37:35 -04:00
Tom Alexander
8a828195bd
Implement all of regular link except for pathreg. 2023-04-23 16:53:02 -04:00
Tom Alexander
3600f46e3b
Initial code structure for regular links. 2023-04-23 16:17:52 -04:00
Tom Alexander
f1bd7f2d1b
Add support for rust-coreutils in integration test script. 2023-04-23 16:12:34 -04:00
Tom Alexander
1044625acb
Clean up import. 2023-04-22 22:58:10 -04:00
Tom Alexander
9968aedd74
Make sure text markup doesn't have interior spaces. 2023-04-22 22:34:37 -04:00
Tom Alexander
f964481544
Switch to using plain text with no additional exit matcher added. 2023-04-22 22:06:34 -04:00
Tom Alexander
208e2cfe87
Clean up imports. 2023-04-22 21:51:53 -04:00
Tom Alexander
0ca6ce504f
Simulate trailing whitespace in empty greater blocks just like drawers. 2023-04-22 21:45:18 -04:00
Tom Alexander
4d4d30c597
Simulate trailing whitespace in empty dynamic blocks just like drawers. 2023-04-22 21:43:11 -04:00
Tom Alexander
cade02eb72
Make the empty drawer honor an immediate exit condition. 2023-04-22 21:39:46 -04:00
Tom Alexander
189edaa24a
Simulate the trailing whitespace capture for empty drawer. 2023-04-22 21:25:46 -04:00
Tom Alexander
62c226fb47
Fix matching only the specific markup. 2023-04-22 21:01:29 -04:00
Tom Alexander
e6c5670a85
Support string-based text markup (code and verbatim). 2023-04-22 20:57:30 -04:00
Tom Alexander
036f4add4a
The object parsers separated out. 2023-04-22 20:48:01 -04:00
Tom Alexander
d2fc8a513f
Separate out the text markup types into their own types. 2023-04-22 20:22:07 -04:00
Tom Alexander
fab4ce0544
Fix a warning. 2023-04-22 20:04:35 -04:00
Tom Alexander
b6233811c3
Fix the implementation of post. 2023-04-22 20:02:51 -04:00
Tom Alexander
a4cce121c0
Add an exit matcher to plain text. 2023-04-22 19:46:27 -04:00
Tom Alexander
9a3bde0d80
First attempt at text markup. 2023-04-22 19:34:13 -04:00
Tom Alexander
0b3f414ecf
Get tracing back into the element parser. 2023-04-22 19:15:29 -04:00
Tom Alexander
f70babdcf4
Get tracing back into the latex environemtn end parser. 2023-04-22 19:12:48 -04:00
Tom Alexander
c0809cce10
Starting to parse text markup. 2023-04-22 19:06:48 -04:00
Tom Alexander
538031c688
Call the text markup parser. 2023-04-22 18:54:19 -04:00
Tom Alexander
2ac0449630
Unquote the text. 2023-04-22 18:18:13 -04:00
Tom Alexander
b3e182d7fe
Plain text compare not yet working because the text is quoted from the sexp. 2023-04-22 17:58:16 -04:00
Tom Alexander
e7a08775eb
First stab at latex environment parser. 2023-04-22 17:12:49 -04:00
Tom Alexander
4816a5dfc4
Code structure for latex environment. 2023-04-22 16:56:36 -04:00
Tom Alexander
fee9166741
Remove a TODO. 2023-04-22 01:45:54 -04:00
Tom Alexander
9861084afe
Cleanup. 2023-04-22 01:45:38 -04:00
Tom Alexander
92ee59558b
Remove unused import. 2023-04-22 01:36:43 -04:00
Tom Alexander
af90ea6dfd
Fix infinite loop by only checking paragraph matcher when boolean is true.
Before I was checking afterwards with a verify, which was causing an infinite loop.
2023-04-22 01:34:34 -04:00
Tom Alexander
7855020927
Fix some errors. 2023-04-22 01:13:05 -04:00
Tom Alexander
ba74bb58bb
Separate out calls to build element parser. 2023-04-22 01:08:45 -04:00
Tom Alexander
4ac6d89311
Moving towards unifying into a single parameterized element matcher.
This is to give paragraph priority over keyword in parsing so that affiliated keywords for paragraphs will be parsed as such.
2023-04-22 00:55:31 -04:00
Tom Alexander
fef5841713
Identify a problem. 2023-04-22 00:23:16 -04:00
Tom Alexander
fbdf40fed0
Fix failing tests that were relying on the captured trailing whitespace. 2023-04-22 00:19:01 -04:00
Tom Alexander
9b66929c14
Update test to use elements to capture the trailing whitespace. 2023-04-22 00:14:41 -04:00
Tom Alexander
7b7779ee7e
Set the source using the full range of affiliated keywords to trailing whitespace. 2023-04-22 00:09:14 -04:00
Tom Alexander
0b989b53a6
Fix warnings. 2023-04-21 23:55:18 -04:00
Tom Alexander
e97cf6630f
Move consuming the trailing whitespace up to the element matchers. 2023-04-21 23:54:54 -04:00
Tom Alexander
7df899e3a7
Read affiliated keywords. 2023-04-21 23:36:38 -04:00
Tom Alexander
29c03c6655
Disallowing begin blocks for keywords makes some of the tests pass. 2023-04-21 22:49:00 -04:00
Tom Alexander
ee126d2673
Allow empty keywords. 2023-04-21 22:44:13 -04:00
Tom Alexander
7139fce48d
Implement the keyword parser. 2023-04-21 22:36:21 -04:00
Tom Alexander
f0bab39778
Code structure for keyword. 2023-04-21 22:33:10 -04:00
Tom Alexander
bfffde3fdb
Implement the horizontal rule parser. 2023-04-21 22:23:59 -04:00
Tom Alexander
8294832717
Implement fixed width area. 2023-04-21 22:11:06 -04:00
Tom Alexander
5ae8ac61e5
Code structure for fixed width area. 2023-04-21 22:04:22 -04:00
Tom Alexander
db948d6286
Implement a planning parser. 2023-04-21 21:54:08 -04:00
Tom Alexander
f5099356a1
Add support for parsing the planning element in sections. 2023-04-21 21:39:26 -04:00
Tom Alexander
2ec1d4f855
Add the code structure for planning. 2023-04-21 21:33:23 -04:00
Tom Alexander
798eeee488
Add a test for sexp with quoted atom containing parenthesis. 2023-04-21 21:15:18 -04:00
Tom Alexander
38cd62af33
Add in better error reporting. 2023-04-21 20:59:16 -04:00
Tom Alexander
6e406d71b6
Introduce a sexp_with_padding parser. 2023-04-21 20:53:55 -04:00
Tom Alexander
7de72cab23
Move the sexp parser into the parser crate.
We need to parse sexp for diary sexp.
2023-04-21 20:32:51 -04:00
Tom Alexander
9d5b078c64
Opening of diary sexp. 2023-04-21 20:26:49 -04:00
Tom Alexander
db78faa36f
Add the code structure for diary sexp. 2023-04-21 20:22:31 -04:00
Tom Alexander
ad27f34620
Add parsers for inactive timestamp range duration and inactive timestamp. 2023-04-21 19:21:42 -04:00
Tom Alexander
a947ab0955
First stab at clock parser. 2023-04-21 19:14:41 -04:00
Tom Alexander
c2ccf4da37
Set up the initial code structure for the clock. 2023-04-21 19:05:30 -04:00
Tom Alexander
18323a2b43
Solve the rest of the compiler warnings. 2023-04-21 18:42:31 -04:00
Tom Alexander
a1724dae52
Combine the error types. 2023-04-21 18:36:01 -04:00
Tom Alexander
04dfffc000
Cleaning up compiler warnings. 2023-04-21 18:22:17 -04:00
Tom Alexander
6fce666983
Add test case for invalid src block. 2023-04-21 18:13:23 -04:00
Tom Alexander
cdcaae11c4
Add tests for broken export blocks. 2023-04-21 18:11:26 -04:00
Tom Alexander
fa4766b64e
Add comments about data parameter in lesser blocks. 2023-04-21 18:08:10 -04:00
Tom Alexander
1006576a69
Modernize the verse block parser. 2023-04-21 18:01:06 -04:00
Tom Alexander
dbb04dcba6
Defining new structs for each type of lesser block. 2023-04-21 17:55:10 -04:00
Tom Alexander
cf6c4bc122
Write a parser specifically for comment lesser blocks. 2023-04-21 17:32:53 -04:00
Tom Alexander
86e0833033
Make the end check work with multiple block names using allocation. 2023-04-21 17:16:57 -04:00
Tom Alexander
f3393417bb
Parameterize lesser_block_end.
Only works with static strings right now.
2023-04-21 17:11:27 -04:00
Tom Alexander
47844caa5c
A first stab at lesser blocks. 2023-04-21 16:58:38 -04:00
Tom Alexander
0293ca6b12
Set up code structure for lesser blocks. 2023-04-21 16:31:25 -04:00
Tom Alexander
142bb09879
Move the impl of Source to the same file as the definition of the struct. 2023-04-21 16:16:14 -04:00
Tom Alexander
d780981baf
Separate out the element parsers. 2023-04-21 16:10:56 -04:00
Tom Alexander
54b02f4e74
Give object structs their own file separate from the parsers. 2023-04-21 16:07:38 -04:00
Tom Alexander
c2b6b5103a
Add comments about the sets of objects that can exist. 2023-04-21 15:57:45 -04:00
Tom Alexander
0fcfdd5ff2
Compare table row and table cell bounds. 2023-04-21 15:45:35 -04:00
Tom Alexander
a63d38e0ce
Consume line endings at the end of table rows. 2023-04-21 15:38:42 -04:00
Tom Alexander
f0d2754955
Consume the end of the cell. 2023-04-21 15:36:45 -04:00
Tom Alexander
c971148871
Running into an error running the tracer. 2023-04-21 14:54:29 -04:00