summaryrefslogtreecommitdiffstats
path: root/aconf/model/node.lua
diff options
context:
space:
mode:
Diffstat (limited to 'aconf/model/node.lua')
-rw-r--r--aconf/model/node.lua11
1 files changed, 8 insertions, 3 deletions
diff --git a/aconf/model/node.lua b/aconf/model/node.lua
index 91f0256..21b3ec2 100644
--- a/aconf/model/node.lua
+++ b/aconf/model/node.lua
@@ -13,6 +13,7 @@ local isinstance = object.isinstance
local super = object.super
local pth = require('aconf.path')
+local address = require('aconf.path.address')
local util = require('aconf.util')
local copy = util.copy
@@ -20,7 +21,11 @@ local setdefaults = util.setdefaults
local update = util.update
-function M.null_addr(path, name) return '/null'..pth.join(path, name) end
+function M.null_addr(path, name)
+ local comps = pth.split(path)
+ table.insert(comps, pth.escape(name))
+ return address.join('/null', table.unpack(comps))
+end
M.BoundMember = class()
@@ -33,7 +38,7 @@ function M.BoundMember:init(parent, name, field)
local member = field[k]
if type(member) ~= 'function' then return member end
- local addr = field.addr or pth.escape(name)
+ local addr = field.addr or address.escape(name)
if type(addr) == 'function' then addr = addr(pmt.path, name) end
return function(self, ...)
return member(
@@ -43,7 +48,7 @@ function M.BoundMember:init(parent, name, field)
privileged=pmt.privileged,
parent=parent,
path=pth.join(pmt.path, name),
- addr=pth.to_absolute(addr, pmt.addr)
+ addr=address.to_absolute(addr, pmt.addr)
},
...
)