aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/mesonlib.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2017-12-03 23:03:13 +0200
committerGitHub <noreply@github.com>2017-12-03 23:03:13 +0200
commit112e6c1927760d33d9392b0aa3ed26596bbe68f7 (patch)
tree8fe66972926550208d62109b910f7dce072ef63e /mesonbuild/mesonlib.py
parent018deb48feee88a1de73f8bcaea4d944dade7827 (diff)
parent80157a5ea3faa8e53a3806203fc76251540c9652 (diff)
downloadmeson-112e6c1927760d33d9392b0aa3ed26596bbe68f7.zip
meson-112e6c1927760d33d9392b0aa3ed26596bbe68f7.tar.gz
meson-112e6c1927760d33d9392b0aa3ed26596bbe68f7.tar.bz2
Merge pull request #2638 from jibsen/use-value-regex
Use regex to substitute template strings
Diffstat (limited to 'mesonbuild/mesonlib.py')
-rw-r--r--mesonbuild/mesonlib.py9
1 files changed, 4 insertions, 5 deletions
diff --git a/mesonbuild/mesonlib.py b/mesonbuild/mesonlib.py
index a35345b..09b5d92 100644
--- a/mesonbuild/mesonlib.py
+++ b/mesonbuild/mesonlib.py
@@ -744,6 +744,8 @@ def substitute_values(command, values):
_substitute_values_check_errors(command, values)
# Substitution
outcmd = []
+ rx_keys = [re.escape(key) for key in values if key not in ('@INPUT@', '@OUTPUT@')]
+ value_rx = re.compile('|'.join(rx_keys)) if rx_keys else None
for vv in command:
if not isinstance(vv, str):
outcmd.append(vv)
@@ -770,12 +772,9 @@ def substitute_values(command, values):
elif vv in values:
outcmd.append(values[vv])
# Substitute everything else with replacement
+ elif value_rx:
+ outcmd.append(value_rx.sub(lambda m: values[m.group(0)], vv))
else:
- for key, value in values.items():
- if key in ('@INPUT@', '@OUTPUT@'):
- # Already done above
- continue
- vv = vv.replace(key, value)
outcmd.append(vv)
return outcmd