From bc1689c28354efc0968bdd3847d0e011fcb84b88 Mon Sep 17 00:00:00 2001 From: Kaarle Ritvanen Date: Tue, 15 Apr 2014 23:45:19 +0300 Subject: model: 'pairs' and 'ipairs' metamethods for TreeNode instances --- aconf/model/aaa.lua | 2 +- aconf/model/field.lua | 2 +- aconf/model/init.lua | 2 +- aconf/model/node.lua | 21 ++++++++++----------- aconf/model/set.lua | 2 +- 5 files changed, 14 insertions(+), 15 deletions(-) (limited to 'aconf/model') diff --git a/aconf/model/aaa.lua b/aconf/model/aaa.lua index 203b85c..c642984 100644 --- a/aconf/model/aaa.lua +++ b/aconf/model/aaa.lua @@ -90,7 +90,7 @@ Aaa.action_log = M.List{type=Record, addr=node.null_addr, visible=false} function Aaa:validate() local time = os.time() - for _, action in node.pairs(self.action_log) do + for _, action in pairs(self.action_log) do action.timestamp = time node.insert(self.audit_trail, action) end diff --git a/aconf/model/field.lua b/aconf/model/field.lua index cf14909..ca6bc1d 100644 --- a/aconf/model/field.lua +++ b/aconf/model/field.lua @@ -361,7 +361,7 @@ function M.TreeNode:save(context, value) local new = self:load(context, {create=true}) local errors = err.ErrorDict() - for k, v in node.pairs(value) do + for k, v in pairs(value) do errors:collect(self.save_member, new, k, v) end errors:raise() diff --git a/aconf/model/init.lua b/aconf/model/init.lua index cab92e7..881acea 100644 --- a/aconf/model/init.lua +++ b/aconf/model/init.lua @@ -102,7 +102,7 @@ function M.Reference:_choice(context) ) assert(isinstance(obj, node.Collection)) - for k, v in node.pairs(obj) do + for k, v in pairs(obj) do local ch = {enabled=true} if isinstance(v, node.TreeNode) then diff --git a/aconf/model/node.lua b/aconf/model/node.lua index bdf8311..b4fd685 100644 --- a/aconf/model/node.lua +++ b/aconf/model/node.lua @@ -66,6 +66,7 @@ function M.TreeNode:init(context, params) mt.name = pth.name(mt.path) mt.__eq = equal_tns + mt.__pairs = M.pairs if not (mt.txn and mt.txn.user) then mt.privileged = true end mt.escalate = mt.privileged and self or mt.class( @@ -343,6 +344,13 @@ end M.List = class(M.Collection) +local function _ipairs(mt, i) + i = i + 1 + local v = mt.load(i, {create=false}) + if v == nil then return end + return i, v +end + function M.List:init(context, params) super(self, M.List):init(context, setdefaults(params, {dtype='list'})) @@ -390,6 +398,8 @@ function M.List:init(context, params) end tmt._save(i, v) end + + function mt.__ipairs(t) return _ipairs, mt, 0 end end @@ -446,16 +456,5 @@ function M.pairs(tbl, dereference) return pairs(res) end -local function _ipairs(mt, i) - i = i + 1 - local v = mt.load(i, {create=false}) - if v == nil then return end - return i, v -end -function M.ipairs(tbl) - if not isinstance(tbl, M.TreeNode) then return ipairs(tbl) end - return _ipairs, getmetatable(tbl), 0 -end - return M diff --git a/aconf/model/set.lua b/aconf/model/set.lua index 9b37ea0..ac8904b 100644 --- a/aconf/model/set.lua +++ b/aconf/model/set.lua @@ -27,7 +27,7 @@ function M.Set:init(context, params) self, pth.wildcard, params.field ):normalize(value) - for i, member in node.pairs(self) do + for i, member in pairs(self) do if member == value then return i, value end end end -- cgit v1.2.3