diff options
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/tasks.aup | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/examples/tasks.aup b/examples/tasks.aup new file mode 100644 index 0000000..4c6627f --- /dev/null +++ b/examples/tasks.aup @@ -0,0 +1,42 @@ +# A task list. The runtime owns the list: the index always names an item, +# stays on it when items are inserted or removed before it, stops at the +# ends, and a failed event leaves the list as it was. +record Task { + title: text + done = 0 +} + +state tasks: list of Task +state at: index of tasks +state made = 0 + +input typed = text +input up = key ArrowUp +input down = key ArrowDown +input toggle = key Space +input drop = key Delete +input top = key Home +input bottom = key End +input again = key KeyD +input shout = key KeyS + +on typed { + tasks.append(Task { title: typed }) + at = tasks.last + made = made + 1 +} +on up.down { at = at - 1 } +on down.down { at = at + 1 } +on toggle.down { tasks[at].done = !tasks[at].done } +on drop.down { tasks.remove(at) } +on top.down { at = tasks.first } +on bottom.down { at = tasks.last } +# A copy goes before the current task, which stays current. +on again.down { tasks.insert(at, Task { title: tasks[at].title, done: tasks[at].done }) } +on shout.down { tasks[at].title = "{tasks[at].title}!" } + +view count = tasks.count +view position = at.position +view current = tasks[at].title +view status = "{at.position + 1}/{tasks.count}" +view finished = tasks[at].done |
