aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/interpreterbase.py
diff options
context:
space:
mode:
authorLaurin-Luis Lehning <65224843+e820@users.noreply.github.com>2021-03-07 04:59:38 +0100
committerXavier Claessens <xclaesse@gmail.com>2021-03-10 08:55:22 -0500
commit130adef77880fc99ee0a06cf3fba7696c7e7c7bc (patch)
treeb24d73969ee550251e29f08914cf80ec8d86cfc9 /mesonbuild/interpreterbase.py
parent442416db6fbb35d0293bc036642e10d36d9dfc00 (diff)
downloadmeson-130adef77880fc99ee0a06cf3fba7696c7e7c7bc.zip
meson-130adef77880fc99ee0a06cf3fba7696c7e7c7bc.tar.gz
meson-130adef77880fc99ee0a06cf3fba7696c7e7c7bc.tar.bz2
Add support for basic format strings
Diffstat (limited to 'mesonbuild/interpreterbase.py')
-rw-r--r--mesonbuild/interpreterbase.py14
1 files changed, 14 insertions, 0 deletions
diff --git a/mesonbuild/interpreterbase.py b/mesonbuild/interpreterbase.py
index 026eaf2..d486b89 100644
--- a/mesonbuild/interpreterbase.py
+++ b/mesonbuild/interpreterbase.py
@@ -708,6 +708,8 @@ class InterpreterBase:
return self.evaluate_indexing(cur)
elif isinstance(cur, mparser.TernaryNode):
return self.evaluate_ternary(cur)
+ elif isinstance(cur, mparser.FormatStringNode):
+ return self.evaluate_fstring(cur)
elif isinstance(cur, mparser.ContinueNode):
raise ContinueRequest()
elif isinstance(cur, mparser.BreakNode):
@@ -926,6 +928,18 @@ The result of this is undefined and will become a hard error in a future Meson r
else:
return self.evaluate_statement(node.falseblock)
+ def evaluate_fstring(self, node: mparser.FormatStringNode) -> TYPE_var:
+ assert(isinstance(node, mparser.FormatStringNode))
+
+ def replace(match: T.Match[str]) -> str:
+ var = str(match.group(1))
+ try:
+ return str(self.variables[var])
+ except KeyError:
+ raise mesonlib.MesonException(f'Identifier "{var}" does not name a variable.')
+
+ return re.sub(r'{([_a-zA-Z][_0-9a-zA-Z]*)}', replace, node.value)
+
def evaluate_foreach(self, node: mparser.ForeachClauseNode) -> None:
assert(isinstance(node, mparser.ForeachClauseNode))
items = self.evaluate_statement(node.items)