Commit Graph

914 Commits

Author SHA1 Message Date
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 ba57eb16fd
Fix using references for context elements. 2023-09-02 22:44:21 -04:00
Tom Alexander c309d14776
Fix a reference to RefContext. 2023-09-02 20:52:02 -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 f16a554154
Handle org-mode documents passed as args.
We were running into issues where the documents grew too large for being passed as a string to emacs, and we need to handle #+setupfile so we need to start handling org-mode documents as files and not just as anonymous streams of text.

The anonymous stream of text handling will remain because the automated tests use it.
2023-09-02 17:28:22 -04:00
Tom Alexander 80d77ff5d6
Fix handling of unicode in compare tests.
rustfmt Build rustfmt has succeeded Details
rust-test Build rust-test has succeeded Details
rust-build Build rust-build has succeeded Details
2023-08-31 20:20:00 -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 7a903acedc
Support special blocks in compare. 2023-08-31 19:04:44 -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.
rustfmt Build rustfmt has succeeded Details
rust-test Build rust-test has succeeded Details
rust-build Build rust-build has succeeded Details
2023-08-31 18:53:28 -04:00
Tom Alexander b2383d9f93
Fix footnote definition performance.
rustfmt Build rustfmt has succeeded Details
rust-test Build rust-test has succeeded Details
rust-build Build rust-build has succeeded Details
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.
rustfmt Build rustfmt has succeeded Details
rust-test Build rust-test has succeeded Details
rust-build Build rust-build has succeeded Details
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.
rustfmt Build rustfmt has succeeded Details
rust-test Build rust-test has succeeded Details
rust-build Build rust-build has succeeded Details
2023-08-31 15:11:29 -04:00
Tom Alexander eb9c582fa5
'>' is allowed as a post character in text markup.
rustfmt Build rustfmt has succeeded Details
rust-test Build rust-test has succeeded Details
rust-build Build rust-build has succeeded Details
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 28aca041f7
Publish version 0.1.3.
rustfmt Build rustfmt has failed Details
rust-test Build rust-test has failed Details
rust-build Build rust-build has succeeded Details
2023-08-29 23:05:36 -04:00
Tom Alexander d471f7178b
Wrap the components of headlines in diff layers. 2023-08-29 22:57:08 -04:00
Tom Alexander 2c5c26c55f
Allow diff layers that are not associated with tokens. 2023-08-29 22:47:40 -04:00
Tom Alexander 7944659802
Compare headline level. 2023-08-29 22:11:56 -04:00
Tom Alexander 58aca53144
Move get_property into util. 2023-08-29 22:07:23 -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 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.
rustfmt Build rustfmt has succeeded Details
rust-test Build rust-test has succeeded Details
rust-build Build rust-build has succeeded Details
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.
rustfmt Build rustfmt has succeeded Details
rust-test Build rust-test has succeeded Details
rust-build Build rust-build has succeeded Details
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.
rust-test Build rust-test has succeeded Details
rust-build Build rust-build has succeeded Details
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.
rust-test Build rust-test has succeeded Details
rust-build Build rust-build has succeeded Details
2023-08-29 10:58:05 -04:00
Tom Alexander 288350daef
Iterate over the bytes instead of characters when counting brackets.
rust-test Build rust-test has succeeded Details
rust-build Build rust-build has succeeded Details
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.
rustfmt Build rustfmt has succeeded Details
rust-test Build rust-test has succeeded Details
rust-build Build rust-build has succeeded Details
2023-08-28 01:05:09 -04:00
Tom Alexander 9c9964c66f
Add lt and gt entities.
rustfmt Build rustfmt has succeeded Details
rust-test Build rust-test has succeeded Details
rust-build Build rust-build has succeeded Details
2023-08-27 22:15:23 -04:00
Tom Alexander 3e143796f7
Compare heading todo keywords.
rust-test Build rust-test has succeeded Details
rust-build Build rust-build has succeeded Details
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.
rust-test Build rust-test has failed Details
rust-build Build rust-build has succeeded Details
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.
rustfmt Build rustfmt has succeeded Details
rust-test Build rust-test has succeeded Details
rust-build Build rust-build has succeeded Details
2023-08-25 04:35:54 -04:00
Tom Alexander 3a38f4cd35
Add support for the ast entity.
rustfmt Build rustfmt has succeeded Details
rust-test Build rust-test has succeeded Details
rust-build Build rust-build has succeeded Details
2023-08-25 04:28:24 -04:00
Tom Alexander 45e16fea2d
Honor the NO_COLOR environment variable.
rustfmt Build rustfmt has succeeded Details
rust-test Build rust-test has succeeded Details
rust-build Build rust-build has succeeded Details
2023-08-25 04:25:39 -04:00
Tom Alexander 5134cece7b
Add color to compare output.
rustfmt Build rustfmt has succeeded Details
rust-test Build rust-test has succeeded Details
rust-build Build rust-build has succeeded Details
2023-08-25 04:09:52 -04:00
Tom Alexander 19432d91ab
Get the emacs and org-mode versions when launching the compare script.
rustfmt Build rustfmt has succeeded Details
rust-test Build rust-test has succeeded Details
rust-build Build rust-build has succeeded Details
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.
rust-test Build rust-test has succeeded Details
rust-build Build rust-build has succeeded Details
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.
rust-test Build rust-test has succeeded Details
rust-build Build rust-build has succeeded Details
2023-08-25 00:01:56 -04:00
Tom Alexander 02fe10fba3
Move objects to a lower exit class.
rust-test Build rust-test has succeeded Details
rust-build Build rust-build has succeeded Details
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.
rust-test Build rust-test has succeeded Details
rust-build Build rust-build has succeeded Details
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.
rust-test Build rust-test has succeeded Details
rust-build Build rust-build has succeeded Details
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.
rustfmt Build rustfmt has succeeded Details
rust-test Build rust-test has succeeded Details
rust-build Build rust-build has failed Details
2023-08-24 23:43:41 +00:00
Tom Alexander cf37bc4111
Remove unnecessary context from some util functions.
rust-test Build rust-test has succeeded Details
rust-build Build rust-build has succeeded Details
2023-08-24 19:29:00 -04:00
Tom Alexander e5224cda63
Removing dead code.
rust-test Build rust-test has succeeded Details
rust-build Build rust-build has succeeded Details
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.
rust-test Build rust-test has succeeded Details
rust-build Build rust-build has succeeded Details
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.
rust-test Build rust-test has failed Details
rust-build Build rust-build has failed Details
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.
rustfmt Build rustfmt has succeeded Details
rust-test Build rust-test has succeeded Details
rust-build Build rust-build has succeeded Details
2023-08-17 00:13:25 -04:00
fluxcdbot 5686256039 CI: autofix rust code.
rust-build Build rust-build has failed Details
rustfmt Build rustfmt has succeeded Details
rust-test Build rust-test has succeeded Details
2023-08-17 04:05:48 +00:00
Tom Alexander 7cf1b2d2b8
Disable the failing plain list whitespace ownership test.
rust-build Build rust-build has failed Details
rustfmt Build rustfmt has succeeded Details
rust-test Build rust-test has succeeded Details
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.
rustfmt Build rustfmt has succeeded Details
rust-test Build rust-test has succeeded Details
rust-build Build rust-build has succeeded Details
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.
rustfmt Build rustfmt has succeeded Details
rust-test Build rust-test has succeeded Details
rust-build Build rust-build has succeeded Details
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.
rust-build Build rust-build has failed Details
rust-test Build rust-test has failed Details
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.
semver Build semver has succeeded Details
rustfmt Build rustfmt has succeeded Details
rust-test Build rust-test has succeeded Details
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.
semver Build semver has succeeded Details
rustfmt Build rustfmt has succeeded Details
rust-test Build rust-test has succeeded Details
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.
semver Build semver has succeeded Details
rust-test Build rust-test has succeeded Details
rustfmt Build rustfmt has succeeded Details
2023-07-18 17:51:28 +00:00
fluxcdbot 0cd398c30c CI: autofix rust code.
semver Build semver has succeeded Details
rustfmt Build rustfmt has failed Details
rust-test Build rust-test has succeeded Details
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.
rust-test Build rust-test has failed Details
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.
rust-test Build rust-test has failed Details
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.
rust-test Build rust-test has failed Details
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.
semver Build semver has succeeded Details
rustfmt Build rustfmt has succeeded Details
rust-test Build rust-test has succeeded Details
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.
semver Build semver has succeeded Details
cargo-fmt Build cargo-fmt has succeeded Details
build-organic-test Build build-organic-test has succeeded Details
build-cargo-fmt Build build-cargo-fmt has succeeded Details
organic-test Build organic-test has failed Details
2023-07-13 19:33:38 -04:00
fluxcdbot 999c992bdf CI: format rust code.
semver Build semver has succeeded Details
cargo-fmt Build cargo-fmt has succeeded Details
build-organic-test Build build-organic-test has failed Details
organic-test Build organic-test has failed Details
build-cargo-fmt Build build-cargo-fmt has succeeded Details
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.
organic-test Build organic-test has succeeded Details
2023-07-13 18:30:18 -04:00
Tom Alexander dcec5c490a
Create structure for plain links.
organic-test Build organic-test has succeeded Details
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