summaryrefslogtreecommitdiffstats
path: root/aconf/model/root.lua
diff options
context:
space:
mode:
Diffstat (limited to 'aconf/model/root.lua')
-rw-r--r--aconf/model/root.lua8
1 files changed, 5 insertions, 3 deletions
diff --git a/aconf/model/root.lua b/aconf/model/root.lua
index 9b05488..e8525db 100644
--- a/aconf/model/root.lua
+++ b/aconf/model/root.lua
@@ -9,6 +9,7 @@ local model = require('aconf.model.model')
local node = require('aconf.model.node')
local object = require('aconf.object')
local pth = require('aconf.path')
+local address = require('aconf.path.address')
local util = require('aconf.util')
local setdefault = util.setdefault
@@ -39,18 +40,19 @@ local order = 0
function M.topology(addr, create)
local top = _topology
if type(addr) == 'table' then addr = util.copy(addr)
- else addr = pth.split(addr) end
+ else addr = address.split(addr) end
local function defaults(top)
return util.setdefaults(top, {members={}, paths={}, referrers={}})
end
while #addr > 0 do
+ local comp = address.escape(addr[1])
if create then
- top = setdefault(defaults(top).members, addr[1], {order=order})
+ top = setdefault(defaults(top).members, comp, {order=order})
order = order + 1
else
- top = top.members[addr[1]] or top.members[pth.wildcard]
+ top = top.members[comp] or top.members['*']
if not top then return end
end
table.remove(addr, 1)