diff options
author | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2013-05-01 09:41:43 +0300 |
---|---|---|
committer | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2013-05-01 14:11:00 +0300 |
commit | 8a1ecf4ef917a47119c269f3adcf78cf082e0e55 (patch) | |
tree | 6b8971fe81d159d886b5d8b3278205732888c0dc /acf/model/init.lua | |
parent | 0cd6597bec4f1b5c727cedcefe40085c6aa43c3b (diff) | |
download | aconf-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.lua | 17 |
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 |