summaryrefslogtreecommitdiff
path: root/library/lua/utils.lua
diff options
context:
space:
mode:
Diffstat (limited to 'library/lua/utils.lua')
-rw-r--r--library/lua/utils.lua46
1 files changed, 46 insertions, 0 deletions
diff --git a/library/lua/utils.lua b/library/lua/utils.lua
index e67801f4..93ee840c 100644
--- a/library/lua/utils.lua
+++ b/library/lua/utils.lua
@@ -361,4 +361,50 @@ function insert_or_update(vector,item,field,cmp)
return added,cur,pos
end
+-- Ask a yes-no question
+function prompt_yes_no(msg,default)
+ local prompt = msg
+ if default == nil then
+ prompt = prompt..' (y/n): '
+ elseif default then
+ prompt = prompt..' (y/n)[y]: '
+ else
+ prompt = prompt..' (y/n)[n]: '
+ end
+ while true do
+ local rv = dfhack.lineedit(prompt)
+ if rv then
+ if string.match(rv,'^[Yy]') then
+ return true
+ elseif string.match(rv,'^[Nn]') then
+ return false
+ elseif rv == 'abort' then
+ error('User abort in utils.prompt_yes_no()')
+ elseif rv == '' and default ~= nil then
+ return default
+ end
+ end
+ end
+end
+
+-- Ask for input with check function
+function prompt_input(prompt,check,quit_str)
+ quit_str = quit_str or '~~~'
+ while true do
+ local rv = dfhack.lineedit(prompt)
+ if rv == quit_str then
+ return nil
+ end
+ local rtbl = table.pack(check(rv))
+ if rtbl[1] then
+ return table.unpack(rtbl,2,rtbl.n)
+ end
+ end
+end
+
+function check_number(text)
+ local nv = tonumber(text)
+ return nv ~= nil, nv
+end
+
return _ENV \ No newline at end of file