diff options
Diffstat (limited to 'acf/model/node.lua')
-rw-r--r-- | acf/model/node.lua | 19 |
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 |