Commit Graph

1278 Commits

Author SHA1 Message Date
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
f170a557ed
Use character offsets in diff. 2023-08-29 21:49:16 -04:00
Tom Alexander
eaa38ce772
Include an error message for failed bounds checking.
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 21:27:54 -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
ac313d093e
Improve error handling in compare. 2023-08-29 14:20:53 -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
45e16fea2d
Honor the NO_COLOR environment variable.
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:25:39 -04:00
Tom Alexander
5134cece7b
Add color to compare output.
All checks were successful
rust-test Build rust-test has succeeded
rust-build Build rust-build has succeeded
rustfmt Build rustfmt has succeeded
2023-08-25 04:09:52 -04:00
Tom Alexander
19432d91ab
Get the emacs and org-mode versions when launching the compare script.
All checks were successful
rust-build Build rust-build has succeeded
rustfmt Build rustfmt has succeeded
rust-test Build rust-test has succeeded
2023-08-25 03:11:19 -04:00
Tom Alexander
16a107eebb
Update org-mode version. 2023-08-25 02:56:28 -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
65b87bd65d
Merge remote-tracking branch 'input/main' into wrapped_input 2023-08-22 22:26:55 -04:00
Tom Alexander
5a7f34b63e
Prepare for merging into Organic. 2023-08-22 22:24:35 -04:00
Tom Alexander
edff1e089d
Implement text since line break. 2023-08-22 22:18:44 -04:00
Tom Alexander
bc29f1dfc0
Add slicing tests. 2023-08-22 21:38:50 -04:00
Tom Alexander
e4656cddf6
Implement slice, take, and compare. 2023-08-22 21:25:13 -04:00
Tom Alexander
1e3dadd458
Wrap the input. 2023-08-22 17:24:26 -04:00
Tom Alexander
2ec055af5a
Very simple setup. 2023-08-22 17:22:13 -04:00
Tom Alexander
6823db5c60
Initial commit. 2023-08-22 17:11:45 -04:00
Tom Alexander
655af88cdf
Add scripts for running perf and callgrind. 2023-08-22 14:21:27 -04:00
Tom Alexander
2cd6f736c2
Fix building without compare feature.
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-17 00:13:25 -04:00
fluxcdbot
5686256039 CI: autofix rust code.
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 04:05:48 +00: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
74f4aa8d33
Remove dependency on files for running compare.
The tests still use files since they get the test name from a file but compare does the same action via stdin so it can operator on any org source.
2023-08-16 23:56: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
823c33ef8e
Reduce use of expect in main.rs 2023-08-16 16:37:14 -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
dae46adc12
Feature-gate tracing import.
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-14 23:33:38 -04:00
Tom Alexander
63d092c83d
Group the two traces per compare into one trace. 2023-08-14 22:10:58 -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
2bcc3f0599
Fix reporting of jaeger traces when diff does not match.
The early exit was causing some traces to not be reported.
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
72b8fec1be
Add support for tracing in run_docker_compare.bash. 2023-08-14 16:12:31 -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
290a700a22
New, updated opentelemetry tracing exporter. 2023-08-10 23:27:15 -04:00
Tom Alexander
44ad6753ca
Fix feature gating the compare code. 2023-08-10 20:22:34 -04:00
Tom Alexander
cd1b4ba785
Make the tracing macros optional. 2023-08-10 20:22:34 -04:00
Tom Alexander
1f10d3d064
Disable all the old tracing stuff. 2023-08-10 20:22:34 -04:00
Tom Alexander
77de97703f
Remove all the old references to "toy language"
This is a relic from the early development days in this repo. When I first started this repo, it was a clean-slate playground to test ideas for solving the road blocks I hit with my previous attempt at an org-mode parser. To keep things simple, I originally only had a very basic set of syntax rules that only vaguely looked similar to org-mode. Once I had things figured out, I kept developing in this repo, morphing it into a full org-mode parser. A couple of references to those early days still remained, and this patch should get rid of the last of them.
2023-08-10 18:52:57 -04:00
Tom Alexander
66c71e7e40
Switch the compiled bin to running a diff just like the automated tests.
This is mostly so I can test a variety of org-mode documents without needing to integrate them into the org samples folder.
2023-08-10 18:46:19 -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
fluxcdbot
efa56a6bef
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-24 16:57:08 -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
0fc3bb0245
Compare text length for plain text in the diffing. 2023-04-24 18:21:38 -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
37b91d171d
Compare the objects in heading titles when diffing the asts. 2023-04-22 22:56:36 -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
77f2d23036
Switch back to org-mode for the parsing binary. 2023-04-21 21:18:30 -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
517e826f4e
Demonstrating the problem. 2023-04-21 21:01:26 -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
2d4a592846
Expose the parser module instead of re-exporting all of its contents. 2023-04-21 19:05:30 -04:00
Tom Alexander
8420af7f1d
Put compare modules behind feature flag in library. 2023-04-21 18:50:52 -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
f5218a6c31
Implement comparing the lesser blocks. 2023-04-21 18:05:40 -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
d2fe100435
Change the binary to use the library.
Mostly just hoping this make rust-analyzer happier.
2023-04-21 15:28:46 -04:00
Tom Alexander
5225290156
Disable the env filter because I am running into errors. 2023-04-21 15:25:19 -04:00
Tom Alexander
c971148871
Running into an error running the tracer. 2023-04-21 14:54:29 -04:00
Tom Alexander
c75f4ebcff
Format the code. 2023-04-21 14:35:34 -04:00
Tom Alexander
633d6e421f
Allow empty cells if not last of line. 2023-04-20 00:15:40 -04:00
Tom Alexander
49f5b65acf
Match objects in cells. 2023-04-19 22:09:53 -04:00
Tom Alexander
55201e905a
Starting to implement table cell. 2023-04-19 21:57:08 -04:00
Tom Alexander
9747e0ba11
Implement table row rule. 2023-04-19 21:28:35 -04:00
Tom Alexander
093edf5c6e
Add TODO. 2023-04-19 21:21:33 -04:00
Tom Alexander
f3c1b47a8a
First attempt at table parser. Table row not yet implemented. 2023-04-19 21:19:49 -04:00
Tom Alexander
17ab8727d1
Initial structure for tables. 2023-04-19 20:59:58 -04:00
Tom Alexander
1badd3b0fc
Add TODO about a bug. 2023-04-19 19:56:21 -04:00
Tom Alexander
7728f3b71e
Fix property drawers beneath headlines. 2023-04-19 19:53:37 -04:00
Tom Alexander
87bdedf2e6
Only drop trailing whitespace when there isn't a property drawer. 2023-04-19 19:39:56 -04:00
Tom Alexander
d0410391cc
Drop blank lines after property drawer instead of owning them. 2023-04-19 19:28:21 -04:00
Tom Alexander
4e65d2cda9
Fix requiring no space between comment and property drawer for zeroth section. 2023-04-19 19:22:23 -04:00
Tom Alexander
603cc131a0
Numerous fixes to property drawers. 2023-04-19 19:03:51 -04:00
Tom Alexander
b557b9ca5d
Accounting for the blank lines at the head of documents and comments plus property drawer at the head of the zeroth section. 2023-04-19 18:37:39 -04:00
Tom Alexander
1deb53f1a3
Add the binary back in because we need it for generating jaeger traces. 2023-04-19 18:12:53 -04:00
Tom Alexander
99677ee98e
fixup 2023-04-19 18:10:55 -04:00
Tom Alexander
8de6f1a817
Implement node property. 2023-04-19 18:10:29 -04:00
Tom Alexander
f7f29e7a56
Finish property drawer parser but node property is unstarted. 2023-04-19 17:15:00 -04:00
Tom Alexander
2137b08e42
Detect the opening and build the context. 2023-04-19 17:03:46 -04:00
Tom Alexander
18f8e2562e
Remove the old toy language binary.
Using the org_mode_samples integration tests through the rust test framework has removed the need for the toy language binary and I think removing it will make rust-analyzer less confused about imports. This repository is now solely a library repository.
2023-04-19 16:54:17 -04:00
Tom Alexander
a267f23e0f
Initial code structure for property drawers. 2023-04-19 16:51:00 -04:00
Tom Alexander
d3bb642a10
Unify status name handling on the emacs name. 2023-04-19 16:04:30 -04:00
Tom Alexander
94193d4fa5
Make name mismatch report an error rather than abort everything. 2023-04-19 15:38:36 -04:00
Tom Alexander
a6d8c873d4
Add an assert_bounds utility function. 2023-04-19 15:29:46 -04:00
Tom Alexander
a4c6e899ac
Add a utility function to check the first element in an sexp. 2023-04-19 15:19:21 -04:00
Tom Alexander
7ac0cee223
Support nesting greater blocks of different names. 2023-04-19 15:00:02 -04:00
Tom Alexander
2b08b52c16
Support drawers with only whitespace. 2023-04-19 14:52:31 -04:00
Tom Alexander
c6fd04e9ce
Fix footnote definition end matcher detecting the next footnote definition. 2023-04-19 14:30:02 -04:00
Tom Alexander
ed8cdae1cd
Add diff code for dynamic blocks. 2023-04-19 13:59:17 -04:00
Tom Alexander
cab5ba70e5
Parser for dynamic blocks. 2023-04-19 13:51:18 -04:00
Tom Alexander
0d07a6aad3
Initial structure for dynamic blocks. 2023-04-19 13:30:15 -04:00
Tom Alexander
d69522c7dc
Remove the compare binary since this is now integrated with the tests. 2023-04-19 00:12:14 -04:00
Tom Alexander
72c8da94a3
Hook the integration tests into rust's test framework.
Instead of using a hacked-together shell script, use rust's test framework to do the comparison.
2023-04-18 23:50:58 -04:00
Tom Alexander
400e253cf1
Don't give paragraph a context since it just contains objects. 2023-04-18 22:18:21 -04:00
Tom Alexander
45d0ce17c3
Do not allow elements to immediately nest inside themselves.
Plain list is omitted because they can nest.
2023-04-18 22:10:44 -04:00
Tom Alexander
13a2ba1dc5
Handle greater blocks with only blank space inside them. 2023-04-18 21:28:22 -04:00
Tom Alexander
a2051aca4f
Remove ChainBehavior. 2023-04-18 20:44:58 -04:00
Tom Alexander
35eff51d1b
First implementation moving over to the new exit matcher class system. 2023-04-18 20:33:01 -04:00
Tom Alexander
fcd5c7d3cd
Add an enum for exit class. 2023-04-17 21:16:39 -04:00
Tom Alexander
31f6914194
Add code to compare drawers. 2023-04-15 18:00:34 -04:00
Tom Alexander
9e4bf553d3
First attempt at implementing drawers. 2023-04-15 17:56:07 -04:00
Tom Alexander
1f7c24545b
Initial structure for drawer. 2023-04-15 17:36:07 -04:00
Tom Alexander
50d05b99be
Require space after hash in comment if comment line is not empty. 2023-04-15 17:08:22 -04:00
Tom Alexander
6e4aa38fce
Add test demonstrating problem. 2023-04-15 17:04:47 -04:00
Tom Alexander
4e460e4a8c
Consume line ending in comments. 2023-04-15 16:59:30 -04:00
Tom Alexander
33bc1af17d
First stab at implementing comments. 2023-04-15 16:53:58 -04:00
Tom Alexander
d1a7d0b835
Show that trailing whitespace belongs to comments. 2023-04-15 16:37:25 -04:00
Tom Alexander
26e0ad5800
Add an example exploring indentation with comments. 2023-04-15 16:36:11 -04:00
Tom Alexander
1b10b197f2
Initial structure for adding support for comments. 2023-04-15 16:31:38 -04:00
Tom Alexander
965c5dd15f
Add diffing of quote greater blocks. 2023-04-15 00:07:20 -04:00
Tom Alexander
412bdcda28
Fix problem with detecting end of plain list item.
The problem is line indented lte does not match because we aren't consuming the whitespace that the plain list would consume.
2023-04-14 23:56:55 -04:00
Tom Alexander
be64eb92af
Ran into a bigger issue. 2023-04-14 20:17:53 -04:00
Tom Alexander
8549a6b0db
Fix case where indentation was causing the plain list item matcher to match items it wouldn't use in other parts. 2023-04-14 19:56:54 -04:00
Tom Alexander
143ac49777
Fix plain list item parser to not consume trailing whitespace on the last element. 2023-04-14 19:32:08 -04:00
Tom Alexander
08fed1301e
Fix plain list parser to not consume trailing whitespace on the last item. 2023-04-14 19:24:05 -04:00
Tom Alexander
665c1d70fb
Add a test case demonstrating an issue. 2023-04-12 15:24:18 -04:00
Tom Alexander
9efc291d28
Add a script to check all sample org-mode documents with the compare program. 2023-04-12 15:03:14 -04:00
Tom Alexander
1a38ca43d6
Update the diff program to use exit code 1 for non-matching diff. 2023-04-12 14:50:56 -04:00
Tom Alexander
05c9ec86b8
Compare plain list items inside plain lists. 2023-04-12 14:07:33 -04:00
Tom Alexander
57f56eb860
Compare footnote definition and greater block bounds. 2023-04-12 13:45:22 -04:00
Tom Alexander
ba9ef7907f
Add a test proving that nested lists are exited by two blank lines. 2023-04-12 13:21:31 -04:00
Tom Alexander
75a47deedd
Compare plain list bounds. 2023-04-12 13:16:25 -04:00
Tom Alexander
f27965001d
End plain lists when there are two blank lines. 2023-04-12 13:09:44 -04:00
Tom Alexander
2a601475fd
Compare children of sections. 2023-04-12 11:46:49 -04:00
Tom Alexander
c4e6549feb
Compare children of heading. 2023-04-12 11:35:02 -04:00
Tom Alexander
4dbf8b9c69
Capture the trailing whitespace for the file as regular trailing whitespace for elements.
This makes our ranges for sections and headlines match up with the emacs org-mode parser for the example at org_mode_samples/sections_and_headings/sections_and_headings.org.
2023-04-12 11:17:21 -04:00
Tom Alexander
a456acd1e9
Do not print the parsed sexp.
These were particularly spammy.
2023-04-11 19:51:20 -04:00
Tom Alexander
52df376553
Calculate bad children on-the-fly. 2023-04-11 19:28:45 -04:00
Tom Alexander
52b401d548
comparing begin and end offsets for top-level sections and headlines. 2023-04-11 19:16:04 -04:00
Tom Alexander
276e8abb13
Pass the source through to child diff status so I can calculate offsets. 2023-04-11 18:34:11 -04:00
Tom Alexander
6e62bd5ff2
Initial return and printing of tree diff output. 2023-04-11 18:29:40 -04:00
Tom Alexander
be2d0141a5
Iterate over argv for file paths. 2023-04-11 17:41:23 -04:00
Tom Alexander
287cc8dea3
Just barely starting to diff the two parsed forms. 2023-04-11 17:35:09 -04:00
Tom Alexander
5305ae7627
Fix ending atoms at end of list. 2023-04-11 16:28:56 -04:00
Tom Alexander
8df02fa8b9
Handle text with properties. 2023-04-11 16:02:57 -04:00
Tom Alexander
3bdb1e3841
Beginning of handling quoted strings. 2023-04-11 15:28:05 -04:00
Tom Alexander
5d7ca1b966
Fix handling of whitespace. 2023-04-11 15:08:46 -04:00
Tom Alexander
751a3beffd
Implement a very basic first stab at lisp parser. 2023-04-11 14:50:37 -04:00
Tom Alexander
96d2cc7c6a
Dump the elisp when running compare. 2023-04-10 14:36:38 -04:00
Tom Alexander
552ac974d5
Initial setup for a separate compare target. 2023-04-10 13:45:36 -04:00
Tom Alexander
1ecdd61fed
Do not consume trailing whitespace if the parent exit matcher is matching. 2023-04-10 13:13:11 -04:00
Tom Alexander
895ee9f3b6
Add a test showing the footnote exit matcher is not handling multiple blank lines properly. 2023-04-10 12:16:49 -04:00
Tom Alexander
6fdd613bed
Cleanup. 2023-04-10 12:13:31 -04:00
Tom Alexander
9c832053d4
Remove parent exit matcher check from section.
This was poorly thought out and causing exit due to the no exit error.
2023-04-10 12:08:03 -04:00
Tom Alexander
ea753ad33c
Fix footnote definition end matcher to use trailing whitespace. 2023-04-10 12:03:01 -04:00
Tom Alexander
6578ddc100
Add a test for footnote definition. 2023-04-10 11:54:05 -04:00
Tom Alexander
e5bc4cb14b
Footnote definitions are parsing on their own. 2023-04-10 11:50:43 -04:00
Tom Alexander
45db182421
Add comment about why we are not checking the parent exit matcher in paragraph. 2023-04-10 11:34:29 -04:00
Tom Alexander
df9265c2af
Updated paragraph to handle the new consumption of trailing whitespace. 2023-04-10 11:29:14 -04:00
Tom Alexander
e417e86bd4
Add a simple test for paragraphs. 2023-04-10 11:24:04 -04:00
Tom Alexander
204f319a92
Simplify headline_end and section_end now that eof is a special case. 2023-04-10 11:19:20 -04:00
Tom Alexander
cbe7ef4030
Update the section parser to handle the new whitespace-included element parsers. 2023-04-10 11:16:32 -04:00
Tom Alexander
54b0ff5036
Check for whitespace eof in exit matcher. 2023-04-10 10:50:42 -04:00
Tom Alexander
137815dbaf
Only use a local context when checking exit matchers.
This prevents context tree from deeper in the parse impacting exit checks for earlier in the parse. This is needed due to the trailing whitespace context element.
2023-04-10 10:49:28 -04:00
Tom Alexander
9a0172e1a4
Add a context element for tracking whether or not elements should consume their trailing whitespace. 2023-04-10 10:36:16 -04:00
Tom Alexander
6813c7c991
Identified the problem as being the handling of the trailing whitespace. 2023-04-10 09:49:24 -04:00
Tom Alexander
716f80b0ec
Add initial implementation of footnote definition. 2023-04-07 17:14:44 -04:00
Tom Alexander
42fca12e41
Add support for indenting greater blocks. 2023-04-07 16:18:13 -04:00
Tom Alexander
7023fb4617
Add a comment about a shortcoming. 2023-04-03 19:40:20 -04:00
Tom Alexander
d7f0a02bb8
Fix plain list ending with another element. 2023-04-03 19:30:17 -04:00
Tom Alexander
9257420c83
Add comment defining problem. 2023-04-03 19:19:33 -04:00
Tom Alexander
ddea313401
Ensure the final span is shipped to jaeger before exiting. 2023-04-03 18:57:31 -04:00
Tom Alexander
d4887ec311
Disable stdout for traces.
Frankly the stdout traces are pretty useless if you have anything more than the most trivial amount of entries.
2023-04-03 18:52:11 -04:00
Tom Alexander
70225a668b
Do not match lesser blocks. 2023-04-03 18:38:35 -04:00
Tom Alexander
6e6ec56d1f
Basic implementation of greater block parser. 2023-04-03 18:33:07 -04:00
Tom Alexander
9e0bea4c3e
Starting the greater block source. 2023-04-03 17:36:56 -04:00
Tom Alexander
9ad428bb20
Standardize on the children name instead of contents. 2023-04-03 17:33:01 -04:00
Tom Alexander
11f127b545
Minor cleanup. 2023-04-03 17:25:30 -04:00
Tom Alexander
c7c922a4df
Do not allow plain lists to start with an asterisk with no indent. 2023-04-03 16:38:26 -04:00
Tom Alexander
b5b335b9b0
Fix handling of whitespace at the end of paragraphs and mandatory whitespace in list items. 2023-04-03 16:30:58 -04:00
Tom Alexander
2d1df18544
Cleanup. 2023-04-03 15:15:16 -04:00
Tom Alexander
2552ba28d1
Correctly parsing plain list items. 2023-04-03 15:06:12 -04:00
Tom Alexander
e681f8fdff
Remove the exit matcher block.
I'm not sure this is a problem, but while I'm debugging I want this removed to be safe.
2023-03-31 13:22:30 -04:00
Tom Alexander
2b0e88dc01
The current problem is plain_list_item_end is not taking into account depth. 2023-03-31 13:08:53 -04:00
Tom Alexander
68156f3667
Consume line break at the end of paragraph. 2023-03-31 11:42:04 -04:00
Tom Alexander
707eac5bf8
Move trailing whitespace parsing to a separate element.
I still need to parse the line break at the end of elements.
2023-03-31 11:16:37 -04:00
Tom Alexander
602cf4c374
Removing regurgitate calls.
This hacky solution ends up with whitespace getting captured twice so I will need to either use context or a separate parser.
2023-03-31 09:54:48 -04:00
Tom Alexander
775e703ade
Not sure whats going on. 2023-03-27 19:19:51 -04:00
Tom Alexander
9545990b52
Regurgitate seems to have made all text a paragraph. 2023-03-27 19:12:20 -04:00
Tom Alexander
3643f91bac
The current problem is whitespace at the end of a list item should not be consumed. 2023-03-27 18:50:25 -04:00
Tom Alexander
3d8fe253c9
Check for exit matcher between elements in a plain list item. 2023-03-27 18:22:08 -04:00
Tom Alexander
2c7a559869
Fix the line break consumption issue.
This leaves us with an issue of lists becoming needlessly nested.
2023-03-27 18:10:14 -04:00
Tom Alexander
028946ec90
Identified the problem.
The issue is plain text is eating the line break so paragraph is failing since it expects a line break at the end.
2023-03-27 18:08:17 -04:00
Tom Alexander
e1fbe36297
Exporting traces to jaeger. 2023-03-27 17:06:22 -04:00
Tom Alexander
cddefdb963
Remove unnecessary exit matcher check. 2023-03-27 16:53:38 -04:00
Tom Alexander
a77d2655bd
Instrument the code. 2023-03-27 16:36:43 -04:00
Tom Alexander
22a2ed29f1
Integrate plain list parser into the parser tree. 2023-03-27 13:06:41 -04:00
Tom Alexander
81a9a754de
I seem to have solved the infinite loop issue by moving the exit check into the plain list parser. 2023-03-27 12:52:49 -04:00
Tom Alexander
188fdaacbc
Remove dead line of code. 2023-03-27 12:07:40 -04:00
Tom Alexander
d2923bfc0f
Add a special case exit matcher for end of file. 2023-03-25 14:45:35 -04:00
Tom Alexander
fc9d131740
Add basic test for plain list item. 2023-03-25 14:28:48 -04:00
Tom Alexander
422535fbe4
Wrote a plain list item parser. 2023-03-25 14:23:52 -04:00
Tom Alexander
e6752b9d83
Building the plain list item context. 2023-03-25 14:10:22 -04:00
Tom Alexander
4a863e92ff
Add a test case showing only paragraphs exist on the first line for plain lists. 2023-03-25 13:25:20 -04:00
Tom Alexander
ab09edb5de
Initial structures for plain lists. 2023-03-25 13:16:28 -04:00
Tom Alexander
74fc440cbd
Move parsers for specific objects/elements to their own files.
The parsers are the most complicated part, so I want them in their own files. I am uncertain if I want to move their corresponding structs or just the parsers.
2023-03-25 12:53:57 -04:00
Tom Alexander
5d9771c3b6
Move old modules out of the src tree. 2023-03-25 12:25:05 -04:00
Tom Alexander
23eb4d01f4
Add title to heading object. 2023-03-25 12:18:47 -04:00
Tom Alexander
e3f6dd497a
Test cases showing headings handling nesting properly. 2023-03-25 12:01:50 -04:00
Tom Alexander
3a0a4c8953
Consume the trailing whitespace after a headline. 2023-03-25 11:59:19 -04:00
Tom Alexander
b65c2f86b5
Consume trailing whitespace in paragraphs. 2023-03-25 11:50:15 -04:00
Tom Alexander
faf2bb401d
Fix plain text matcher exit conditions. 2023-03-25 11:40:12 -04:00
Tom Alexander
2ab407bb83
Invoke the document parser. 2023-03-25 11:27:38 -04:00
Tom Alexander
3c26933e7f
Move some functions into util. 2023-03-25 11:25:10 -04:00
Tom Alexander
d582c8603a
Implement a basic paragraph parser. 2023-03-25 11:22:59 -04:00
Tom Alexander
b88365e7eb
Wrote plain text parser. 2023-03-25 10:45:43 -04:00
Tom Alexander
f2d16d302a
Implement document parser. 2023-03-24 17:34:56 -04:00
Tom Alexander
7ab3df6938
Use headline instead of heading for section_end.
This should be more performant.
2023-03-24 17:30:33 -04:00
Tom Alexander
8013f127df
Implement heading parser. 2023-03-24 17:19:46 -04:00
Tom Alexander
dc9f3eb2e6
Implement the section parser. 2023-03-24 17:00:27 -04:00
Tom Alexander
754c1922df
Create a start_of_line parser. 2023-03-24 16:37:34 -04:00
Tom Alexander
ceb7788cfa
Check the exit matcher in more places. 2023-03-23 20:12:42 -04:00
Tom Alexander
3502a31b28
Simple version of the headline parser done. 2023-03-23 20:03:45 -04:00
Tom Alexander
4f10f2abec
Solved the lifetime issue by using the standard many1 combinator. 2023-03-23 20:00:35 -04:00
Tom Alexander
02d04b59db
Ran into a lifetime issue. 2023-03-23 19:53:20 -04:00
Tom Alexander
5c8a064eca
Start writing the parser for headings. 2023-03-23 19:35:32 -04:00
Tom Alexander
d3c804942f
Simplified context_many1 based on the assumption that we will not use previous element context elements. 2023-03-23 18:25:00 -04:00
Tom Alexander
ee60cf40dd
Disable building the old combinator. 2023-03-23 18:01:33 -04:00
Tom Alexander
6042c44514
Starting to define document parser. 2023-03-23 17:59:39 -04:00
Tom Alexander
d98a11059c
Introduce the document structure. 2023-03-23 17:52:16 -04:00
Tom Alexander
35d60c10ba
Define greater and lesser elements. 2023-03-23 17:26:07 -04:00
Tom Alexander
66befc66a9
Define regular link. 2023-03-23 17:02:08 -04:00
Tom Alexander
87c4a955af
Starting to define objects based on org-mode's definitions. 2023-03-23 16:49:52 -04:00
Tom Alexander
36210c2d7f
Add a DocumentRoot context element storing the original full document.
This might be used for look-behind instead of storing previous element nodes in the context tree.
2023-03-23 16:40:39 -04:00
Tom Alexander
f060e7189b
Minor cleanup. 2023-03-23 14:13:21 -04:00
Tom Alexander
cee12b7512
Allow IgnoreParent to be dead code. 2023-03-21 13:44:22 -04:00
Tom Alexander
77d8c5e029
Mark the plain list functions as allow dead code. 2023-03-21 13:38:23 -04:00
Tom Alexander
2fcb445fe9
Switch to ending plain lists with 2 blank lines instead of just 1. 2023-03-21 13:36:52 -04:00
Tom Alexander
e3f0aaefdf
Add TODO. 2023-03-19 18:28:59 -04:00
Tom Alexander
bf3464c65c
End list items when the following line is indented less than or equal to the current item. 2023-03-19 13:05:37 -04:00
Tom Alexander
6d19eeb0f4
Add parsers for lines that are indented less than or equal to the current line item's indent. 2023-03-18 17:32:07 -04:00
Tom Alexander
29904f2bb5
Detect next list item as ender for current list item. 2023-03-18 14:36:33 -04:00
Tom Alexander
88c974f8e4
Record the list item indent depth in the context tree. 2023-03-18 13:26:35 -04:00
Tom Alexander
32897270a5
Support leading whitespace for list items. 2023-03-18 13:26:32 -04:00
Tom Alexander
37070689c6
Continued work on item parser.
Still needs to:

