diff options
author | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2013-11-25 20:25:38 +0200 |
---|---|---|
committer | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2013-11-25 23:28:39 +0200 |
commit | 878c1bc580d89d70d330eb896d7affc88f776ce0 (patch) | |
tree | e2fde0836efcc94052482e0574b48d24784a8639 /acf2/model/model.lua | |
parent | a03cf9336873f63a98d0049996465c26b40405b8 (diff) | |
download | aconf-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.lua | 13 |
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() |