xenia/tools/build/scripts/util.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