Menu: Difference between revisions

12 bytes removed ,  16 days ago
 
Line 1,828:
 
=={{header|langur}}==
<syntaxhighlight lang="langur">val .select = impure fn(.entries) {
val choose = impure fn(entries) {
if .entries is not list: throw "invalid args"
if entries is not .entrieslist: returnthrow "invalid args"
if not entries: return ""
 
# print the menu
writeln join ("\n", map(fn .e, .i: "{{.i:2}}: {{.e}}", .entries, 1..len .(entries)))
 
val .idx = number read(
"Select entry #: ",
fn(.x) {
if not .x -> RE/^[0-9]+$/: return false
val .y = number .x -> number
.y > 0 and .y <= len(.entries)
},
"invalid selection\n", -1,
) -> number
 
.entries[.idx]
}
 
writeln .selectchoose(["fee fie", "eat pi", "huff and puff", "tick tock"])
</syntaxhighlight>
 
1,007

edits