From: Jo-Philipp Wich Date: Fri, 16 Dec 2011 05:52:24 +0000 (+0000) Subject: libs/web: add list(...) datatype for space separated lists of arbritary datatypes X-Git-Tag: 0.11.0~1225 X-Git-Url: http://git.openwrt.org/?p=project%2Fluci.git;a=commitdiff_plain;h=3a0905f21cb1afe307402cb8ea1d89096f28c141 libs/web: add list(...) datatype for space separated lists of arbritary datatypes --- diff --git a/libs/web/htdocs/luci-static/resources/cbi.js b/libs/web/htdocs/luci-static/resources/cbi.js index d1e34d1786..8d32b669d1 100644 --- a/libs/web/htdocs/luci-static/resources/cbi.js +++ b/libs/web/htdocs/luci-static/resources/cbi.js @@ -233,6 +233,24 @@ var cbi_validators = { if (args[0] && typeof cbi_validators[args[0]] == "function") return cbi_validators[args[0]](v.replace(/^\s*!\s*/, '')); + return false; + }, + + 'list': function(v, args) + { + var cb = cbi_validators[args[0] || 'string']; + if (typeof cb == "function") + { + var cbargs = args.slice(1); + var values = v.match(/[^\s]+/g); + + for (var i = 0; i < values.length; i++) + if (!cb(values[i], cbargs)) + return false; + + return true; + } + return false; } }; diff --git a/libs/web/luasrc/cbi/datatypes.lua b/libs/web/luasrc/cbi/datatypes.lua index 93b29cba81..9a3b735008 100644 --- a/libs/web/luasrc/cbi/datatypes.lua +++ b/libs/web/luasrc/cbi/datatypes.lua @@ -282,3 +282,17 @@ function neg(val, what) return false end + +function list(val, what, ...) + if type(val) == "string" and what and type(_M[what]) == "function" then + for val in val:gmatch("%S+") do + if not _M[what](val, ...) then + return false + end + end + + return true + end + + return false +end