From f31142de88a282c2e526f56d2f2c2a0347442e77 Mon Sep 17 00:00:00 2001 From: Joergen Ibsen Date: Fri, 17 Nov 2017 10:03:04 +0100 Subject: Use regex to substitute template strings --- mesonbuild/mesonlib.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'mesonbuild') diff --git a/mesonbuild/mesonlib.py b/mesonbuild/mesonlib.py index e9cf6cf96..787fc4279 100644 --- a/mesonbuild/mesonlib.py +++ b/mesonbuild/mesonlib.py @@ -707,6 +707,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) @@ -733,12 +735,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 -- cgit v1.2.3