diff options
-rw-r--r-- | acf/model/node.lua | 14 |
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 |