summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--aconf/model/node.lua29
1 files changed, 13 insertions, 16 deletions
diff --git a/aconf/model/node.lua b/aconf/model/node.lua
index 2a4687c..735e7df 100644
--- a/aconf/model/node.lua
+++ b/aconf/model/node.lua
@@ -32,27 +32,24 @@ M.BoundMember = class()
function M.BoundMember:init(parent, name, field)
local pmt = getmetatable(parent)
+
+ local addr = field.addr or address.escape(name)
+ if type(addr) == 'function' then addr = addr(pmt.path, name) end
+
+ local context = {
+ txn=pmt.txn,
+ privileged=pmt.privileged,
+ parent=parent,
+ path=pth.join(pmt.path, name),
+ addr=address.to_absolute(addr, pmt.addr)
+ }
+
local mt = {}
function mt.__index(t, k)
local member = field[k]
if type(member) ~= 'function' then return member end
-
- local addr = field.addr or address.escape(name)
- if type(addr) == 'function' then addr = addr(pmt.path, name) end
- return function(self, ...)
- return member(
- field,
- {
- txn=pmt.txn,
- privileged=pmt.privileged,
- parent=parent,
- path=pth.join(pmt.path, name),
- addr=address.to_absolute(addr, pmt.addr)
- },
- ...
- )
- end
+ return function(self, ...) return member(field, context, ...) end
end
setmetatable(self, mt)