Posted 11 March 2015 - 07:49 PM
I DID NOT write this I cannot recall exactly where I found it but I've used it like crazy lately and it's super useful just like print_r for debugging
just call print(dumpvar(table))
or you can also use it to write a table to file
just call print(dumpvar(table))
or you can also use it to write a table to file
Spoiler
function dumpvar(data)
-- cache of tables already printed, to avoid infinite recursive loops
local tablecache = {}
local buffer = ""
local padder = " "
local function _dumpvar(d, depth)
local t = type(d)
local str = tostring(d)
if (t == "table") then
if (tablecache[str]) then
-- table already dumped before, so we dont
-- dump it again, just mention it
buffer = buffer.."<"..str..">\n"
else
tablecache[str] = (tablecache[str] or 0) + 1
buffer = buffer.."("..str..") {\n"
for k, v in pairs(d) do
buffer = buffer..string.rep(padder, depth+1).."["..k.."] => "
_dumpvar(v, depth+1)
end
buffer = buffer..string.rep(padder, depth).."}\n"
end
elseif (t == "number") then
buffer = buffer.."("..t..") "..str.."\n"
else
buffer = buffer.."("..t..") \""..str.."\"\n"
end
end
_dumpvar(data, 0)
return buffer
end