summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--acf/model/node.lua14
1 files changed, 13 insertions, 1 deletions
diff --git a/acf/model/node.lua b/acf/model/node.lua
index 7852c9e..8028bcb 100644
--- a/acf/model/node.lua
+++ b/acf/model/node.lua
@@ -156,11 +156,23 @@ validate = meta_func('validate')
local rawpairs = pairs
+local rawipairs = ipairs
function pairs(tbl)
if not object.isinstance(tbl, TreeNode) then return rawpairs(tbl) end
local mt = getmetatable(tbl)
local res = {}
- for _, member in ipairs(mt.members()) do res[member] = mt.load(member) end
+ for _, member in rawipairs(mt.members()) do res[member] = mt.load(member) end
return rawpairs(res)
end
+
+local function _ipairs(mt, i)
+ i = i + 1
+ local v = mt.load(i)
+ if v == nil then return end
+ return i, v
+end
+function ipairs(tbl)
+ if not object.isinstance(tbl, TreeNode) then return rawipairs(tbl) end
+ return _ipairs, getmetatable(tbl), 0
+end