summaryrefslogtreecommitdiffstats
path: root/aconf
diff options
context:
space:
mode:
authorKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2014-03-17 18:51:35 +0200
committerKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2014-03-25 09:02:57 +0200
commit96b35ceb0b8e35b39acd7e8a3c30861739eaf01c (patch)
treec6ed6150a48237283e290adfb3a03fa10e172c07 /aconf
parentd5bd615d0079a61c3bb498ce942a119b7d99884a (diff)
downloadaconf-96b35ceb0b8e35b39acd7e8a3c30861739eaf01c.tar.bz2
aconf-96b35ceb0b8e35b39acd7e8a3c30861739eaf01c.tar.xz
model: make match a method of Model instances
Diffstat (limited to 'aconf')
-rw-r--r--aconf/model/init.lua2
-rw-r--r--aconf/model/model.lua16
-rw-r--r--aconf/model/node.lua1
3 files changed, 9 insertions, 10 deletions
diff --git a/aconf/model/init.lua b/aconf/model/init.lua
index e58d2f0..e3395cc 100644
--- a/aconf/model/init.lua
+++ b/aconf/model/init.lua
@@ -113,7 +113,7 @@ function M.Reference:_choice(context)
ch.value = self.dereference and ch.ref or ch.be_value
if self.filter then
assert(isinstance(v, model.Model))
- if not node.match(v, self.filter) then ch.enabled = false end
+ if not v:match(self.filter) then ch.enabled = false end
end
end
diff --git a/aconf/model/model.lua b/aconf/model/model.lua
index e1b61bf..747d277 100644
--- a/aconf/model/model.lua
+++ b/aconf/model/model.lua
@@ -200,16 +200,9 @@ function M.Model:init(context)
return map(function(f) return f.name end, mt.meta().fields)
end
- function mt.match(filter)
- for k, v in pairs(filter) do
- if not util.contains(v, mt.load(k)) then return false end
- end
- return true
- end
-
function mt.validate()
for _, f in ipairs(_members(Field)) do
- if mt.match(f.condition or {}) then f:validate_saved()
+ if self:match(f.condition or {}) then f:validate_saved()
elseif f:_editable() then f:_save() end
end
if self.validate then self:validate() end
@@ -224,5 +217,12 @@ function M.Model:init(context)
for _, f in ipairs(_members(Model)) do mt.load(f.name) end
end
+function M.Model:match(filter)
+ for k, v in pairs(filter) do
+ if not util.contains(v, getmetatable(self).load(k)) then return false end
+ end
+ return true
+end
+
return M
diff --git a/aconf/model/node.lua b/aconf/model/node.lua
index 6cca48e..0f9c552 100644
--- a/aconf/model/node.lua
+++ b/aconf/model/node.lua
@@ -343,7 +343,6 @@ for _, mf in ipairs{
'contains',
'has_permission',
'insert',
- 'match',
'meta',
'mmeta',
'name',