debug_log.lua
local _M = {}
---
-- @function: 获取table的字符串格式内容,递归
-- @tab: table
-- @ind:不用传此参数,递归用(前缀格式(空格))
-- @return: format string of the table
function _M.dump_table(tab, ind)
if (tab == nil) then
return "nil"
end ;
local str = "{";
if (ind == nil) then
ind = " ";
end ;
--//each of table
for k, v in pairs(tab) do
--//key
if (type(k) == "string") then
k = tostring(k) .. " = ";
else
k = "[" .. tostring(k) .. "] = ";
end ;--//end if
--//value
local s = "";
if (type(v) == "nil") then
s = "nil";
elseif (type(v) == "boolean") then
if (v) then
s = "true";
else
s = "false";
end ;
elseif (type(v) == "number") then
s = v;
elseif (type(v) == "string") then
s = "\"" .. v .. "\"";
elseif (type(v) == "table") then
s = _M.dump_table(v, ind .. " ");
s = string.sub(s, 1, #s - 1);
elseif (type(v) == "function") then
s = "function : " .. v;
elseif (type(v) == "thread") then
s = "thread : " .. tostring(v);
elseif (type(v) == "userdata") then
s = "userdata : " .. tostring(v);
else
s = "nuknow : " .. tostring(v);
end ;--//end if
--//Contact
str = str .. "\n" .. ind .. k .. s .. " ,";
end --//end for
--//return the format string
local sss = string.sub(str, 1, #str - 1);
if (#ind > 0) then
ind = string.sub(ind, 1, #ind - 4)
end ;
sss = sss .. "\n" .. ind .. "}\n";
return sss;--string.sub(str,1,#str-1).."\n"..ind.."}\n";
end;--//end function
--//网摘,直接打印到屏幕
function _M.print_table(t, n)
if "table" ~= type(t) then
return 0;
end
n = n or 0;
local str_space = "";
for i = 1, n do
str_space = str_space .. " ";
end
print(str_space .. "{");
for k, v in pairs(t) do
local str_k_v
if (type(k) == "string") then
str_k_v = str_space .. " " .. tostring(k) .. " = ";
else
str_k_v = str_space .. " [" .. tostring(k) .. "] = ";
end
if "table" == type(v) then
print(str_k_v);
_M.print_table(v, n + 1);
else
if (type(v) == "string") then
str_k_v = str_k_v .. "\"" .. tostring(v) .. "\"";
else
str_k_v = str_k_v .. tostring(v);
end
print(str_k_v);
end
end
print(str_space .. "}");
end
return _M;