summaryrefslogtreecommitdiffstats
path: root/aconf/model/node.lua
diff options
context:
space:
mode:
Diffstat (limited to 'aconf/model/node.lua')
-rw-r--r--aconf/model/node.lua35
1 files changed, 16 insertions, 19 deletions
diff --git a/aconf/model/node.lua b/aconf/model/node.lua
index 70aa4fc..b3a5ab0 100644
--- a/aconf/model/node.lua
+++ b/aconf/model/node.lua
@@ -1,5 +1,5 @@
--[[
-Copyright (c) 2012-2016 Kaarle Ritvanen
+Copyright (c) 2012-2017 Kaarle Ritvanen
See LICENSE file for license details
--]]
@@ -244,14 +244,8 @@ function M.TreeNode:init(context, params)
function mt.meta()
if not mt._meta then
- mt._meta = {type=params.dtype}
- if mt.txn then
- if mt.parent then
- mt._meta['ui-name'] =
- getmetatable(mt.parent).mmeta(mt.name)['ui-name']
- end
- mt.init_meta(mt._meta)
- end
+ mt._meta = {type=params.dtype, ['ui-name']=mt.ui_name}
+ if mt.txn then mt.init_meta(mt._meta) end
end
local res = copy(mt._meta)
@@ -264,6 +258,8 @@ function M.TreeNode:init(context, params)
if not mt.txn then return end
+ mt.ui_name = mt.parent and getmetatable(mt.parent).member_ui_name(mt.name)
+
function mt.save(k, v) rawset(self, k, v) end
function mt.__index(t, k) return mt.get(k, {private=true}) end
function mt.__newindex(t, k, v) mt.save(k, v) end
@@ -302,6 +298,16 @@ function M.Collection:init(context, params)
if not mt.txn then return end
+ mt.ui_member = params.ui_member or mt.ui_name:gsub('s$', '')
+
+ function mt.member_ui_name(name)
+ return name ~= pth.wildcard and mt.ui_member..' '..name or nil
+ end
+
+ function mt.mmeta(name)
+ return update(mt.field:meta(), {['ui-name']=mt.member_ui_name(name)})
+ end
+
function mt.init_meta(meta)
update(
meta,
@@ -309,21 +315,12 @@ function M.Collection:init(context, params)
editable=params.editable and mt.has_permission('create'),
members=mt.field:meta(),
required=params.required,
- ['ui-member']=params.ui_member or meta['ui-name']:gsub('s$', ''),
+ ['ui-member']=mt.ui_member,
widget=params.layout
}
)
end
- function mt.mmeta(name)
- local meta = mt.meta()
- local res = copy(meta.members)
- if name ~= pth.wildcard then
- res['ui-name'] = meta['ui-member']..' '..name
- end
- return res
- end
-
local function validate_key(k)
if params.key then
local kf = M.BoundMember(self, k, object.toinstance(params.key))