From 04aea86a32258898a5586d2163d34b4e104036af Mon Sep 17 00:00:00 2001 From: kikito Date: Sat, 14 Sep 2013 16:12:24 +0200 Subject: [PATCH] refactoring of id-related metatables --- inspect.lua | 33 ++++++++++++++------------------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/inspect.lua b/inspect.lua index 7a9786e..fe728d4 100644 --- a/inspect.lua +++ b/inspect.lua @@ -98,23 +98,18 @@ local function getToStringResultSafely(t, mt) return string end -local inspectorMaxIdsMetaTable = { - __index = function (t, k) - if not rawget(t, k) then - rawset(t, k, 0) - end +local maxIdsMetaTable = { + __index = function(self, typeName) + rawset(self, typeName, 0) return 0 end } -local inspectorIdsMetaTable = { - __index = function (t, k) - local v = rawget(t, k) - if not v then - rawset(t, k, setmetatable({}, {__mode = "kv"})) - v = rawget(t, k) - end - return v +local idsMetaTable = { + __index = function (self, typeName) + local col = setmetatable({}, {__mode = "kv"}) + rawset(self, typeName, col) + return col end } @@ -122,12 +117,12 @@ local Inspector = {} function Inspector:new(t, depth) local inspector = { - buffer = {}, - depth = depth, - level = 0, - maxIds = setmetatable({}, inspectorMaxIdsMetaTable), - ids = setmetatable({}, inspectorIdsMetaTable), - tableAppearances = setmetatable({}, {__mode = "k"}) + buffer = {}, + depth = depth, + level = 0, + tableAppearances = setmetatable({}, {__mode = "k"}), + maxIds = setmetatable({}, maxIdsMetaTable), + ids = setmetatable({}, idsMetaTable), } setmetatable(inspector, {__index = Inspector})