mirror of
https://github.com/kepler155c/opus
synced 2025-01-05 21:30:28 +00:00
map convience functions (refactor)
This commit is contained in:
parent
687fc05445
commit
8f4324f1d8
37
sys/apis/map.lua
Normal file
37
sys/apis/map.lua
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
-- convience functions for tables with key/value pairs
|
||||||
|
local Util = require('util')
|
||||||
|
|
||||||
|
local Map = { }
|
||||||
|
|
||||||
|
function Map.removeMatches(t, values)
|
||||||
|
local function matchAll(entry)
|
||||||
|
for k, v in pairs(values) do
|
||||||
|
if entry[k] ~= v then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
for k,v in pairs(t) do
|
||||||
|
if matchAll(v) then
|
||||||
|
t[k] = nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- remove table entries if passed function returns false
|
||||||
|
function Map.prune(t, fn)
|
||||||
|
for _,k in pairs(Util.keys(t)) do
|
||||||
|
local v = t[k]
|
||||||
|
if type(v) == 'table' then
|
||||||
|
t[k] = Util.prune(v, fn)
|
||||||
|
end
|
||||||
|
if not fn(t[k]) then
|
||||||
|
t[k] = nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return t
|
||||||
|
end
|
||||||
|
|
||||||
|
return Map
|
@ -122,10 +122,7 @@ function UI.Form:save()
|
|||||||
end
|
end
|
||||||
for _,child in pairs(self.children) do
|
for _,child in pairs(self.children) do
|
||||||
if child.formKey then
|
if child.formKey then
|
||||||
if (child.pruneEmpty and type(child.value) == 'string' and #child.value == 0) or
|
if child.validate == 'numeric' then
|
||||||
(child.pruneEmpty and type(child.value) == 'boolean' and not child.value) then
|
|
||||||
self.values[child.formKey] = nil
|
|
||||||
elseif child.validate == 'numeric' then
|
|
||||||
self.values[child.formKey] = tonumber(child.value)
|
self.values[child.formKey] = tonumber(child.value)
|
||||||
else
|
else
|
||||||
self.values[child.formKey] = child.value
|
self.values[child.formKey] = child.value
|
||||||
|
@ -187,20 +187,6 @@ function Util.deepMerge(obj, args)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- remove table entries if passed function returns false
|
|
||||||
function Util.prune(t, fn)
|
|
||||||
for _,k in pairs(Util.keys(t)) do
|
|
||||||
local v = t[k]
|
|
||||||
if type(v) == 'table' then
|
|
||||||
t[k] = Util.prune(v, fn)
|
|
||||||
end
|
|
||||||
if not fn(t[k]) then
|
|
||||||
t[k] = nil
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return t
|
|
||||||
end
|
|
||||||
|
|
||||||
function Util.transpose(t)
|
function Util.transpose(t)
|
||||||
local tt = { }
|
local tt = { }
|
||||||
for k,v in pairs(t) do
|
for k,v in pairs(t) do
|
||||||
|
Loading…
Reference in New Issue
Block a user