aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/interpreter.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2016-03-20 18:53:01 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2016-03-20 18:53:01 +0200
commit4bb665a577a90e3bc0d2e832d6950f0323a72492 (patch)
tree9e4409866bd8bec973de92e9667646c51f651310 /mesonbuild/interpreter.py
parenta3d49ca1ce5e6844387e8daedd2fc0713f36e540 (diff)
parent3eea1703ffb7559cc7d7454ced119aa45c167c9f (diff)
downloadmeson-4bb665a577a90e3bc0d2e832d6950f0323a72492.zip
meson-4bb665a577a90e3bc0d2e832d6950f0323a72492.tar.gz
meson-4bb665a577a90e3bc0d2e832d6950f0323a72492.tar.bz2
Merge pull request #464 from tp-m/bool-to-string-and-to-int
Add bool to_string() and to_int() methods.
Diffstat (limited to 'mesonbuild/interpreter.py')
-rw-r--r--mesonbuild/interpreter.py26
1 files changed, 26 insertions, 0 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index e20641d..f4b6958 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -2017,6 +2017,30 @@ class Interpreter():
reduced_pos = [reduced_pos]
return (reduced_pos, reduced_kw)
+ def bool_method_call(self, obj, method_name, args):
+ obj = self.to_native(obj)
+ (posargs, _) = self.reduce_arguments(args)
+ if method_name == 'to_string':
+ if len(posargs) == 0:
+ if obj == True:
+ return 'true'
+ else:
+ return 'false'
+ elif len(posargs) == 2 and isinstance(posargs[0], str) and isinstance(posargs[1], str):
+ if obj == True:
+ return posargs[0]
+ else:
+ return posargs[1]
+ else:
+ raise InterpreterException('bool.to_string() must have either no arguments or exactly two string arguments.')
+ elif method_name == 'to_int':
+ if obj == True:
+ return 1
+ else:
+ return 0
+ else:
+ raise InterpreterException('Unknown method "%s" for a boolean.' % method_name)
+
def string_method_call(self, obj, method_name, args):
obj = self.to_native(obj)
(posargs, _) = self.reduce_arguments(args)
@@ -2089,6 +2113,8 @@ class Interpreter():
obj = obj.get_value()
if isinstance(obj, str):
return self.string_method_call(obj, method_name, args)
+ if isinstance(obj, bool):
+ return self.bool_method_call(obj, method_name, args)
if isinstance(obj, list):
return self.array_method_call(obj, method_name, self.reduce_arguments(args)[0])
if not isinstance(obj, InterpreterObject):