23 _VAR_BODY =
r'([^\}]|\\\})*'
27 _SCALAR_VARIABLE_MATCHER = re.compile(
r'\$\{'+_VAR_BODY+
'\}')
31 _SCALAR_VARIABLE_LINE_MATCHER = re.compile(
r'^(\$\{'+_VAR_BODY+
'\}) *=?$')
35 _LIST_VARIABLE_MATCHER = re.compile(
r'^(@\{'+_VAR_BODY+
'\})( ?=?|\[\d*\])$')
39 _DICT_VARIABLE_MATCHER = \
40 re.compile(
r'^(&\{'+_VAR_BODY+
'\})( ?=?|\[[a-zA-Z_]*\])$')
44 _LIST_VARIABLE_SUBITEM_END_MATCHER = re.compile(
r'\[\d+\]$')
48 _DICT_VARIABLE_SUBITEM_END_MATCHER = re.compile(
r'\[[a-zA-Z_]+\]$')
57 return _SCALAR_VARIABLE_LINE_MATCHER.match(value.strip())
61 return _LIST_VARIABLE_MATCHER.match(value.strip())
65 return _DICT_VARIABLE_MATCHER.match(value.strip())
70 _LIST_VARIABLE_SUBITEM_END_MATCHER.search(value)
75 _DICT_VARIABLE_SUBITEM_END_MATCHER.search(value)
83 return match.groups()[0]
if match
else None
87 "Return variable without extended variable syntax part"
90 match = re.match(
'\${(.+?)[^\s\w-]+.*?}?', value)
93 return '${%s}' % (match.groups()[0].strip())
98 for var
in re.findall(
'[@$&]{.*?}', value)]
102 return bool(_SCALAR_VARIABLE_MATCHER.findall(value))
112 return [x
for x
in seq
if not (x
in seen
or seen_add(x))]
def get_variable_basename(value)
def is_list_variable_subitem(value)
def find_variable_basenames(value)
def is_dict_variable(value)
def is_scalar_variable(value)
def is_list_variable(value)
def contains_scalar_variable(value)
def get_variable(value)
Returns variables name without equal sign '=' and indexing '[2]' or None.
def value_contains_variable(value, varname)
def is_dict_var_access(value)