summaryrefslogtreecommitdiffstats
path: root/acf/model/node.lua
diff options
context:
space:
mode:
authorKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2013-06-27 15:10:29 +0300
committerKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2013-06-28 13:24:36 +0300
commite6ed4efcbd9b87641e471d0879ab8ff70867f544 (patch)
treef9161d7d33940d2a8334a1bb788e5136912aa024 /acf/model/node.lua
parenta68e8d3ed61c991b5b5af1de3a19d74c3ed21d74 (diff)
downloadaconf-e6ed4efcbd9b87641e471d0879ab8ff70867f544.tar.bz2
aconf-e6ed4efcbd9b87641e471d0879ab8ff70867f544.tar.xz
collect topological information on models
Diffstat (limited to 'acf/model/node.lua')
-rw-r--r--acf/model/node.lua10
1 files changed, 8 insertions, 2 deletions
diff --git a/acf/model/node.lua b/acf/model/node.lua
index 380f809..eb06b2d 100644
--- a/acf/model/node.lua
+++ b/acf/model/node.lua
@@ -56,6 +56,9 @@ function TreeNode:init(context)
util.update(mt, context)
mt.meta = {}
+
+ if not mt.txn then return end
+
if mt.parent then
mt.meta['ui-name'] = getmetatable(mt.parent).mmeta(
pth.name(mt.path)
@@ -118,6 +121,10 @@ function Collection:init(context, params)
local field = BoundMember(self, params.field)
local mt = getmetatable(self)
+ function mt.topology() return field:topology(pth.wildcard) end
+ function mt.valid_member(name) return true end
+
+ if not mt.txn then return end
mt.meta.type = 'collection'
mt.meta.members = field:meta(pth.wildcard)
@@ -125,8 +132,6 @@ function Collection:init(context, params)
mt.meta['ui-name'], 's$', ''
)
- function mt.valid_member(name) return true end
-
function mt.mmeta(name)
local res = util.copy(mt.meta.members)
res['ui-name'] = mt.meta['ui-member']..' '..name
@@ -210,6 +215,7 @@ meta = meta_func('meta')
mmeta = meta_func('mmeta')
parent = meta_func('parent')
path = meta_func('path')
+topology = meta_func('topology')
validate = meta_func('validate')