diff options
Diffstat (limited to 'acf/model/model.lua')
-rw-r--r-- | acf/model/model.lua | 35 |
1 files changed, 18 insertions, 17 deletions
diff --git a/acf/model/model.lua b/acf/model/model.lua index 5fd96a7..7c27b50 100644 --- a/acf/model/model.lua +++ b/acf/model/model.lua @@ -71,22 +71,7 @@ function Model:init(context) function mt.mmeta(name) return mt.field(name):meta() end - mt.meta = {type='model', - fields=util.map(function(f) return mt.mmeta(f) end, - self._fields)} - - function mt.members() - return util.map(function(f) return f.name end, mt.meta.fields) - end - - function mt.validate() - for _, name in ipairs(mt.members()) do - local field = mt.field(name) - if not field.compute then field:validate_saved() end - end - end - - function mt.__index(t, k) + function mt.get(k) local f = mt.field(k) if f then if f.compute then return f:compute() end @@ -95,9 +80,25 @@ function Model:init(context) return mt.class[k] end - function mt.__newindex(t, k, v) + function mt.set(k, v) local f = mt.field(k) if not f then raise(mt.path, 'Field named '..k..' does not exist') end f:save(v) end + + mt.meta = { + type='model', + fields=util.map(function(f) return mt.mmeta(f) end, self._fields) + } + + function mt.members() + return util.map(function(f) return f.name end, mt.meta.fields) + end + + function mt.validate() + for _, name in ipairs(mt.members()) do + local field = mt.field(name) + if not field.compute then field:validate_saved() end + end + end end |