diff options
author | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2013-10-04 13:01:49 +0300 |
---|---|---|
committer | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2013-10-04 13:48:15 +0300 |
commit | 021bf1538afb8c8a80ed3252f30f276653d06900 (patch) | |
tree | 90f7eac73bfb7a47a7c2a62e021509e52ae56965 /acf/model/node.lua | |
parent | ad885ed16e9c4c42976ece558d70c39e77338232 (diff) | |
download | aconf-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.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 |