44 lines
669 B
Lua
44 lines
669 B
Lua
local utils = {}
|
|
|
|
utils.sizeof = function(t)
|
|
if not t then
|
|
return 0
|
|
end
|
|
|
|
local size = 0
|
|
for k,v in pairs(t) do
|
|
size = size + 1
|
|
end
|
|
return size
|
|
end
|
|
|
|
utils.difference = function(a, b)
|
|
local aa = {}
|
|
for k,v in pairs(a) do aa[v]=true end
|
|
for k,v in pairs(b) do aa[v]=nil end
|
|
local ret = {}
|
|
local n = 0
|
|
for k,v in pairs(a) do
|
|
if aa[v] then n=n+1 ret[n]=v end
|
|
end
|
|
return ret
|
|
end
|
|
|
|
utils.shallowClone = function(t)
|
|
local res = {}
|
|
for k,v in pairs(t) do
|
|
res[k] = v
|
|
end
|
|
return res
|
|
end
|
|
|
|
|
|
utils.find = function(t, predicate)
|
|
for k,v in pairs(t) do
|
|
if predicate(v, k) then
|
|
return v, k
|
|
end
|
|
end
|
|
end
|
|
|
|
return utils |