diff options
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) |