def _get_variable(self, var): """'var' is an instance of a VariableSplitter""" # 1) Handle reserved syntax if var.identifier not in "$@%": value = "%s{%s}" % (var.identifier, var.base) LOGGER.warn("Syntax '%s' is reserved for future use. Please " "escape it like '\\%s'." % (value, value)) return value # 2) Handle environment variables and Java system properties elif var.identifier == "%": name = var.get_replaced_base(self).strip() if not name: return "%%{%s}" % var.base value = utils.get_env_var(name) if value is not None: return value value = getJavaSystemProperty(name) if value is not None: return value raise DataError("Environment variable '%s' does not exist" % name) # 3) Handle ${scalar} variables and @{list} variables without index elif var.index is None: name = "%s{%s}" % (var.identifier, var.get_replaced_base(self)) return self[name] # 4) Handle items from list variables e.g. @{var}[1] else: try: index = int(self.replace_string(var.index)) name = "@{%s}" % var.get_replaced_base(self) return self[name][index] except (ValueError, DataError, IndexError): raise DataError("Non-existing variable '@{%s}[%s]'" % (var.base, var.index))
def _get_variable(self, var): """'var' is an instance of a VariableSplitter""" # 1) Handle reserved syntax if var.identifier not in '$@%': value = '%s{%s}' % (var.identifier, var.base) LOGGER.warn("Syntax '%s' is reserved for future use. Please " "escape it like '\\%s'." % (value, value)) return value # 2) Handle environment variables and Java system properties elif var.identifier == '%': name = var.get_replaced_base(self).strip() if not name: return '%%{%s}' % var.base value = utils.get_env_var(name) if value is not None: return value value = getJavaSystemProperty(name) if value is not None: return value msg = "Environment variable '%%{%s}' not found." % name self._raise_non_existing_variable('%%{%s}' % name, msg, env_vars=True) # 3) Handle ${scalar} variables and @{list} variables without index elif var.index is None: name = '%s{%s}' % (var.identifier, var.get_replaced_base(self)) return self[name] # 4) Handle items from list variables e.g. @{var}[1] else: try: index = int(self.replace_string(var.index)) name = '@{%s}' % var.get_replaced_base(self) return self[name][index] except (ValueError, DataError, IndexError): msg = ("Variable '@{%s}[%s]' not found." % (var.base, var.index)) self._raise_non_existing_variable(var.base, msg)