diff options
author | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2013-12-11 12:40:46 +0200 |
---|---|---|
committer | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2013-12-11 13:01:39 +0200 |
commit | be2cb5052a6bc3f7c0cde79d15be9e5babc6a970 (patch) | |
tree | b6ffede9c18daf583ab4e6d1180b342144e8108e /acf2/model/field.lua | |
parent | e813f5b0ddf26758e02a693867ddc025197c3373 (diff) | |
download | aconf-be2cb5052a6bc3f7c0cde79d15be9e5babc6a970.tar.bz2 aconf-be2cb5052a6bc3f7c0cde79d15be9e5babc6a970.tar.xz |
model: optimize validation of TreeNode fields
Diffstat (limited to 'acf2/model/field.lua')
-rw-r--r-- | acf2/model/field.lua | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/acf2/model/field.lua b/acf2/model/field.lua index e633a63..6277ec9 100644 --- a/acf2/model/field.lua +++ b/acf2/model/field.lua @@ -120,7 +120,7 @@ function M.Field:_load(context) return context.txn:get(context.addr) end function M.Field:_validate(context, value) if value == nil then - if self.required then raise(context.path, 'Required value not set') end + self:check_required(context) return end @@ -145,6 +145,10 @@ function M.Field:_validate(context, value) return save end +function M.Field:check_required(context) + if self.required then raise(context.path, 'Required value not set') end +end + function M.Field:normalize(context, value) return value end function M.Field:validate(context, value) end @@ -274,6 +278,10 @@ end function M.TreeNode.save_member(node, k, v) node[k] = v end +function M.TreeNode:validate_saved(context) + if self:load(context) == nil then self:check_required(context) end +end + M.Model = class(M.TreeNode) |