summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--aconf/model/node.lua10
1 files changed, 6 insertions, 4 deletions
diff --git a/aconf/model/node.lua b/aconf/model/node.lua
index 62a860c..56b05cb 100644
--- a/aconf/model/node.lua
+++ b/aconf/model/node.lua
@@ -127,11 +127,13 @@ function M.TreeNode:init(context, params)
function mt.removable() return true end
+ function mt.value_removable(v)
+ return not isinstance(v, M.TreeNode) or getmetatable(v).removable()
+ end
+
function mt.key_removable(k)
- local v = mt.load(k, {dereference=false})
- return params.editable and (
- not isinstance(v, M.TreeNode) or getmetatable(v).removable()
- )
+ return params.editable and
+ mt.value_removable(mt.load(k, {dereference=false}))
end
function mt.check_removable(k, v)