rougail/src/rougail/annotator/value.py

52 lines
1.9 KiB
Python

"""Annotate value
"""
class ValueAnnotator: # pylint: disable=R0903
"""Annotate value
"""
def __init__(self,
objectspace,
) -> None:
if not hasattr(objectspace.space, 'variables'):
return
self.objectspace = objectspace
self.convert_value()
def convert_value(self) -> None:
"""convert value
"""
for families in self.objectspace.space.variables.values():
for family in families.family.values():
for variable in family.variable.values():
if isinstance(variable, self.objectspace.leadership):
variable_type = 'leader'
for follower in variable.variable:
self._convert_value(follower,
variable_type,
)
variable_type = 'follower'
else:
self._convert_value(variable)
@staticmethod
def _convert_value(variable,
variable_type: str=None,
) -> None:
if not hasattr(variable, 'value'):
return
if variable.value[0].type == 'calculation':
variable.default = variable.value[0]
else:
if variable.multi:
if variable_type != 'follower':
variable.default = [value.name for value in variable.value]
if variable_type != 'leader':
if variable.multi == 'submulti':
variable.default_multi = [value.name for value in variable.value]
else:
#FIXME 0 ou -1 ?
variable.default_multi = variable.value[-1].name
else:
variable.default = variable.value[0].name
del variable.value