diff options
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/tally.aup | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/examples/tally.aup b/examples/tally.aup new file mode 100644 index 0000000..cdff8dd --- /dev/null +++ b/examples/tally.aup @@ -0,0 +1,32 @@ +# Typed words, tallied. A list keyed by the word keeps each word once, in +# order; tallies[word] finds it by halving, whatever the list's length. +record Tally { + word: text + times = 0 +} +state tallies: list of Tally by word +state at: index of tallies +input typed = text +input forget = key Delete +input up = key ArrowUp +input down = key ArrowDown + +on typed { + if !tallies.has(typed) { + tallies.add(Tally { word: typed }) + } + tallies[typed].times = tallies[typed].times + 1 + at = tallies[typed] +} +on forget.down { tallies.remove(at) } +on up.down { at = at - 1 } +on down.down { at = at + 1 } + +view current = if tallies.count > 0 { "{at.word}: {at.times}" } else { "-" } +view words = tallies.count +view typed_total = sum(t.times for t in tallies) +view most = max(t.times for t in tallies) +view table = each t in tallies { + word = t.word + times = t.times +} |
