|
15 | 15 | ,plan/build-plan) |
16 | 16 | :title (* "# " :text-line "\n") |
17 | 17 | :text-line (capture (some (if-not "\n" 1))) |
18 | | - :inbox (* :inbox-title (? "\n") :tasks (? "\n")) |
19 | | - :inbox-title (* "## Inbox" (? "\n")) |
20 | | - :days (group (any :day)) |
21 | | - :day (replace (* :day-title (? "\n") :events :tasks (? "\n")) ,day/build-day) |
22 | | - :day-title (* "## " :date ", " :week-day (? "\n")) |
23 | | - :date (replace (capture (* :d :d :d :d "-" :d :d "-" :d :d)) ,d/parse) |
24 | | - :week-day (+ "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday" "Sunday") |
25 | | - :events (group (any :event)) |
26 | | - :event (replace (* :event-begin :text-line (? "\n")) ,event/build-event) |
27 | | - :event-begin (* "- " (if-not "[" 0)) |
28 | | - :tasks (group (any :task)) |
29 | | - :task (replace (* (constant :done) :task-begin |
30 | | - " " |
31 | | - (constant :title) (capture (some (if-not (+ "\n" " (missed on") 1))) |
32 | | - (? :task-missed-on-date) |
33 | | - (? "\n") |
34 | | - (constant :body) :task-body |
35 | | - (? "\n")) |
36 | | - ,struct) |
37 | | - :task-begin (* "- " :checkbox) |
38 | | - :checkbox (+ :checkbox-done :checkbox-pending) |
39 | | - :checkbox-done (* (+ "[x]" "[X]") (constant true)) |
40 | | - :checkbox-pending (* "[ ]" (constant false)) |
41 | | - :task-body (group (any :task-body-line)) |
42 | | - :task-body-line (* " " :text-line (? "\n")) |
43 | | - :task-missed-on-date (* " (missed on " (constant :missed-on) :date ")")}) |
| 18 | + :inbox |
| 19 | + {:main (* :inbox-title (? "\n") :tasks (? "\n")) |
| 20 | + :inbox-title (* "## Inbox" (? "\n"))} |
| 21 | + :days |
| 22 | + {:main (group (any :day)) |
| 23 | + :day |
| 24 | + {:main (replace (* :day-title (? "\n") :events :tasks (? "\n")) ,day/build-day) |
| 25 | + :day-title (* "## " :date ", " :week-day (? "\n")) |
| 26 | + :week-day (+ "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday" "Sunday") |
| 27 | + :events |
| 28 | + {:main (group (any :event)) |
| 29 | + :event |
| 30 | + {:main (replace (* :event-begin :text-line (? "\n")) ,event/build-event) |
| 31 | + :event-begin (* "- " (if-not "[" 0))}}}} |
| 32 | + :tasks |
| 33 | + {:main (group (any :task)) |
| 34 | + :task |
| 35 | + {:main (replace (* (constant :done) :task-begin |
| 36 | + " " |
| 37 | + (constant :title) (capture (some (if-not (+ "\n" " (missed on") 1))) |
| 38 | + (? :task-missed-on-date) |
| 39 | + (? "\n") |
| 40 | + (constant :body) :task-body |
| 41 | + (? "\n")) |
| 42 | + ,struct) |
| 43 | + :task-begin |
| 44 | + {:main (* "- " :checkbox) |
| 45 | + :checkbox |
| 46 | + {:main (+ :checkbox-done :checkbox-pending) |
| 47 | + :checkbox-done (* (+ "[x]" "[X]") (constant true)) |
| 48 | + :checkbox-pending (* "[ ]" (constant false))}} |
| 49 | + :task-missed-on-date (* " (missed on " (constant :missed-on) :date ")") |
| 50 | + :task-body |
| 51 | + {:main (group (any :task-body-line)) |
| 52 | + :task-body-line (* " " :text-line (? "\n"))}}} |
| 53 | + :date (replace (capture (* :d :d :d :d "-" :d :d "-" :d :d)) ,d/parse)}) |
44 | 54 |
|
45 | 55 | (defn- lines-count [plan-string &opt options] |
46 | 56 | (default options {:ignore-whitespace true}) |
|
0 commit comments