summaryrefslogtreecommitdiff
path: root/talerbank/talerconfig.py
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2016-04-26 00:20:35 +0200
committerFlorian Dold <florian.dold@gmail.com>2016-04-26 00:20:35 +0200
commit9b6c4664d025fc242864eb61d5e5cbed8be0755d (patch)
treee72c5508f409691168f7694883c8507fbc3d8cfb /talerbank/talerconfig.py
parent7056fcd35016b5bd0f4106fdcfbc31531124cbbb (diff)
downloadbank-9b6c4664d025fc242864eb61d5e5cbed8be0755d.tar.gz
bank-9b6c4664d025fc242864eb61d5e5cbed8be0755d.tar.bz2
bank-9b6c4664d025fc242864eb61d5e5cbed8be0755d.zip
replace variables without parentheses
Diffstat (limited to 'talerbank/talerconfig.py')
-rw-r--r--talerbank/talerconfig.py48
1 files changed, 30 insertions, 18 deletions
diff --git a/talerbank/talerconfig.py b/talerbank/talerconfig.py
index 9216869..80dd82a 100644
--- a/talerbank/talerconfig.py
+++ b/talerbank/talerconfig.py
@@ -51,33 +51,45 @@ def expand(s, getter):
Supported syntax:
- ${X}
- ${X:-Y}
+ - $X
"""
pos = 0
result = ""
while pos != -1:
- start = s.find("${", pos)
+ start = s.find("$", pos)
if start == -1:
break
- balance = 1
- end = start + 2
- while balance > 0 and end < len(s):
- balance += {"{": 1, "}": -1}.get(s[end], 0)
- end += 1
- if balance != 0:
- raise ExpansionSyntaxError("unbalanced parentheses")
- piece = s[start+2:end-1]
- if piece.find(":-") > 0:
- varname, alt = piece.split(":-", 1)
- replace = getter(varname)
- if replace is None:
- replace = expand(alt, getter)
+ if s[start:].startswith("${"):
+ balance = 1
+ end = start + 2
+ while balance > 0 and end < len(s):
+ balance += {"{": 1, "}": -1}.get(s[end], 0)
+ end += 1
+ if balance != 0:
+ raise ExpansionSyntaxError("unbalanced parentheses")
+ piece = s[start+2:end-1]
+ if piece.find(":-") > 0:
+ varname, alt = piece.split(":-", 1)
+ replace = getter(varname)
+ if replace is None:
+ replace = expand(alt, getter)
+ else:
+ varname = piece
+ replace = getter(varname)
+ if replace is None:
+ replace = s[start:end]
else:
- varname = piece
+ end = start + 1
+ while end < len(s) and s[start+1:end].isalnum():
+ end += 1
+ varname = s[start+1:end]
replace = getter(varname)
if replace is None:
replace = s[start:end]
result = result + replace
pos = end
+
+
return result + s[pos:]
@@ -192,13 +204,13 @@ class TalerConfig:
cfg.load_file(filename)
return cfg
- def value_string(section, option, default=None, required=None, warn=False):
+ def value_string(self, section, option, default=None, required=None, warn=False):
return self.sections[section][option].value_string(default, required, warn)
- def value_filename(section, option, default=None, required=None, warn=False):
+ def value_filename(self, section, option, default=None, required=None, warn=False):
return self.sections[section][option].value_filename(default, required, warn)
- def value_int(section, option, default=None, required=None, warn=False):
+ def value_int(self, section, option, default=None, required=None, warn=False):
return self.sections[section][option].value_int(default, required, warn)
def load_defaults(self):