diff --git a/inspect.lua b/inspect.lua index 7547090..c2ba8da 100644 --- a/inspect.lua +++ b/inspect.lua @@ -113,24 +113,26 @@ end function Inspector:puts(...) local args = {...} + local len = #self.buffer for i=1, #args do - table.insert(self.buffer, tostring(args[i])) + len = len + 1 + self.buffer[len] = tostring(args[i]) end return self end -function Inspector:putComma(comma) +function Inspector:commaControl(comma) if comma then self:puts(',') end return true end function Inspector:putTable(t) if self:alreadySeen(t) then - self:puts('') + self:puts('
') elseif self.level >= self.depth then self:puts('{...}') else - self:puts('<',self:getOrCreateCounter(t),'>{') + self:puts('<',self:getCounter(t),'>{') self:down() local length = #t @@ -144,19 +146,19 @@ function Inspector:putTable(t) local comma = false for i=1, length do - comma = self:putComma(comma) + comma = self:commaControl(comma) self:puts(' '):putValue(t[i]) end local dictKeys = getDictionaryKeys(t) for _,k in ipairs(dictKeys) do - comma = self:putComma(comma) + comma = self:commaControl(comma) self:tabify():putKey(k):puts(' = '):putValue(t[k]) end if mt then - comma = self:putComma(comma) + comma = self:commaControl(comma) self:tabify():puts(' = '):putValue(mt) end self:up() @@ -172,11 +174,10 @@ function Inspector:putTable(t) end function Inspector:alreadySeen(v) - local tv = type(v) - return self.pools[tv][v] ~= nil + return self.pools[type(v)][v] ~= nil end -function Inspector:getOrCreateCounter(v) +function Inspector:getCounter(v) local tv = type(v) local current = self.pools[tv][v] if not current then @@ -197,7 +198,7 @@ function Inspector:putValue(v) elseif tv == 'table' then self:putTable(v) else - self:puts('<',tv,' ',self:getOrCreateCounter(v),'>') + self:puts('<',tv,' ',self:getCounter(v),'>') end return self end