From 9ffa698e15deed8acbd04507371e7c0e666f1bf1 Mon Sep 17 00:00:00 2001 From: d9k Date: Fri, 4 May 2018 14:52:13 +0300 Subject: Added stackable function `optional()`. ref https://github.com/sailorproject/valua/issues/10 --- valua.lua | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'valua.lua') diff --git a/valua.lua b/valua.lua index 6e1c6e4..11d4741 100644 --- a/valua.lua +++ b/valua.lua @@ -41,8 +41,12 @@ function valua:new(obj) --saves a function named _ 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 -- -- cgit v1.2.3-54-g00ecf From 8f23fce49593deaab5de6c79598389fe86cd6e84 Mon Sep 17 00:00:00 2001 From: d9k Date: Fri, 4 May 2018 15:04:50 +0300 Subject: Added stackable function `optional()`: trying to fix travis warning --- valua.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'valua.lua') diff --git a/valua.lua b/valua.lua index 11d4741..c9589f9 100644 --- a/valua.lua +++ b/valua.lua @@ -54,7 +54,7 @@ function valua:new(obj) -- __call will run only when the value is validated self.__call = function(t,value) local res = true - local fres, err + local fres, err = nil if value == nil and t.allow_nil then return res, err -- cgit v1.2.3-54-g00ecf From a5ebacddc49660f97bfe5e97e3bdfd264803372f Mon Sep 17 00:00:00 2001 From: d9k Date: Fri, 4 May 2018 15:14:14 +0300 Subject: optional() stackable function+. fixed warnings locally with `luacheck --codes --std=max *.lua --ignore 211/_ENV` --- valua.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'valua.lua') diff --git a/valua.lua b/valua.lua index c9589f9..d4d62b9 100644 --- a/valua.lua +++ b/valua.lua @@ -54,7 +54,8 @@ function valua:new(obj) -- __call will run only when the value is validated self.__call = function(t,value) local res = true - local fres, err = nil + local err = nil + local fres if value == nil and t.allow_nil then return res, err -- cgit v1.2.3-54-g00ecf From 56b5189cb9f188a1064296fea3d239a1ae8b7f79 Mon Sep 17 00:00:00 2001 From: d9k Date: Fri, 4 May 2018 22:57:53 +0300 Subject: converted spaces to tabs with `find -name \*.lua -exec bash -c 'unexpand --first-only --tabs=2 "$0" | tee "$0"' {} \;` --- valua-test.lua | 4 ++-- valua.lua | 24 ++++++++++++------------ 2 files changed, 14 insertions(+), 14 deletions(-) (limited to 'valua.lua') diff --git a/valua-test.lua b/valua-test.lua index 307cd1a..fa0cfb9 100644 --- a/valua-test.lua +++ b/valua-test.lua @@ -63,8 +63,8 @@ local tests = { {v:new().contains(" "), {2,false, 1,true}}, {v:new().no_white(), {1,false, 2,true}}, {v:new().datetime(), {19,true, 9,false}}, - {v:new().number().min(45).optional(), {2,false, 6,false, 7,true, 4,true}}, - {v:new().string().optional(), {14,false, 1,true, 4,true}}, + {v:new().number().min(45).optional(), {2,false, 6,false, 7,true, 4,true}}, + {v:new().string().optional(), {14,false, 1,true, 4,true}}, } for n,t in ipairs(tests) do diff --git a/valua.lua b/valua.lua index d4d62b9..924b175 100644 --- a/valua.lua +++ b/valua.lua @@ -41,12 +41,12 @@ function valua:new(obj) --saves a function named _ with its args in a funcs table, to be used later when validating return function(...) local args = pack(...) - 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 + 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 @@ -54,12 +54,12 @@ function valua:new(obj) -- __call will run only when the value is validated self.__call = function(t,value) local res = true - local err = nil - local fres + local err = nil + local fres - if value == nil and t.allow_nil then - return res, err - end + 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 @@ -74,7 +74,7 @@ function valua:new(obj) return res,err end obj.funcs = {} - obj.allow_nil = false + obj.allow_nil = false return obj end -- -- cgit v1.2.3-54-g00ecf