mirror of
https://github.com/kikito/inspect.lua.git
synced 2024-12-15 14:34:21 +00:00
Added support for LrObservableTable
This commit is contained in:
parent
5941bed492
commit
a277995372
18
inspect.lua
18
inspect.lua
@ -107,10 +107,22 @@ local function getSequenceLength(t)
|
|||||||
return len - 1
|
return len - 1
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function isObservableTable(t)
|
||||||
|
return type(t) == "table" and type(t.pairs) == "function" and type(t.addObserver) == "function" and type(t.removeObserver) == "function"
|
||||||
|
end
|
||||||
|
|
||||||
|
local function tpairs(t)
|
||||||
|
if isObservableTable(t) then
|
||||||
|
return t:pairs()
|
||||||
|
else
|
||||||
|
return pairs(t)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
local function getNonSequentialKeys(t)
|
local function getNonSequentialKeys(t)
|
||||||
local keys = {}
|
local keys = {}
|
||||||
local sequenceLength = getSequenceLength(t)
|
local sequenceLength = getSequenceLength(t)
|
||||||
for k,_ in pairs(t) do
|
for k,_ in tpairs(t) do
|
||||||
if not isSequenceKey(k, sequenceLength) then table.insert(keys, k) end
|
if not isSequenceKey(k, sequenceLength) then table.insert(keys, k) end
|
||||||
end
|
end
|
||||||
table.sort(keys, sortKeys)
|
table.sort(keys, sortKeys)
|
||||||
@ -133,7 +145,7 @@ local function countTableAppearances(t, tableAppearances)
|
|||||||
if type(t) == 'table' then
|
if type(t) == 'table' then
|
||||||
if not tableAppearances[t] then
|
if not tableAppearances[t] then
|
||||||
tableAppearances[t] = 1
|
tableAppearances[t] = 1
|
||||||
for k,v in pairs(t) do
|
for k,v in tpairs(t) do
|
||||||
countTableAppearances(k, tableAppearances)
|
countTableAppearances(k, tableAppearances)
|
||||||
countTableAppearances(v, tableAppearances)
|
countTableAppearances(v, tableAppearances)
|
||||||
end
|
end
|
||||||
@ -172,7 +184,7 @@ local function processRecursive(process, item, path, visited)
|
|||||||
visited[item] = processedCopy
|
visited[item] = processedCopy
|
||||||
local processedKey
|
local processedKey
|
||||||
|
|
||||||
for k,v in pairs(processed) do
|
for k,v in tpairs(processed) do
|
||||||
processedKey = processRecursive(process, k, makePath(path, k, inspect.KEY), visited)
|
processedKey = processRecursive(process, k, makePath(path, k, inspect.KEY), visited)
|
||||||
if processedKey ~= nil then
|
if processedKey ~= nil then
|
||||||
processedCopy[processedKey] = processRecursive(process, v, makePath(path, processedKey), visited)
|
processedCopy[processedKey] = processRecursive(process, v, makePath(path, processedKey), visited)
|
||||||
|
Loading…
Reference in New Issue
Block a user