diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2015-10-05 20:47:17 +0300 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2015-10-14 19:10:22 +0300 |
commit | a16bea59386b8f10442333f55c8d511ca4b724d6 (patch) | |
tree | 28535ecacfaad37c77cde50aa8a629d65b2bba2a /interpreter.py | |
parent | d952812b1bddd2e4a7c0dd60da5ac17757182cee (diff) | |
download | meson-a16bea59386b8f10442333f55c8d511ca4b724d6.zip meson-a16bea59386b8f10442333f55c8d511ca4b724d6.tar.gz meson-a16bea59386b8f10442333f55c8d511ca4b724d6.tar.bz2 |
More variable introspection.
Diffstat (limited to 'interpreter.py')
-rw-r--r-- | interpreter.py | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/interpreter.py b/interpreter.py index 9885932..82fdb74 100644 --- a/interpreter.py +++ b/interpreter.py @@ -910,6 +910,8 @@ class Interpreter(): 'pkgconfig_gen' : self.func_pkgconfig_gen, 'vcs_tag' : self.func_vcs_tag, 'set_variable' : self.func_set_variable, + 'is_variable' : self.func_is_variable, + 'get_variable' : self.func_get_variable, 'import' : self.func_import, 'files' : self.func_files, 'declare_dependency': self.func_declare_dependency, @@ -1008,6 +1010,29 @@ class Interpreter(): value = self.to_native(args[1]) self.set_variable(varname, value) + @noKwargs + def func_get_variable(self, node, args, kwargs): + if len(args)<1 or len(args)>2: + raise InvalidCode('Get_variable takes one or two arguments.') + varname = args[0] + if not isinstance(varname, str): + raise InterpreterException('First argument must be a string.') + try: + return self.variables[varname] + except KeyError: + pass + if len(args) == 2: + return args[1] + raise InterpreterException('Tried to get unknown variable "%s".' % varname) + + @stringArgs + @noKwargs + def func_is_variable(self, node, args, kwargs): + if len(args) != 1: + raise InvalidCode('Is_variable takes two arguments.') + varname = args[0] + return varname in self.variables + @stringArgs @noKwargs def func_import(self, node, args, kwargs): |