diff options
author | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2013-05-09 16:44:04 +0300 |
---|---|---|
committer | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2013-05-09 16:50:46 +0300 |
commit | 8fb5828d05ba436eff65eb0753ba1dfb1ad1b797 (patch) | |
tree | 3f7c7ecfb3ec864ed867dc2f01c484cd241f9959 /acf/model/field.lua | |
parent | bd7b76e3316959028fc7686357fc916f56a4d10b (diff) | |
download | aconf-8fb5828d05ba436eff65eb0753ba1dfb1ad1b797.tar.bz2 aconf-8fb5828d05ba436eff65eb0753ba1dfb1ad1b797.tar.xz |
basic network configuration module
Diffstat (limited to 'acf/model/field.lua')
-rw-r--r-- | acf/model/field.lua | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/acf/model/field.lua b/acf/model/field.lua index ad26818..8927dfd 100644 --- a/acf/model/field.lua +++ b/acf/model/field.lua @@ -106,6 +106,67 @@ function Field:validate_saved(context) end +local Primitive = class(Field) + +function Primitive:validate(context, value) + local t = self.dtype + if type(value) ~= t then raise(context.path, 'Not a '..t) end +end + + +String = class(Primitive) + +function String:init(params) + super(self, String):init(params) + self.dtype = 'string' +end + +function String:validate(context, value) + super(self, String):validate(context, value) + if self['max-length'] and string.len(value) > self['max-length'] then + raise(context.path, 'Maximum length exceeded') + end +end + +function String:meta(context) + local res = super(self, String):meta(context) + res['max-length'] = self['max-length'] + return res +end + + +Number = class(Primitive) + +function Number:init(params) + super(self, Number):init(params) + self.dtype = 'number' +end + +function Number:_validate(context, value) + return super(self, Number):_validate( + context, + value and tonumber(value) or value + ) +end + + +Integer = class(Number) + +function Integer:validate(context, value) + super(self, Integer):validate(context, value) + if math.floor(value) ~= value then raise(context.path, 'Not an integer') end +end + + +Boolean = class(Primitive) + +function Boolean:init(params) + super(self, Boolean):init(params) + self.dtype = 'boolean' + self.widget = self.dtype +end + + TreeNode = class(Field) function TreeNode:load(context, create) |