summaryrefslogtreecommitdiffstats
path: root/acf/model/model.lua
diff options
context:
space:
mode:
authorKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2013-03-20 16:53:56 +0200
committerKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2013-03-25 23:13:11 +0200
commit395da378214f4537901860b76c15ab1e405d1d3f (patch)
tree5ae8f5d888f58376db1757242b9f83fba616c876 /acf/model/model.lua
parent5d663a122ea39802c096a57ad3fb471dee347759 (diff)
downloadaconf-395da378214f4537901860b76c15ab1e405d1d3f.tar.bz2
aconf-395da378214f4537901860b76c15ab1e405d1d3f.tar.xz
new data type: set
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