summaryrefslogtreecommitdiffstats
path: root/acf2/model/field.lua
diff options
context:
space:
mode:
authorKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2013-12-17 16:56:39 +0200
committerKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2013-12-17 19:26:32 +0200
commit96d70925489885912caecf59fbd3c6b9c25a4b49 (patch)
tree6692dbaec9d328c8de307acb3a8c3e3cf62a2cfb /acf2/model/field.lua
parent4ac68efd4bd53637f4051ce93e74370b08922812 (diff)
downloadaconf-96d70925489885912caecf59fbd3c6b9c25a4b49.tar.bz2
aconf-96d70925489885912caecf59fbd3c6b9c25a4b49.tar.xz
read-only collections
Diffstat (limited to 'acf2/model/field.lua')
-rw-r--r--acf2/model/field.lua14
1 files changed, 10 insertions, 4 deletions
diff --git a/acf2/model/field.lua b/acf2/model/field.lua
index 6587cdc..57c558f 100644
--- a/acf2/model/field.lua
+++ b/acf2/model/field.lua
@@ -158,6 +158,12 @@ function M.Field:_validate(context, value)
return save
end
+function M.Field:check_editable(context)
+ if not self:editable(context) then
+ raise(context.path, 'Is not editable')
+ end
+end
+
function M.Field:check_required(context)
if self.required then raise(context.path, 'Required value not set') end
end
@@ -167,16 +173,14 @@ function M.Field:normalize(context, value) return value end
function M.Field:validate(context, value) end
function M.Field:save(context, value)
- if not self:editable(context) then
- raise(context.path, 'Is not editable')
- end
+ self:check_editable(context)
self:_save(context, self:_validate(context, value))
end
function M.Field:_save(context, value) context.txn:set(context.addr, value) end
function M.Field:validate_saved(context)
- self:save(context, self:load(context))
+ if self:editable(context) then self:save(context, self:load(context)) end
end
@@ -265,6 +269,8 @@ function M.TreeNode:load(context, options)
end
function M.TreeNode:save(context, value)
+ self:check_editable(context)
+
local path = context.path
if value == path then return end