Last active
November 5, 2021 07:39
-
-
Save rangercyh/5814003 to your computer and use it in GitHub Desktop.
按照lua的table格式进行缩进打印lua的table,目前还不支持key为table,因为是自己还没想好,如果key是table的时候怎么打印出来比较优美
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function print_lua_table (lua_table, indent) | |
indent = indent or 0 | |
for k, v in pairs(lua_table) do | |
if type(k) == "string" then | |
k = string.format("%q", k) | |
end | |
local szSuffix = "" | |
if type(v) == "table" then | |
szSuffix = "{" | |
end | |
local szPrefix = string.rep(" ", indent) | |
formatting = szPrefix.."["..k.."]".." = "..szSuffix | |
if type(v) == "table" then | |
print(formatting) | |
print_lua_table(v, indent + 1) | |
print(szPrefix.."},") | |
else | |
local szValue = "" | |
if type(v) == "string" then | |
szValue = string.format("%q", v) | |
else | |
szValue = tostring(v) | |
end | |
print(formatting..szValue..",") | |
end | |
end | |
end |
not very good. can`t print recursive table. like _G
better use this by feng yun
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
in fact that, I wrote these code not for recusive table, I have no idea how to display a recusive table elegantly as well as if the key is a table.however,thanks:)
666
you can just use 'luarocks install luatabledump' to install the model. https://luarocks.org/modules/rangercyh/luatabledump
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
very good