1. Do context things
2. Fix the double-space after the tag separator issue
3. Add support for indentation
4. Write item_end
5. Write plain_list
2022-12-18 07:52:02 -05:00
Tom Alexander
5e7c891681
Start of list item implementation. 2022-12-18 07:52:02 -05:00
Tom Alexander
62e5499150
Add parsers for most of the rest of item. 2022-12-18 07:52:02 -05:00
Tom Alexander
b4e28f3d4d
Implement a parser for a bullet in a list item. 2022-12-18 07:52:02 -05:00
Tom Alexander
76b2325486
Start the plain list module. 2022-12-18 07:52:01 -05:00
Tom Alexander
f39319702c
Switch to nom's consumed. 2022-12-18 07:52:01 -05:00
Tom Alexander
89758721ed
Rename contents to source to match objects that need to store a separate source. 2022-12-18 04:42:13 -05:00
Tom Alexander
448dcfac72
Create an also_recognize combinator to make providing source slices fast and safe. 2022-12-18 04:36:12 -05:00
Tom Alexander
60d9487fdf
Add comment. 2022-12-18 04:36:12 -05:00
Tom Alexander
f7de564deb
Add a source trait to ensure we can re-create the source document using the parsed objects. 2022-12-18 04:36:12 -05:00
Tom Alexander
50a67c65ef
Standardize order of lifetimes for r and s. 2022-12-18 03:30:36 -05:00
Tom Alexander
2def475337
Move the structs into the token module. 2022-12-18 03:24:35 -05:00
Tom Alexander
8211e1043f
Move in_section to a util module. 2022-12-18 03:18:43 -05:00
Tom Alexander
6404e5f50e
Cleanup 2022-12-18 03:15:11 -05:00
Tom Alexander
4ac3a47deb
Move the text element parser into the text module. 2022-12-18 03:15:11 -05:00
Tom Alexander
46672b40b2
Cleanup. 2022-12-18 03:04:31 -05:00
Tom Alexander
54ed989300
Move Res into the error type module. 2022-12-18 03:04:31 -05:00
Tom Alexander
a005502d97
Move another function inside bold that was only used by bold. 2022-12-18 02:55:14 -05:00
Tom Alexander
eaf8721ae9
Move paragraph to its own module. 2022-12-18 02:53:26 -05:00
Tom Alexander
7fc19cc9a6
Rename the parser for bold and link. 2022-12-18 02:39:29 -05:00
Tom Alexander
58f2f4e6aa
Move link to its own module. 2022-12-18 02:37:42 -05:00
Tom Alexander
0b35491047
Move bold out to its own module. 2022-12-18 02:30:24 -05:00
Tom Alexander
6352f92ebc
Rename nom context to parser context. 2022-12-18 02:16:28 -05:00
Tom Alexander
6caaeddc37
Update link to use the new contextual combinators like bold. 2022-12-18 02:05:21 -05:00
Tom Alexander
9eab737aa8
Add comment. 2022-12-16 01:39:57 -05:00
Tom Alexander
1da38c8f7d
Use context_many1 for paragraphs in a document. 2022-12-16 01:35:49 -05:00
Tom Alexander
601fc4776a
Have to rework the paragraph parser to return something that I'd want to put in a token, like a Paragraph struct. 2022-12-16 00:53:29 -05:00
Tom Alexander
6459cc64d0
I think thats all for context_many1. Just need to start using it. 2022-12-16 00:47:33 -05:00
Tom Alexander
1f1a18782e
Start of many1. 2022-12-16 00:21:13 -05:00
Tom Alexander
0504c48b66
Implement an iter_until. 2022-12-15 23:52:52 -05:00
Tom Alexander
0d2dfe3a14
Move context_many_till to its own combinators file. 2022-12-15 23:28:09 -05:00
Tom Alexander
c74b802038
Cleanup. 2022-12-15 23:23:03 -05:00
Tom Alexander
cd2daf6fef
Replace all TODOs wanting a custom error with a generic custom error. 2022-12-15 23:15:27 -05:00
Tom Alexander
a1adf2aa41
Custom error seems to be working. 2022-12-15 23:09:40 -05:00
Tom Alexander
f2e68612c4
Create a custom error enum to contain regular nom errors. 2022-12-15 22:57:08 -05:00
Tom Alexander
4a9bb31aed
Start of a custom error. 2022-12-15 22:38:28 -05:00
Tom Alexander
4c09c390fa
Prevent bold inside bold. 2022-12-15 21:57:21 -05:00
Tom Alexander
c6f75e1736
Don't increment Rc counters when checking exit matchers. 2022-12-15 21:30:53 -05:00
Tom Alexander
4af09a69a1
Rename fail matcher to exit matcher. 2022-12-15 21:24:53 -05:00
Tom Alexander
0c676c44c2
I need to prevent matching bold inside a bold. 2022-12-15 21:14:49 -05:00
Tom Alexander
b27be8eab1
Pass context into fail matchers. 2022-12-15 20:33:52 -05:00
Tom Alexander
23e567ca93
Add a comment with a note about what my next step is. 2022-12-11 02:31:14 -05:00
Tom Alexander
50a57ef15b
Check that there is blank space after the ending asterisk. 2022-12-11 02:24:19 -05:00
Tom Alexander
bb09ed41a4
Deciding if bold can start. 2022-12-11 02:07:12 -05:00
Tom Alexander
b6b88a7d78
Switch to using borrows instead of cloning the Rc during iteration. 2022-12-11 01:07:16 -05:00
Tom Alexander
cfdcb7408a
Implement iterator with far too many clones. 2022-12-11 01:04:51 -05:00
Tom Alexander
0bcc3d9dc6
Borrow the context instead of clone it for fewer reference count increments. 2022-12-11 00:39:35 -05:00
Tom Alexander
9dfca22b86
Switch to a contextual bold start function. 2022-12-11 00:36:59 -05:00
Tom Alexander
88bf1b3d8b
Update flat_bold to context_many_till. 2022-12-11 00:33:40 -05:00
Tom Alexander
972ffa6345
Add start of paragraph context. 2022-12-11 00:21:30 -05:00
Tom Alexander
b2742f89e2
Cleaning up. 2022-12-11 00:13:19 -05:00
Tom Alexander
103dcbea35
Add an assert. 2022-12-11 00:08:39 -05:00
Tom Alexander
7cb85fc8af
Implement two todo!()s. 2022-12-11 00:02:13 -05:00
Tom Alexander
fa1d845b76
Reverse the element order. 2022-12-10 23:57:39 -05:00
Tom Alexander
0aa8926d6b
OMFG it built. 2022-12-10 23:51:04 -05:00
Tom Alexander
7d40b8ae24
Attempt to put two lifetimes in the context. 2022-12-10 23:49:02 -05:00
Tom Alexander
75ab876b0b
Its building again. 2022-12-10 23:38:19 -05:00
Tom Alexander
7bed61a541
Lets try not digging into return type O. 2022-12-10 23:11:52 -05:00
Tom Alexander
a86ece4d02
Going down to one lifetime. 2022-12-10 22:57:30 -05:00
Tom Alexander
43fddc6e58
Re-adding 'r allowed me to remove dependency but adding in return tokens broke the build again. 2022-12-10 22:56:03 -05:00
Tom Alexander
24a8247907
Got rid of the 'r lifetimes without issue. 2022-12-10 22:31:28 -05:00
Tom Alexander
5b645c67e5
Uhhh fixed it by setting r to outlive x. I Don't know if that was correct. 2022-12-10 22:25:54 -05:00
Tom Alexander
ea63793b36
Start of attempt to return tokens. 2022-12-10 22:24:12 -05:00
Tom Alexander
a88117f731
Type issue with returning the elements. 2022-12-10 22:20:29 -05:00
Tom Alexander
2a595e2b6c
Implement ptr_eq on the context types. 2022-12-10 22:04:39 -05:00
Tom Alexander
7ba863118f
Only require a mutable borrow by using option's take(). 2022-12-10 21:36:22 -05:00
Tom Alexander
bb4b045aa8
pop_front implemented. 2022-12-10 21:27:33 -05:00
Tom Alexander
5899bde66e
Add comment of what I need to do. 2022-12-10 21:10:37 -05:00
Tom Alexander
1efe2efc41
Using many_elem twice is breaking the build. 2022-12-10 20:58:58 -05:00
Tom Alexander
95a043deef
Huh, managed to solve the lifetime issue using HRTB. Not sure if I should be changing the 'r at the end of the line. 2022-12-10 20:56:06 -05:00
Tom Alexander
e222b5a9df
Maybe we should switch to an owned context. 2022-12-10 20:53:37 -05:00
Tom Alexander
396813c70a
Two uses of context tree. 2022-12-04 00:53:59 -05:00
Tom Alexander
fb8a31a88f
I think I solved the clone issue by manually implementing clone since the Rc needs to be cloned, not the content inside it. 2022-12-04 00:04:39 -05:00
Tom Alexander
2db400198e
Going to try removing clone from the tokens. 2022-12-04 00:04:38 -05:00
Tom Alexander
b20568c09e
Clone issue. 2022-12-04 00:04:38 -05:00
Tom Alexander
96aca6b537
Switching to a new context variable. 2022-12-04 00:04:38 -05:00
Tom Alexander
c568920da8
Cleanup. 2022-12-04 00:04:38 -05:00
Tom Alexander
b15f299de8
Blindly followed the compiler's advice and it solved the build error. 2022-12-04 00:04:38 -05:00
Tom Alexander
8ae942a6fc
Remove unnecessary dynamic dispatch. 2022-12-04 00:04:38 -05:00
Tom Alexander
b17429e05c
Remove unnecessary wrapping. 2022-12-04 00:04:38 -05:00
Tom Alexander
ff65776607
Weird lifetime issue. 2022-12-04 00:04:37 -05:00
Tom Alexander
11cf24a500
Trying to switch to unbound matchers. 2022-12-04 00:04:37 -05:00
Tom Alexander
05b3ac1725
Starting an unbound matcher type to allow unbound matchers as parameters to context_many_till. 2022-12-04 00:04:37 -05:00
Tom Alexander
6cfc39ca45
Replace the old nom_context with the contents of new_context. 2022-12-04 00:04:37 -05:00
Tom Alexander
84fa1c3aae
Impleemnt the behavior for check_fail_matcher. 2022-12-04 00:04:37 -05:00
Tom Alexander
1a7bfd23f1
Implement the structure to the check_fail_matcher function. 2022-12-04 00:04:37 -05:00
Tom Alexander
13ee93f31c
It is building again. 2022-12-04 00:04:37 -05:00
Tom Alexander
83881e55b5
Omg lifetimes errors. 2022-12-04 00:04:36 -05:00
Tom Alexander
dff528da32
Implement clone for the context. 2022-12-04 00:04:36 -05:00
Tom Alexander
b91e4df797
Switch to a centrally-defined context type. 2022-12-04 00:04:36 -05:00
Tom Alexander
a3286b2542
Running into a FnOnce vs FnMut error. 2022-12-04 00:04:36 -05:00
Tom Alexander
bc91775880
Add the with_additional_node function to the ContextTree. 2022-12-04 00:04:36 -05:00
Tom Alexander
c0e51298b6
Port a lot of the function signatures over. 2022-12-04 00:04:36 -05:00
Tom Alexander
bdf3c98f34
Starting to move the org-mode specific context tree stuff over. 2022-12-03 20:47:31 -05:00
Tom Alexander
89148a623c
Move the list to its own file. 2022-12-03 20:38:56 -05:00
Tom Alexander
170ddec9a9
Starting a new context tree. 2022-12-03 20:30:03 -05:00
Tom Alexander
b9034147a6
wip 2022-12-03 19:38:04 -05:00
Tom Alexander
8608136124
Removed one wrapper. 2022-11-27 00:35:38 -05:00
Tom Alexander
7d25628f74
Same lifetime issue. 2022-11-27 00:21:34 -05:00
Tom Alexander
ec4078c812
Add a blank check_fail_matcher implementation. 2022-11-27 00:14:23 -05:00
Tom Alexander
15dedc8ee9
Add with_additional_fail_matcher. 2022-11-27 00:12:33 -05:00
Tom Alexander
a55b7c42fd
maybe working with dynamic dispatch. 2022-11-27 00:07:43 -05:00
Tom Alexander
a08fab1a8d
Remove hrtb attempt. 2022-11-27 00:02:57 -05:00
Tom Alexander
b8e3074a0e
with addition node not working. 2022-11-27 00:01:05 -05:00
Tom Alexander
7346f5e850
hrtb not working. 2022-11-26 23:56:03 -05:00
Tom Alexander
9673917a3c
get_fail_matcher implemented. 2022-11-26 23:35:10 -05:00
Tom Alexander
4a2b633f9c
Added traits for nodes and context elements. 2022-11-26 23:12:53 -05:00
Tom Alexander
f93f1c5950
Going to attempt the tree one more time. 2022-11-26 22:57:05 -05:00
Tom Alexander
2bb6f50cba
Start of working on enum. 2022-11-26 22:54:54 -05:00
Tom Alexander
f4473cbf01
Remove the new context tree implementation. 2022-11-26 22:37:00 -05:00
Tom Alexander
6e2ff8b870
Revert "Migrating to the new context tree."
This reverts commit c37008df1d41c36780c57054c3d0e0244478c8d5.
2022-11-26 22:36:02 -05:00
Tom Alexander
29add885f3
Revert "with_additional_fail_matcher is not going to work due to lifetimes with the new forced borrow."
This reverts commit 1d9fb42b6214bd922ac99ea23c1b80b756055128.
2022-11-26 22:36:00 -05:00
Tom Alexander
8659a1083e
Revert "I may need to switch to boxes."
This reverts commit bdc61c075716e1752eb1332ce8e2682f69b2e435.
2022-11-26 22:35:53 -05:00
Tom Alexander
c2bd6e23c6
I may need to switch to boxes. 2022-11-26 22:20:30 -05:00
Tom Alexander
0b2acd7e54
with_additional_fail_matcher is not going to work due to lifetimes with the new forced borrow. 2022-11-26 22:08:17 -05:00
Tom Alexander
e8b44f27e8
Migrating to the new context tree. 2022-11-26 22:03:15 -05:00
Tom Alexander
f0de041710
Make the fail matcher code in the new context tree work. 2022-11-26 21:55:33 -05:00
Tom Alexander
8abf194a12
Getting weird errors from the not()s. 2022-11-26 21:47:57 -05:00
Tom Alexander
67e95a0adc
Remove unnecessary pubs. 2022-11-26 21:28:57 -05:00
Tom Alexander
f645b0cb75
Make the node type inside the ContextTree generic but the implementation still explicitly uses dyn OrgModeContext. 2022-11-26 21:07:56 -05:00
Tom Alexander
e888c0e66f
Make the node type generic. 2022-11-26 21:02:52 -05:00
Tom Alexander
7a241353b5
New heterogeneous context tree seems to be working. 2022-11-26 20:41:37 -05:00
Tom Alexander
d9f0eda5b7
many_till ignoring context. 2022-11-26 19:54:46 -05:00
Tom Alexander
c1778a4f12
Switching to generics. 2022-11-26 19:46:59 -05:00
Tom Alexander
0fb523e0fe
mut didn't help. 2022-11-26 19:41:33 -05:00
Tom Alexander
d3b49a6835
Urg hrtb hell again. 2022-11-26 19:39:00 -05:00
Tom Alexander
45904044e3
Starting to write my own many_till with context. 2022-11-26 19:35:02 -05:00
Tom Alexander
4d58ed3bea
Re-arrange context parameter order. 2022-11-26 19:26:48 -05:00
Tom Alexander
29a53044ea
Rename OrgModeContext. 2022-11-26 19:22:14 -05:00
Tom Alexander
77f02a21b9
Move the document parser inside text_element_parser.
This is to put the context-sensitive parsers together during this early development stage.
2022-11-26 19:15:43 -05:00
Tom Alexander
a09c6838b3
Remove existing trace calls. 2022-11-26 18:27:36 -05:00
Tom Alexander
99f9450eda
Clean up paragraph eof detection. 2022-11-26 18:25:53 -05:00
Tom Alexander
65c51f79d6
Update the paragraph parser to work at the end of the file. 2022-11-26 18:22:41 -05:00
Tom Alexander
185c761a5d
Move the paragraph context into the paragraph parser. 2022-11-26 17:51:07 -05:00
Tom Alexander
c312673f12
Make the types more consistent. 2022-11-25 18:55:56 -05:00
Tom Alexander
cc41074563
It seems to be working now that I've integrated links. 2022-11-25 18:40:38 -05:00
Tom Alexander
5b306729f5
Remove instrumentation. 2022-11-25 18:37:12 -05:00
Tom Alexander
e215fd35ca
I was double-matching the bold end. 2022-11-25 18:35:21 -05:00
Tom Alexander
9c54689bd9
Bold not getting detected. 2022-11-25 18:23:51 -05:00
Tom Alexander
cdb35edd64
Trace span events. 2022-11-25 17:55:11 -05:00
Tom Alexander
1fcb32d3c6
Explicitly set settings for the tracing subscriber. 2022-11-25 17:49:38 -05:00
Tom Alexander
e0a9c49e9f
Switch to using tracing instead of logging. 2022-11-25 17:27:29 -05:00
Tom Alexander
6aa656127e
Structurally this should be working but bold is not being captured. 2022-11-25 13:55:09 -05:00
Tom Alexander
f84fa09871
Match fail logic implemented. 2022-11-24 16:24:49 -05:00
Tom Alexander
109a013057
Starting to implement the match_fail function to walk up the matcher chain. 2022-11-24 16:01:52 -05:00
Tom Alexander
d277a033c9
Passing the context around. 2022-11-24 15:40:07 -05:00
Tom Alexander
a792acf4b0
Constructing a context. 2022-11-24 15:14:53 -05:00
Tom Alexander
1b8dada135
Rename list to context tree. 2022-11-24 15:10:13 -05:00
Tom Alexander
7976e017fd
Store the node in the list. 2022-11-24 15:08:43 -05:00
Tom Alexander
8dcb1318d6
Working by exposing the node type. 2022-11-24 15:06:07 -05:00
Tom Alexander
f2ddf6451c
Mutable push. 2022-11-24 14:59:37 -05:00
Tom Alexander
1487f7d96b
Really start from scratch. 2022-11-24 14:42:05 -05:00
Tom Alexander
6f416f6997
Going to switch to using immutable fn instead of FnMut so I can easily make a context tree. 2022-11-24 14:31:58 -05:00
Tom Alexander
806070169a
Nope. 2022-10-30 05:54:51 -04:00
Tom Alexander
58e31aa841
Did lifetimes fix it? 2022-10-30 05:53:18 -04:00
Tom Alexander
7eb8087f9d
Cleanup 2022-10-30 05:48:43 -04:00
Tom Alexander
d1460fed95
For some reason it does not work with FnMut for additional fail matchers. 2022-10-30 05:43:26 -04:00
Tom Alexander
661ccfb30c
Not general enough error. 2022-10-30 05:09:01 -04:00
Tom Alexander
8695d32f40
Swap in the new TestContext everywhere. 2022-10-30 05:06:06 -04:00
Tom Alexander
ec2d09b72a
Switch to Rc to fix the multiple references issue. 2022-10-30 04:57:22 -04:00
Tom Alexander
ce4b4a27f9
How do I do parent? Maybe Rc Instead of Box. 2022-10-30 04:50:09 -04:00
Tom Alexander
13c83d9d85
Comment out line causing build problems so we can see if we introduce new build problems. 2022-10-30 03:49:50 -04:00
Tom Alexander
0c77951ecc
rename lifetimes. 2022-10-15 17:48:27 -04:00
Tom Alexander
30042ddcfe
Lifetime issue not general enough. 2022-10-15 14:28:24 -04:00
Tom Alexander
1d571acc17
Add accessors for booleans on what we are allowed to match. 2022-10-15 14:20:40 -04:00
Tom Alexander
9d534aa627
Add paragraph parser. 2022-10-15 14:16:52 -04:00
Tom Alexander
ba25f5b5ca
Start of flat text element, not handling more complex types like bold and link. 2022-10-15 14:04:24 -04:00
Tom Alexander
30d6648590
Implement logic for checking the fail matchers without keeping mutable borrows open for longer than the execution of that function. 2022-10-15 00:39:32 -04:00
Tom Alexander
6b93e1c007
Lifetime issue. 2022-10-15 00:01:37 -04:00
Tom Alexander
8a6868f299
Added boxes. 2022-10-14 20:52:49 -04:00
Tom Alexander
9e3ea29634
I think I need a box. 2022-10-14 20:50:00 -04:00
Tom Alexander
add717071c
Using a mutable reference breaks clone. 2022-10-14 20:25:10 -04:00