diff options
author | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2015-02-09 19:44:12 +0200 |
---|---|---|
committer | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2015-02-12 16:32:41 +0200 |
commit | 29282b5a7d43e8b5ce12b0ec4b7a7620c19a67b6 (patch) | |
tree | a8ad7d5343c41950ff9c8f96a55f41a80271f72a /aconf/path/address/init.lua | |
parent | 07a0eb180872401b271de40190603df8f3ab3db2 (diff) | |
download | aconf-29282b5a7d43e8b5ce12b0ec4b7a7620c19a67b6.tar.bz2 aconf-29282b5a7d43e8b5ce12b0ec4b7a7620c19a67b6.tar.xz |
proper escaping for back-end addresses
Diffstat (limited to 'aconf/path/address/init.lua')
-rw-r--r-- | aconf/path/address/init.lua | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/aconf/path/address/init.lua b/aconf/path/address/init.lua new file mode 100644 index 0000000..c62487f --- /dev/null +++ b/aconf/path/address/init.lua @@ -0,0 +1,33 @@ +--[[ +Copyright (c) 2012-2015 Kaarle Ritvanen +See LICENSE file for license details +--]] + +local object = require('aconf.object') +local class = object.class + +local special = require('aconf.path.address.special') +local base = require('aconf.path.base') + + +local M = { + special={ + enum_keys=special.EnumKeys(), + value=special.Value(), + value_equals=special.ValueEquals + } +} + +local _special = {['#']=M.special.enum_keys, ['&']=M.special.value} + + +local AddressSyntax = class(base.Syntax) + +function AddressSyntax:get_special(comp) + if comp:sub(1, 1) == '@' then + return special.ValueEquals(#comp > 1 and comp:sub(2, -1) or nil) + end + return _special[comp] or object.super(self, AddressSyntax):get_special(comp) +end + +return AddressSyntax():export(M) |