12345678910111213141516171819202122232425262728293031323334353637383940 |
- local print = print
- local tconcat = table.concat
- local tinsert = table.insert
- local srep = string.rep
- local type = type
- local pairs = pairs
- local tostring = _tostring or tostring
- local next = next
- function print_rs(root)
- if type(root) ~= "table" then
- return "is " .. type(root) .. " not table"
- end
- 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
- return _dump(root, "","")
- end
- function print_r(root)
- print(print_rs(root))
- end
- return print_r
|