summaryrefslogtreecommitdiffstats
path: root/acf/model/init.lua
diff options
context:
space:
mode:
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