|
|
@ -28,7 +28,7 @@ local inspect ={ |
|
|
|
]] |
|
|
|
]] |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
inspect.tostring = _G.tostring |
|
|
|
local tostring = tostring |
|
|
|
|
|
|
|
|
|
|
|
inspect.KEY = setmetatable({}, {__tostring = function() return 'inspect.KEY' end}) |
|
|
|
inspect.KEY = setmetatable({}, {__tostring = function() return 'inspect.KEY' end}) |
|
|
|
inspect.METATABLE = setmetatable({}, {__tostring = function() return 'inspect.METATABLE' end}) |
|
|
|
inspect.METATABLE = setmetatable({}, {__tostring = function() return 'inspect.METATABLE' end}) |
|
|
@ -112,7 +112,7 @@ local function getToStringResultSafely(t, mt) |
|
|
|
local str, ok |
|
|
|
local str, ok |
|
|
|
if type(__tostring) == 'function' then |
|
|
|
if type(__tostring) == 'function' then |
|
|
|
ok, str = pcall(__tostring, t) |
|
|
|
ok, str = pcall(__tostring, t) |
|
|
|
str = ok and str or 'error: ' .. inspect.tostring(str) |
|
|
|
str = ok and str or 'error: ' .. tostring(str) |
|
|
|
end |
|
|
|
end |
|
|
|
if type(str) == 'string' and #str > 0 then return str end |
|
|
|
if type(str) == 'string' and #str > 0 then return str end |
|
|
|
end |
|
|
|
end |
|
|
@ -226,7 +226,7 @@ function Inspector:getId(v) |
|
|
|
self.maxIds[tv] = id |
|
|
|
self.maxIds[tv] = id |
|
|
|
self.ids[tv][v] = id |
|
|
|
self.ids[tv][v] = id |
|
|
|
end |
|
|
|
end |
|
|
|
return inspect.tostring(id) |
|
|
|
return tostring(id) |
|
|
|
end |
|
|
|
end |
|
|
|
|
|
|
|
|
|
|
|
function Inspector:putKey(k) |
|
|
|
function Inspector:putKey(k) |
|
|
@ -238,7 +238,7 @@ end |
|
|
|
|
|
|
|
|
|
|
|
function Inspector:putTable(t) |
|
|
|
function Inspector:putTable(t) |
|
|
|
if t == inspect.KEY or t == inspect.METATABLE then |
|
|
|
if t == inspect.KEY or t == inspect.METATABLE then |
|
|
|
self:puts(inspect.tostring(t)) |
|
|
|
self:puts(tostring(t)) |
|
|
|
elseif self:alreadyVisited(t) then |
|
|
|
elseif self:alreadyVisited(t) then |
|
|
|
self:puts('<table ', self:getId(t), '>') |
|
|
|
self:puts('<table ', self:getId(t), '>') |
|
|
|
elseif self.level >= self.depth then |
|
|
|
elseif self.level >= self.depth then |
|
|
@ -298,7 +298,7 @@ function Inspector:putValue(v) |
|
|
|
if tv == 'string' then |
|
|
|
if tv == 'string' then |
|
|
|
self:puts(smartQuote(escape(v))) |
|
|
|
self:puts(smartQuote(escape(v))) |
|
|
|
elseif tv == 'number' or tv == 'boolean' or tv == 'nil' then |
|
|
|
elseif tv == 'number' or tv == 'boolean' or tv == 'nil' then |
|
|
|
self:puts(inspect.tostring(v)) |
|
|
|
self:puts(tostring(v)) |
|
|
|
elseif tv == 'table' then |
|
|
|
elseif tv == 'table' then |
|
|
|
self:putTable(v) |
|
|
|
self:putTable(v) |
|
|
|
else |
|
|
|
else |
|
|
|