51 lines
1.4 KiB
Lua
51 lines
1.4 KiB
Lua
-- Prints a table and all of its contents.
|
|
function print_r(t)
|
|
local print_r_cache={}
|
|
local function sub_print_r(t, indent)
|
|
if (print_r_cache[tostring(t)]) then
|
|
print(indent.."*"..tostring(t))
|
|
else
|
|
print_r_cache[tostring(t)]=true
|
|
if (type(t)=="table") then
|
|
for pos,val in pairs(t) do
|
|
if (type(val)=="table") then
|
|
print(indent.."["..pos.."] => "..tostring(t).." {")
|
|
sub_print_r(val,indent..string.rep(" ",string.len(pos)+8))
|
|
print(indent..string.rep(" ",string.len(pos)+6).."}")
|
|
elseif (type(val)=="string") then
|
|
print(indent.."["..pos..'] => "'..val..'"')
|
|
else
|
|
print(indent.."["..pos.."] => "..tostring(val))
|
|
end
|
|
end
|
|
else
|
|
print(indent..tostring(t))
|
|
end
|
|
end
|
|
end
|
|
if (type(t)=="table") then
|
|
print(tostring(t).." {")
|
|
sub_print_r(t," ")
|
|
print("}")
|
|
else
|
|
sub_print_r(t," ")
|
|
end
|
|
print()
|
|
end
|
|
|
|
-- Merges two tables and returns the resulting table.
|
|
function merge_tables(t1, t2)
|
|
local result = {}
|
|
for k,v in pairs(t1 or {}) do result[k] = v end
|
|
for k,v in pairs(t2 or {}) do result[k] = v end
|
|
return result
|
|
end
|
|
|
|
-- Merges to arrays and returns the resulting array.
|
|
function merge_arrays(t1, t2)
|
|
local result = {}
|
|
for k,v in pairs(t1 or {}) do result[#result + 1] = v end
|
|
for k,v in pairs(t2 or {}) do result[#result + 1] = v end
|
|
return result
|
|
end
|