Commit Graph

286 Commits

Author SHA1 Message Date
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