summaryrefslogtreecommitdiffstats
path: root/acf/model/node.lua
diff options
context:
space:
mode:
authorKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2013-04-26 13:38:29 +0300
committerKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2013-04-26 14:18:06 +0300
commita56c4cadafcda273706203d2bc12145a8294409b (patch)
treedd7d5844479e6727d89f5ce3a471cf624278d286 /acf/model/node.lua
parentfe24757d5207309429c1b212b33d49d72429b6af (diff)
downloadaconf-a56c4cadafcda273706203d2bc12145a8294409b.tar.bz2
aconf-a56c4cadafcda273706203d2bc12145a8294409b.tar.xz
object-specific actions
Diffstat (limited to 'acf/model/node.lua')
-rw-r--r--acf/model/node.lua19
1 files changed, 10 insertions, 9 deletions
diff --git a/acf/model/node.lua b/acf/model/node.lua
index 748b20d..7852c9e 100644
--- a/acf/model/node.lua
+++ b/acf/model/node.lua
@@ -14,9 +14,9 @@ local pth = require('acf.path')
local update = require('acf.util').update
-BoundField = class()
+BoundMember = class()
-function BoundField:init(parent, field)
+function BoundMember:init(parent, field)
local pmt = getmetatable(parent)
local mt = {}
@@ -80,8 +80,8 @@ function TreeNode:search(path, create)
local mt = getmetatable(self)
local name = path[1]
- if not mt.has_field(name) then
- raise(mt.path, 'Field does not exist: '..name)
+ if not mt.valid_member(name) then
+ raise(mt.path, 'Member does not exist: '..name)
end
local next = mt.get(name, create)
@@ -106,12 +106,13 @@ function Collection:init(context, params)
self.init = nil
self.search = nil
+ local field = BoundMember(self, params.field)
+
local mt = getmetatable(self)
- mt.field = BoundField(self, params.field)
- mt.meta = {type='collection', members=mt.field:meta('$')}
+ mt.meta = {type='collection', members=field:meta('$')}
- function mt.has_field(name) return true end
+ function mt.valid_member(name) return true end
function mt.mmeta(name) return mt.meta.members end
function mt.members() return mt.txn:get(mt.addr) or {} end
@@ -121,8 +122,8 @@ function Collection:init(context, params)
end
end
- function mt.load(k, create) return mt.field:load(k, create) end
- function mt.save(k, v) mt.field:save(k, v) end
+ function mt.load(k, create) return field:load(k, create) end
+ function mt.save(k, v) field:save(k, v) end
end