X-Git-Url: https://git.archive.openwrt.org/?a=blobdiff_plain;f=src%2Fffluci%2Futil.lua;h=12031ff7d8e0c3b0a179201abe8f361cd1d1ac68;hb=e8b87fffb9ec6654eeb82c49e49ca9491ff4299c;hp=6e0d8675a3740d56c2a68dafbae868e3d92034ca;hpb=03ad2398aae1f745266118a9e94ed4636a3872eb;p=project%2Fluci.git diff --git a/src/ffluci/util.lua b/src/ffluci/util.lua index 6e0d8675a..12031ff7d 100644 --- a/src/ffluci/util.lua +++ b/src/ffluci/util.lua @@ -92,6 +92,7 @@ function exec(command) return data end + -- Runs "command" and returns its output as a array of lines function execl(command) local pp = io.popen(command) @@ -108,6 +109,7 @@ function execl(command) return data end + -- Populate obj in the scope of f as key function extfenv(f, key, obj) local scope = getfenv(f) @@ -116,6 +118,19 @@ function extfenv(f, key, obj) end +-- Checks whether an object is an instanceof class +function instanceof(object, class) + local meta = getmetatable(object) + while meta and meta.__index do + if meta.__index == class then + return true + end + meta = getmetatable(meta.__index) + end + return false +end + + -- Updates the scope of f with "extscope" function updfenv(f, extscope) local scope = getfenv(f) @@ -125,6 +140,30 @@ function updfenv(f, extscope) setfenv(f, scope) 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)