diff options
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 |