Skip to content

Commit be7117a

Browse files
authored
fix: parse detached modifier content (#22)
1 parent ac4abda commit be7117a

File tree

3 files changed

+157
-1
lines changed

3 files changed

+157
-1
lines changed

src/lib.rs

+22
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,28 @@ mod tests {
198198
assert_yaml_snapshot!(examples);
199199
}
200200

201+
#[test]
202+
fn modifier_extensions() {
203+
let examples: Vec<_> = [
204+
"- ( ) undone",
205+
"* (x) done",
206+
"- (=) hold",
207+
"* (_) canceled",
208+
"- (-) pending",
209+
"* (!) urgent",
210+
"- (+) recurring",
211+
"~ (+ Friday) recurring with date",
212+
"** ( |# Low|< Feb 1) undone, low, & before Feb",
213+
"** (# Two Words|x| |!|+|_|+ 5th|=|-|< Feb 1|> 2025|@ Jan 1 2025) All of them"
214+
].into_iter()
215+
.map(|example| example.to_string() + "\n")
216+
.map(|str| parse(&str))
217+
.try_collect()
218+
.unwrap();
219+
220+
assert_yaml_snapshot!(examples);
221+
}
222+
201223
#[test]
202224
fn lists_regressions() {
203225
[
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
---
2+
source: src/lib.rs
3+
expression: examples
4+
---
5+
- - NestableDetachedModifier:
6+
modifier_type: UnorderedList
7+
level: 1
8+
extensions:
9+
- Todo: Undone
10+
content:
11+
Paragraph:
12+
- Token:
13+
Text: undone
14+
- - Heading:
15+
level: 1
16+
title:
17+
- Token: Whitespace
18+
- Token:
19+
Text: done
20+
extensions:
21+
- Todo: Done
22+
- - NestableDetachedModifier:
23+
modifier_type: UnorderedList
24+
level: 1
25+
extensions:
26+
- Todo: Paused
27+
content:
28+
Paragraph:
29+
- Token:
30+
Text: hold
31+
- - Heading:
32+
level: 1
33+
title:
34+
- Token: Whitespace
35+
- Token:
36+
Text: canceled
37+
extensions:
38+
- Todo: Canceled
39+
- - NestableDetachedModifier:
40+
modifier_type: UnorderedList
41+
level: 1
42+
extensions:
43+
- Todo: Pending
44+
content:
45+
Paragraph:
46+
- Token:
47+
Text: pending
48+
- - Heading:
49+
level: 1
50+
title:
51+
- Token: Whitespace
52+
- Token:
53+
Text: urgent
54+
extensions:
55+
- Todo: Urgent
56+
- - NestableDetachedModifier:
57+
modifier_type: UnorderedList
58+
level: 1
59+
extensions:
60+
- Todo:
61+
Recurring: ~
62+
content:
63+
Paragraph:
64+
- Token:
65+
Text: recurring
66+
- - NestableDetachedModifier:
67+
modifier_type: OrderedList
68+
level: 1
69+
extensions:
70+
- Todo:
71+
Recurring: Friday
72+
content:
73+
Paragraph:
74+
- Token:
75+
Text: recurring
76+
- Token: Whitespace
77+
- Token:
78+
Text: with
79+
- Token: Whitespace
80+
- Token:
81+
Text: date
82+
- - Heading:
83+
level: 2
84+
title:
85+
- Token: Whitespace
86+
- Token:
87+
Text: undone
88+
- Token:
89+
Special: ","
90+
- Token: Whitespace
91+
- Token:
92+
Text: low
93+
- Token:
94+
Special: ","
95+
- Token: Whitespace
96+
- Token:
97+
Text: "&"
98+
- Token: Whitespace
99+
- Token:
100+
Text: before
101+
- Token: Whitespace
102+
- Token:
103+
Text: Feb
104+
extensions:
105+
- Todo: Undone
106+
- Priority: Low
107+
- DueDate: Feb 1
108+
- - Heading:
109+
level: 2
110+
title:
111+
- Token: Whitespace
112+
- Token:
113+
Text: All
114+
- Token: Whitespace
115+
- Token:
116+
Text: of
117+
- Token: Whitespace
118+
- Token:
119+
Text: them
120+
extensions:
121+
- Priority: Two Words
122+
- Todo: Done
123+
- Todo: Undone
124+
- Todo: Urgent
125+
- Todo:
126+
Recurring: ~
127+
- Todo: Canceled
128+
- Todo:
129+
Recurring: 5th
130+
- Todo: Paused
131+
- Todo: Pending
132+
- DueDate: Feb 1
133+
- StartDate: "2025"
134+
- Timestamp: Jan 1 2025

src/stage_3.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -575,7 +575,7 @@ fn detached_modifier_extensions() -> impl Parser<
575575
let detached_modifier_extension = detached_modifier_extension_tokens
576576
.then(
577577
just(Whitespace)
578-
.ignore_then(select!(Special('|') => Special('|')).repeated())
578+
.ignore_then(select!(Special('|') => Special('|')).not().repeated())
579579
.or_not()
580580
.map(|tokens| {
581581
if let Some(tokens) = tokens {

0 commit comments

Comments
 (0)