diff options
Diffstat (limited to 'acf/model')
-rw-r--r-- | acf/model/init.lua | 19 | ||||
-rw-r--r-- | acf/model/model.lua | 8 | ||||
-rw-r--r-- | acf/model/node.lua | 2 |
3 files changed, 14 insertions, 15 deletions
diff --git a/acf/model/init.lua b/acf/model/init.lua index 2800ab6..71d0744 100644 --- a/acf/model/init.lua +++ b/acf/model/init.lua @@ -205,8 +205,9 @@ function Set.save_member(node, k, v) set.add(node, v) end -- experimental Mixed = class(Collection) -function Mixed:init() - super(self, Mixed):init({type=Mixed}, node.Mixed) +function Mixed:init(params) + params.type = Mixed + super(self, Mixed):init(params, node.Mixed) end function Mixed:load(context) @@ -224,14 +225,10 @@ end RootModel = new() -function RootModel:init(txn) super(self, RootModel):init{txn=txn, path='/'} end +function RootModel:init(txn) + super(self, RootModel):init{txn=txn, path='/', addr='/volatile'} +end -function register(name, path, field) - local field = to_field(field) - function field:compute(context) - context.path = '/'..name - context.addr = path - return self:load(context) - end - RootModel[name] = field +function register(name, addr, field) + RootModel[name] = to_field(field, addr) end diff --git a/acf/model/model.lua b/acf/model/model.lua index 7c27b50..0a312a3 100644 --- a/acf/model/model.lua +++ b/acf/model/model.lua @@ -20,9 +20,11 @@ local isinstance = object.isinstance local util = require('acf.util') -function to_field(obj) - if object.issubclass(obj, Model) then return fld.Model{model=obj} end - return getmetatable(obj).class and obj or obj() +function to_field(obj, addr) + if object.issubclass(obj, Model) then + return fld.Model{model=obj, addr=addr} + end + return getmetatable(obj).class and obj or obj{addr=addr} end diff --git a/acf/model/node.lua b/acf/model/node.lua index cf3111d..3960b90 100644 --- a/acf/model/node.lua +++ b/acf/model/node.lua @@ -36,7 +36,7 @@ function BoundField:init(parent, field) txn=pmt.txn, parent=parent, path=pth.join(pmt.path, name), - addr=pmt.addr and pth.join(pmt.addr, name) + addr=field.addr or pth.join(pmt.addr, name) }, unpack(arg) ) |