diff options
Diffstat (limited to 'aconf/model/node.lua')
-rw-r--r-- | aconf/model/node.lua | 11 |
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) }, ... ) |