12345678910111213141516171819202122232425262728293031 |
- local print = print
- local tconcat = table.concat
- local tinsert = table.insert
- local srep = string.rep
- local type = type
- local pairs = pairs
- local tostring = tostring
- local next = next
- local function print_r(root)
- local cache = { [root] = "." }
- local function _dump(t,space,name)
- local temp = {}
- for k,v in pairs(t) do
- local key = tostring(k)
- if cache[v] then
- tinsert(temp,"+" .. key .. " {" .. cache[v].."}")
- elseif type(v) == "table" then
- local new_key = name .. "." .. key
- cache[v] = new_key
- tinsert(temp,"+" .. key .. _dump(v,space .. (next(t,k) and "|" or " " ).. srep(" ",#key),new_key))
- else
- tinsert(temp,"+" .. key .. " [" .. tostring(v).."]")
- end
- end
- return tconcat(temp,"\n"..space)
- end
- print(_dump(root, "",""))
- end
- return print_r
|