summaryrefslogtreecommitdiffstats
path: root/acf2/model
diff options
context:
space:
mode:
authorKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2013-12-11 12:40:46 +0200
committerKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2013-12-11 13:01:39 +0200
commitbe2cb5052a6bc3f7c0cde79d15be9e5babc6a970 (patch)
treeb6ffede9c18daf583ab4e6d1180b342144e8108e /acf2/model
parente813f5b0ddf26758e02a693867ddc025197c3373 (diff)
downloadacf2-be2cb5052a6bc3f7c0cde79d15be9e5babc6a970.tar.bz2
acf2-be2cb5052a6bc3f7c0cde79d15be9e5babc6a970.tar.xz
model: optimize validation of TreeNode fields
Diffstat (limited to 'acf2/model')
-rw-r--r--acf2/model/field.lua10
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)