summaryrefslogtreecommitdiffstats
path: root/aconf/model/node.lua
diff options
context:
space:
mode:
authorKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2015-02-09 19:44:12 +0200
committerKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2015-02-12 16:32:41 +0200
commit29282b5a7d43e8b5ce12b0ec4b7a7620c19a67b6 (patch)
treea8ad7d5343c41950ff9c8f96a55f41a80271f72a /aconf/model/node.lua
parent07a0eb180872401b271de40190603df8f3ab3db2 (diff)
downloadaconf-29282b5a7d43e8b5ce12b0ec4b7a7620c19a67b6.tar.bz2
aconf-29282b5a7d43e8b5ce12b0ec4b7a7620c19a67b6.tar.xz
proper escaping for back-end addresses
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)
},
...
)