summaryrefslogtreecommitdiffstats
path: root/acf/model/init.lua
diff options
context:
space:
mode:
authorKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2013-05-01 09:41:43 +0300
committerKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2013-05-01 14:11:00 +0300
commit8a1ecf4ef917a47119c269f3adcf78cf082e0e55 (patch)
tree6b8971fe81d159d886b5d8b3278205732888c0dc /acf/model/init.lua
parent0cd6597bec4f1b5c727cedcefe40085c6aa43c3b (diff)
downloadaconf-8a1ecf4ef917a47119c269f3adcf78cf082e0e55.tar.bz2
aconf-8a1ecf4ef917a47119c269f3adcf78cf082e0e55.tar.xz
pass reference scope to persistence manager
Diffstat (limited to 'acf/model/init.lua')
-rw-r--r--acf/model/init.lua17
1 files changed, 12 insertions, 5 deletions
diff --git a/acf/model/init.lua b/acf/model/init.lua
index 1bc190d..351c1a2 100644
--- a/acf/model/init.lua
+++ b/acf/model/init.lua
@@ -123,21 +123,28 @@ function Reference:abs_scope(context)
return pth.to_absolute(self.scope, node.path(context.parent))
end
+function Reference:scope_addr(context)
+ local txn = context.txn
+ return node.addr(
+ relabel('system', txn.search, txn, self:abs_scope(context))
+ )
+end
+
function Reference:meta(context)
local res = super(self, Reference):meta(context)
res.scope = self:abs_scope(context)
- local txn = context.txn
- local objs = txn:get(
- node.addr(relabel('system', txn.search, txn, res.scope)),
- 'table'
- ) or {}
+ local objs = context.txn:get(self:scope_addr(context), 'table') or {}
res.choice = map(function(p) return pth.join(res.scope, p) end, objs)
res['ui-choice'] = objs
return res
end
+function Reference:btype(context)
+ return 'reference'..self:scope_addr(context)
+end
+
function Reference:follow(context, value)
return context.txn:search(pth.mjoin(self:abs_scope(context), value))
end