summaryrefslogtreecommitdiffstats
path: root/acf2/model/model.lua
diff options
context:
space:
mode:
authorKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2013-11-25 20:25:38 +0200
committerKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2013-11-25 23:28:39 +0200
commit878c1bc580d89d70d330eb896d7affc88f776ce0 (patch)
treee2fde0836efcc94052482e0574b48d24784a8639 /acf2/model/model.lua
parenta03cf9336873f63a98d0049996465c26b40405b8 (diff)
downloadaconf-878c1bc580d89d70d330eb896d7affc88f776ce0.tar.bz2
aconf-878c1bc580d89d70d330eb896d7affc88f776ce0.tar.xz
model: lazy evaluation for member metadata
Diffstat (limited to 'acf2/model/model.lua')
-rw-r--r--acf2/model/model.lua13
1 files changed, 9 insertions, 4 deletions
diff --git a/acf2/model/model.lua b/acf2/model/model.lua
index 0867fe6..b4f4603 100644
--- a/acf2/model/model.lua
+++ b/acf2/model/model.lua
@@ -183,12 +183,17 @@ function M.Model:init(context)
return map(function(m) return m:meta() end, _members(tpe))
end
- mt.meta.type = 'model'
- mt.meta.fields = tmeta(Field)
- mt.meta.actions = tmeta(M.Action)
+ mt._meta.type = 'model'
+ function mt.meta()
+ if not mt._meta.fields then
+ mt._meta.fields = tmeta(Field)
+ mt._meta.actions = tmeta(M.Action)
+ end
+ return mt._meta
+ end
function mt.members()
- return map(function(f) return f.name end, mt.meta.fields)
+ return map(function(f) return f.name end, mt.meta().fields)
end
function mt.validate()