summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--LICENSE2
-rw-r--r--aconf/model/model.lua4
-rw-r--r--aconf/model/node.lua35
3 files changed, 20 insertions, 21 deletions
diff --git a/LICENSE b/LICENSE
index 3d4976c..1b1366f 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2012-2016 Kaarle Ritvanen
+Copyright (c) 2012-2017 Kaarle Ritvanen
All rights reserved.
diff --git a/aconf/model/model.lua b/aconf/model/model.lua
index 8c62535..eee05c7 100644
--- a/aconf/model/model.lua
+++ b/aconf/model/model.lua
@@ -1,5 +1,5 @@
--[[
-Copyright (c) 2012-2016 Kaarle Ritvanen
+Copyright (c) 2012-2017 Kaarle Ritvanen
See LICENSE file for license details
--]]
@@ -207,6 +207,8 @@ function M.Model:init(context)
function mt.mmeta(name) return mt.member(name):meta() end
+ function mt.member_ui_name(name) return mt.mmeta(name)['ui-name'] end
+
function mt.save(k, v)
k = normalize_name(k)
local field = mt.member(k, false, Field)
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))