Last active 1748307761

moonfall-todos.nv Raw Playground
1| |
2:todo: ([ ] high priority)
3:todo: "Logging levels"
4
5:todo: ([ ] mid priority)
6:todo: "Typo spotting tools"
7
8:todo: ([ ] mid priority)
9:todo: "Interactive debugging tools"
10
11:todo: ([X] high priority)
12:todo: "Get Lua code gen working"
13
14:todo: ([ ] mid priority)
15:todo: "Implement warnings for unbound varable"
16
17:todo: ([ ] mid priority)
18:todo: "Implement dead code elimination"
19
20:todo: ([/] high priority)
21:todo: "Copy stdio port"
22
23:todo: ([ ] high priority)
24:todo: "Copy graphics port"
25
26:todo: ([ ] high priority)
27:todo: "Copy math jet"
28
29:todo: ([ ] low priority)
30:todo: "Copy array jet"
31
32:todo: ([ ] low priority)
33:todo: "Copy time jet"
34
35:todo: ([ ] mid priority)
36:todo: "Make code gen output a Lua module"
37
38:todo: ([ ] mid priority)
39:todo: "Better expansion of special forms"
40
41
42|| :: render todo list
43
44|:: render todo list|
45 :: sort task by priority
46 :: render high priority task
47 :: render mid priority task
48 :: render low priority task
49
50|:: sort task by priority? :todo: ([X] $level priority)|
51 :: add task to $level with finished state
52|:: sort task by priority? :todo: ([/] $level priority)|
53 :: add task to $level with wip state
54|:: sort task by priority? :todo: ([ ] $level priority)|
55 :: add task to $level with unstarted state
56|:: sort task by priority? :todo: ([] $level priority)|
57 :: add task to $level with unstarted state
58|:: sort task by priority|
59
60|:: add task to $level with $state state|
61 :: set task $state to $level
62 :: move task to $level
63 :: close $level
64
65|:: set task $state to high| :high: $state
66|:: set task $state to mid| :mid: $state
67|:: set task $state to low| :low: $state
68
69|:: move task to $level :todo: [X]?|
70|:: move task to $level :todo: [/]?|
71|:: move task to $level :todo: []?|
72|:: move task to $level :todo: [?|
73|:: move task to high? :todo: $char|
74 :high: $char
75|:: move task to mid? :todo: $char|
76 :mid: $char
77|:: move task to low? :todo: $char|
78 :low: $char
79|:: move task to $level|
80
81|:: close high| :high:
82|:: close mid | :mid:
83|:: close low | :low:
84
85|:: render high priority task? :high: finished|
86 :: push finished check box
87 :: push high
88|:: render high priority task? :high: wip|
89 :: push wip check box
90 :: push high
91|:: render high priority task? :high: unstarted|
92 :: push unstarted check box
93 :: push high
94|:: render high priority task? :high: | :: push new line
95|:: render high priority task? :high: $char| :message: $char
96|:: render high priority task|
97 :message: "High Priorty Task" :message: 10
98 :: print message
99
100|:: render mid priority task? :mid: finished|
101 :: push finished check box
102 :: push mid
103|:: render mid priority task? :mid: wip|
104 :: push wip check box
105 :: push mid
106|:: render mid priority task? :mid: unstarted|
107 :: push unstarted check box
108 :: push mid
109|:: render mid priority task? :mid: | :: push new line
110|:: render mid priority task? :mid: $char| :message: $char
111|:: render mid priority task|
112 :message: "Mid Priorty Task" :message: 10
113 :: print message
114
115|:: render low priority task? :low: finished|
116 :: push finished check box
117 :: push low
118|:: render low priority task? :low: wip|
119 :: push wip check box
120 :: push low
121|:: render low priority task? :low: unstarted|
122 :: push unstarted check box
123 :: push low
124|:: render low priority task? :low: | :: push new line
125|:: render low priority task? :low: $char| :message: $char
126|:: render low priority task|
127 :message: "Low Priorty Task" :message: 10
128 :: print message
129
130|:: push low| :message: "low"
131|:: push mid| :message: "mid"
132|:: push high| :message: "high"
133
134|:: push finished check box| :message: 9 :message: "[X] "
135|:: push wip check box| :message: 9 :message: "[/] "
136|:: push unstarted check box| :message: 9 :message: "[ ] "
137|:: push new line | :message: 10
138
139|:: print message? :message: $char|
140 :@stdio: write $char
141|:: print message|
todo_item.py Raw Playground
1from dataclasses import dataclass
2from enum import Enum
3from typing import Any, Self
4import re
5
6text_rendered_todo_re = re.compile(r"\[[ X/]{0,1}\]")
7
8
9class TodoState(Enum):
10 UNSTARTED = ("Unstarted", "[ ]")
11 WORK_IN_PROGRESS = ("Work in Progress", "[/]")
12 FINISHED = ("Finished", "[X]")
13
14 def __init__(self, state: str, rendered: str):
15 self.state = state
16 self.rendered = rendered
17
18 @classmethod
19 def _missing_(cls, value: object) -> Any:
20 if type(value) is str:
21 value = "[ ]" if value == "[]" else value
22 is_rendered = text_rendered_todo_re.match(value)
23
24 for member in cls:
25 if is_rendered and member.rendered == value:
26 return member
27 elif member.state == value:
28 return member
29
30 return super()._missing_(value)
31
32
33class TodoPriority(Enum):
34 LOW = "low"
35 MID = "mid"
36 HIGH = "high"
37
38 def __init__(self, priority: str):
39 self.priority = priority
40
41
42todo_line_re = re.compile(
43 r"^(?P<priority>(low|mid|high))\t(?P<state>\[[ X/]{0,1}\]) (?P<description>.*)$"
44)
45
46
47@dataclass
48class TodoItem:
49 state: TodoState
50 priority: TodoPriority
51 description: str
52
53 @classmethod
54 def from_string(cls, line: str) -> Self:
55 if match := todo_line_re.match(line):
56 state = TodoState(match.group("state"))
57 priority = TodoPriority(match.group("priority"))
58 return TodoItem(state, priority, match.group("description"))
59
60
61if __name__ == "__main__":
62 import sys
63
64 todos = []
65
66 for line in sys.stdin:
67 if item := TodoItem.from_string(line.strip()):
68 todos.append(item)
69
70 print(f"Found {len(todos)} todo items.")
71
72 for item in todos:
73 print(item)