summaryrefslogtreecommitdiffstats
path: root/acf/model/model.lua
diff options
context:
space:
mode:
Diffstat (limited to 'acf/model/model.lua')
-rw-r--r--acf/model/model.lua35
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