diff options
Diffstat (limited to 'acf/model/node.lua')
-rw-r--r-- | acf/model/node.lua | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/acf/model/node.lua b/acf/model/node.lua index 7be92cb..56d3416 100644 --- a/acf/model/node.lua +++ b/acf/model/node.lua @@ -51,6 +51,7 @@ function M.TreeNode:init(context) local mt = getmetatable(self) util.update(mt, context) + mt.dereference = true mt.meta = {} function mt.get(k, create) return mt.load(k, {create=create}) end @@ -246,11 +247,16 @@ for _, mf in ipairs{ } do M[mf] = meta_func(mf) end -function M.pairs(tbl) +function M.pairs(tbl, dereference) if not isinstance(tbl, M.TreeNode) then return pairs(tbl) end + local mt = getmetatable(tbl) + if dereference == nil then dereference = mt.dereference end + local res = {} - for _, member in ipairs(mt.members()) do res[member] = mt.load(member) end + for _, member in ipairs(mt.members()) do + res[member] = mt.load(member, {dereference=dereference}) + end return pairs(res) end |