mirror of
https://github.com/kikito/inspect.lua.git
synced 2024-12-15 14:34:21 +00:00
changed function processRecursive
This commit is contained in:
parent
89588bd4d9
commit
1f54536b56
23
inspect.lua
23
inspect.lua
@ -164,36 +164,31 @@ local function makePath(path, ...)
|
||||
return newPath
|
||||
end
|
||||
|
||||
local function processRecursive(process, item, path)
|
||||
local visited = {}
|
||||
local function processRecursive(process, item, path, visited)
|
||||
|
||||
local function processRecursive2(item2, path2)
|
||||
if item2 == nil then return nil end
|
||||
if visited[item2] then return visited[item2] end
|
||||
if item == nil then return nil end
|
||||
if visited[item] then return visited[item] end
|
||||
|
||||
local processed = process(item2, path2)
|
||||
local processed = process(item, path)
|
||||
if type(processed) == 'table' then
|
||||
local processedCopy = {}
|
||||
visited[item2] = processedCopy
|
||||
visited[item] = processedCopy
|
||||
local processedKey
|
||||
|
||||
for k,v in pairs(processed) do
|
||||
processedKey = processRecursive2(k, makePath(path2, k, inspect.KEY))
|
||||
processedKey = processRecursive(process, k, makePath(path, k, inspect.KEY), visited)
|
||||
if processedKey ~= nil then
|
||||
processedCopy[processedKey] = processRecursive2(v, makePath(path2, processedKey))
|
||||
processedCopy[processedKey] = processRecursive(process, v, makePath(path, processedKey), visited)
|
||||
end
|
||||
end
|
||||
|
||||
local mt = processRecursive2(getmetatable(processed), makePath(path2, inspect.METATABLE))
|
||||
local mt = processRecursive(process, getmetatable(processed), makePath(path, inspect.METATABLE), visited)
|
||||
setmetatable(processedCopy, mt)
|
||||
processed = processedCopy
|
||||
end
|
||||
return processed
|
||||
end
|
||||
|
||||
return processRecursive2(item, path)
|
||||
end
|
||||
|
||||
|
||||
|
||||
-------------------------------------------------------------------
|
||||
@ -324,7 +319,7 @@ function inspect.inspect(root, options)
|
||||
local process = options.process
|
||||
|
||||
if process then
|
||||
root = processRecursive(process, root, {})
|
||||
root = processRecursive(process, root, {}, {})
|
||||
end
|
||||
|
||||
local inspector = setmetatable({
|
||||
|
Loading…
Reference in New Issue
Block a user