21 lines
563 B
Text
21 lines
563 B
Text
val choose = fn*(entries list) {
|
|
if not entries: return ""
|
|
|
|
# print the menu
|
|
writeln join(map(entries, 1..len(entries), by=fn(e, i) { "{{i:2}}: {{e}}" }), delim="\n")
|
|
|
|
val idx = read(
|
|
prompt="Select entry #: ",
|
|
validation=fn(x) {
|
|
if not x -> RE/^[0-9]+$/: return false
|
|
val y = x -> number
|
|
y > 0 and y <= len(entries)
|
|
},
|
|
errmsg="invalid selection\n",
|
|
maxattempts=-1,
|
|
) -> number
|
|
|
|
entries[idx]
|
|
}
|
|
|
|
writeln choose(["fee fie", "eat pi", "huff and puff", "tick tock"])
|