[NTG-context] lua tables - how do you cope?
Lukas Prochazka
lpr at pontex.cz
Sat Jul 30 23:46:07 CEST 2016
Hello Thomas,
here is my "dump()" I've been using for several years:
----
function dump(arg, opts) -- .seen, .pfx
if type(opts) == "string" then print(opts); opts = nil
elseif opts == true then print("-- (dump)"); opts = nil
end
local pfx = opts and opts.pfx
local seen = opts and opts.seen or {}
if type(arg) == "table" then
if pfx then pfx = pfx .. "]["
else
pfx = "["
--seen = {}
end
seen[arg] = tostring(arg) --true
local keys = {}
do
-- Sort keys, if all are strings
local strs_only = true
for k in pairs(arg) do
if strs_only and type(k) ~= "string" then strs_only = false end
keys[#keys + 1] = k
end
if strs_only then table.sort(keys) end
end
for _, key in ipairs(keys) do
local val = arg[key]
io.write(pfx .. tostring(key) .. "] = " .. tostring(val) .. "\t(" .. type(val) .. ")")
if type(val) == "table" then
if seen[val] then print(" (seen)")
else
print()
dump(val, {pfx = pfx .. tostring(key), seen = seen}) --pfx .. tostring(key), seen)
end
else
print()
end
end
else
print(arg)
end
end
----
Try:
----
a = {c = 1, b = 2}; a.a = a
dump(a)
dump(a, "This is 'a'.")
----
Improvements or parametrization of visualizing style would be possible, of course...
Best regards,
Lukas
----- Original Message -----
From: Schmitz Thomas A. [mailto:thomas.schmitz at uni-bonn.de]
To: mailing list for ConTeXt users [mailto:ntg-context at ntg.nl]
Sent: Sat, 30 Jul 2016 23:01:29 +0100
Subject: Re: [NTG-context] lua tables - how do you cope?
> Thank you, but this is not what I’m looking for. I know how to sort a table, and I know the Lua table tutorial (the Lua wiki is, IMHO, really terrible and disorganized). I have to construct deeply nested tables and sometimes lose track of what is at what level of my table, so I was wondering if there was an easy way of visualizing a nested table. On the web, you can find a number of (mostly abandoned) projects; the one at http://siffiejoe.github.io/lua-microscope/ says: "Many Lua programmers have written their own pretty-printer or data dumper and some even use it for (de-)serializing Lua data structures.” So I was wondering if any of the Lua users here on the list has something they want to share.
Thomas
More information about the ntg-context
mailing list