* Splitted up value validation code from ffluci.http.formvalue to ffluci.util.validate
This commit is contained in:
parent
f989f6ee00
commit
e8b87fffb9
2 changed files with 32 additions and 34 deletions
|
@ -54,43 +54,18 @@ function request_redirect(category, module, action)
|
|||
redirect(pattern:format(category, module, action))
|
||||
end
|
||||
|
||||
-- Form validation function:
|
||||
-- Gets a form variable "key".
|
||||
-- If it does not exist: return "default"
|
||||
-- If cast_number is true and "key" is not a number: return "default"
|
||||
-- If valid is a table and "key" is not in it: return "default"
|
||||
-- If valid is a function and returns nil: return "default"
|
||||
-- Else return the value of "key"
|
||||
--
|
||||
-- Examples:
|
||||
-- Get a form variable "foo" and return "bar" if it is not set
|
||||
-- = formvalue("foo", "bar")
|
||||
--
|
||||
-- Get "foo" and make sure it is either "bar" or "baz"
|
||||
-- = formvalue("foo", nil, nil, {"bar", "baz"})
|
||||
--
|
||||
-- Get "foo", make sure its a number and below 10 else return 5
|
||||
-- = formvalue("foo", 5, true, function(a) return a < 10 and a or nil end)
|
||||
function formvalue(key, default, cast_number, valid, table)
|
||||
table = table or formvalues()
|
||||
-- Gets form value from key
|
||||
function formvalue(key, default)
|
||||
local c = formvalues()
|
||||
|
||||
if table[key] == nil then
|
||||
return default
|
||||
else
|
||||
local value = table[key]
|
||||
|
||||
value = cast_number and tonumber(value) or not cast_number and nil
|
||||
|
||||
if type(valid) == "function" then
|
||||
value = valid(value)
|
||||
elseif type(valid) == "table" then
|
||||
if not ffluci.util.contains(valid, value) then
|
||||
value = nil
|
||||
end
|
||||
for match in key:gmatch("%w+") do
|
||||
c = c[match]
|
||||
if c == nil then
|
||||
return default
|
||||
end
|
||||
|
||||
return value or default
|
||||
end
|
||||
|
||||
return c
|
||||
end
|
||||
|
||||
|
||||
|
|
|
@ -141,6 +141,29 @@ function updfenv(f, extscope)
|
|||
end
|
||||
|
||||
|
||||
-- Validates a variable
|
||||
function validate(value, cast_number, cast_int, valid)
|
||||
if cast_number or cast_int then
|
||||
value = tonumber(value)
|
||||
end
|
||||
|
||||
if cast_int and not(value % 1 == 0) then
|
||||
value = nil
|
||||
end
|
||||
|
||||
|
||||
if type(valid) == "function" then
|
||||
value = valid(value)
|
||||
elseif type(valid) == "table" then
|
||||
if not ffluci.util.contains(valid, value) then
|
||||
value = nil
|
||||
end
|
||||
end
|
||||
|
||||
return value
|
||||
end
|
||||
|
||||
|
||||
-- Returns the filename of the calling script
|
||||
function __file__()
|
||||
return debug.getinfo(2, 'S').source:sub(2)
|
||||
|
|
Loading…
Reference in a new issue