diff options
author | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2013-04-26 13:38:29 +0300 |
---|---|---|
committer | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2013-04-26 14:18:06 +0300 |
commit | a56c4cadafcda273706203d2bc12145a8294409b (patch) | |
tree | dd7d5844479e6727d89f5ce3a471cf624278d286 /acf/model/field.lua | |
parent | fe24757d5207309429c1b212b33d49d72429b6af (diff) | |
download | aconf-a56c4cadafcda273706203d2bc12145a8294409b.tar.bz2 aconf-a56c4cadafcda273706203d2bc12145a8294409b.tar.xz |
object-specific actions
Diffstat (limited to 'acf/model/field.lua')
-rw-r--r-- | acf/model/field.lua | 40 |
1 files changed, 27 insertions, 13 deletions
diff --git a/acf/model/field.lua b/acf/model/field.lua index 436ce2c..26d4621 100644 --- a/acf/model/field.lua +++ b/acf/model/field.lua @@ -29,12 +29,27 @@ local function auto_ui_name(name) end -Field = class() +Member = class() -function Field:init(params) +function Member:init(params) for k, v in pairs(params or {}) do if self[k] == nil then self[k] = v end end +end + +function Member:meta(context) + return { + name=self.name, + description=self.description, + ['ui-name']=self['ui-name'] or auto_ui_name(self.name) + } +end + + +Field = class(Member) + +function Field:init(params) + super(self, Field):init(params) if self.choice and not self['ui-choice'] then self['ui-choice'] = map(auto_ui_name, self.choice) @@ -47,17 +62,16 @@ end function Field:meta(context) assert(self.dtype) - return { - name=self.name, - type=self.dtype, - required=self.required, - default=self.default, - choice=self.choice, - description=self.description, - ['ui-name']=self['ui-name'] or auto_ui_name(self.name), - widget=self.widget, - ['ui-choice']=self['ui-choice'] - } + local res = super(self, Field):meta(context) + + res.type = self.dtype + res.required = self.required + res.default = self.default + res.choice = self.choice + res.widget = self.widget + res['ui-choice'] = self['ui-choice'] + + return res end function Field:load(context) |