summaryrefslogtreecommitdiffstats
path: root/acf/model/node.lua
diff options
context:
space:
mode:
authorKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2013-10-04 13:01:49 +0300
committerKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2013-10-04 13:48:15 +0300
commit021bf1538afb8c8a80ed3252f30f276653d06900 (patch)
tree90f7eac73bfb7a47a7c2a62e021509e52ae56965 /acf/model/node.lua
parentad885ed16e9c4c42976ece558d70c39e77338232 (diff)
downloadaconf-021bf1538afb8c8a80ed3252f30f276653d06900.tar.bz2
aconf-021bf1538afb8c8a80ed3252f30f276653d06900.tar.xz
model: do not automatically dereference set members
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