summaryrefslogtreecommitdiffstats
path: root/acf/model/node.lua
diff options
context:
space:
mode:
Diffstat (limited to 'acf/model/node.lua')
-rw-r--r--acf/model/node.lua10
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