mirror of
https://github.com/minetest-mods/moreblocks.git
synced 2024-11-15 23:10:18 +01:00
72 lines
1.2 KiB
Lua
72 lines
1.2 KiB
Lua
stairsplus.util = {
|
|
table_set_all = function(t, other_table)
|
|
for key, value in pairs(other_table) do
|
|
t[key] = value
|
|
end
|
|
return t
|
|
end,
|
|
|
|
table_is_empty = function(t)
|
|
return not next(t)
|
|
end,
|
|
|
|
table_sort_keys = function(t, sort_function)
|
|
local sorted = {}
|
|
for key in pairs(t) do
|
|
table.insert(sorted, key)
|
|
end
|
|
if sort_function then
|
|
table.sort(sorted, sort_function)
|
|
else
|
|
table.sort(sorted)
|
|
end
|
|
return sorted
|
|
end,
|
|
|
|
table_equals = function(t1, t2)
|
|
if t1 == t2 then
|
|
return true
|
|
end
|
|
|
|
local tt1 = type(t1)
|
|
local tt2 = type(t2)
|
|
|
|
if tt1 ~= tt2 then
|
|
return false
|
|
end
|
|
|
|
if tt1 ~= "table" or tt2 ~= "table" then
|
|
return t1 == t2
|
|
end
|
|
|
|
for k1, v1 in pairs(t1) do
|
|
if not v1 == t2[k1] then
|
|
return false
|
|
end
|
|
end
|
|
|
|
for k2, v2 in pairs(t2) do
|
|
if not t1[k2] == v2 then
|
|
return false
|
|
end
|
|
end
|
|
|
|
return true
|
|
end,
|
|
|
|
check_call = function(func)
|
|
-- wrap a function w/ logic to avoid crashing the game
|
|
local f = function(...)
|
|
local status, out = pcall(func, ...)
|
|
if status then
|
|
return out
|
|
else
|
|
local message = ("Error (func): %s %s"):format(out, dump({...}))
|
|
stairsplus.log("error", message)
|
|
error(message)
|
|
end
|
|
end
|
|
return f
|
|
end
|
|
}
|