diff options
author | d9k <d9k@ya.ru> | 2018-05-04 14:52:13 +0300 |
---|---|---|
committer | d9k <d9k@ya.ru> | 2018-05-04 14:52:13 +0300 |
commit | 9ffa698e15deed8acbd04507371e7c0e666f1bf1 (patch) | |
tree | b84437b05f7c60c7dddbad65552152ab1bc871d7 /valua.lua | |
parent | 0d66254547c657eb0158d362d62bbaaa3456dda9 (diff) | |
download | valua-9ffa698e15deed8acbd04507371e7c0e666f1bf1.tar.gz valua-9ffa698e15deed8acbd04507371e7c0e666f1bf1.tar.bz2 valua-9ffa698e15deed8acbd04507371e7c0e666f1bf1.zip |
Added stackable function `optional()`. ref https://github.com/sailorproject/valua/issues/10
Diffstat (limited to 'valua.lua')
-rw-r--r-- | valua.lua | 14 |
1 files changed, 12 insertions, 2 deletions
@@ -41,8 +41,12 @@ function valua:new(obj) --saves a function named _<index> with its args in a funcs table, to be used later when validating return function(...) local args = pack(...) - local f = function(value) return valua['_'..k](value, unpack(args, 1, args.n)) end - tinsert(t.funcs,f) + if k == 'optional' then + obj.allow_nil = true + else + local f = function(value) return valua['_'..k](value, unpack(args, 1, args.n)) end + tinsert(t.funcs,f) + end return t end end @@ -51,6 +55,11 @@ function valua:new(obj) self.__call = function(t,value) local res = true local fres, err + + if value == nil and t.allow_nil then + return res, err + end + -- iterates through all chained validations funcs that were packed, passing the value to be validated for _,f in ipairs(t.funcs) do fres,err = f(value) @@ -64,6 +73,7 @@ function valua:new(obj) return res,err end obj.funcs = {} + obj.allow_nil = false return obj end -- |