16 from contextlib
import contextmanager
21 from .isvar
import validate_var
22 from .splitter
import VariableSplitter
30 def set(self, variables, overwrite=False):
32 self.
_store_store.add(name, value, overwrite, decorated=
False)
43 var.report_invalid_syntax)
44 except DataError
as err:
45 var.report_invalid_syntax(err)
53 VariableTableValue = {
'$': ScalarVariableTableValue,
54 '@': ListVariableTableValue,
55 '&': DictVariableTableValue}[name[0]]
61 def __init__(self, values, error_reporter=None):
75 _avoid_recursion = property
79 raise DataError(
'Recursive variable definition.')
87 raise NotImplementedError
100 elif values
and values[0].startswith(
'SEPARATOR='):
101 separator = values[0][10:]
103 return separator, values
106 separator, values = values
109 return variables.replace_scalar(values[0])
110 if separator
is None:
112 separator = variables.replace_string(separator)
113 values = variables.replace_list(values)
114 return separator.join(
unic(item)
for item
in values)
117 return (separator
is None and len(values) == 1
and
124 return variables.replace_list(values)
139 raise DataError(
"Dictionary item '%s' does not contain "
140 "'=' separator." % item)
146 variables.replace_scalar))
147 except TypeError
as err:
148 raise DataError(
'Creating dictionary failed: %s' % err)
152 if isinstance(item, tuple):
154 yield replace_scalar(key), replace_scalar(values)
156 for key, values
in replace_scalar(item).items():
Used when variable does not exist.
def _replace_variables(self, values, variables)
def _yield_formatted(self, values)
def _format_values(self, values)
def _yield_replaced(self, values, replace_scalar)
def _replace_variables(self, values, variables)
def _replace_variables(self, values, variables)
def _is_single_value(self, separator, values)
def _format_values(self, values)
def read(self, variables)
def _get_name_and_value(self, name, value, error_reporter)
def __init__(self, store)
def set(self, variables, overwrite=False)
def _replace_variables(self, value, variables)
def report_error(self, error)
def __init__(self, values, error_reporter=None)
def _format_values(self, values)
def resolve(self, variables)
def _avoid_recursion(self)
def split_from_equals(string)
def validate_var(string, identifiers='$@&')
def VariableTableValue(value, name, error_reporter=None)
def is_dict_variable(value)
def is_list_variable(value)