Source code for biogeme.expressions.add_prefix_suffix
"""Function adding a suffix to variables.
Michel Bierlaire
Fri May 02 2025, 17:53:00
"""
from .base_expressions import Expression
from .variable import Variable
from .visitor import ExpressionVisitor
_prefix_suffix_visitor = ExpressionVisitor()
register_prefix_suffix = _prefix_suffix_visitor.register
[docs]
@register_prefix_suffix(Variable)
def prefix_suffix_variable_name_handler(expr, context):
expr_id = id(expr)
if expr_id in context["visited_ids"]:
return
context["visited_ids"].add(expr_id)
old_name = expr.name
new_name = f"{context['prefix']}{old_name}{context['suffix']}"
expr.name = new_name
context["count"] += 1
[docs]
def add_prefix_suffix_to_all_variables(
expr: Expression, prefix: str, suffix: str
) -> int:
context = {
"prefix": prefix,
"suffix": suffix,
"count": 0,
"visited_ids": set(),
}
_prefix_suffix_visitor.visit(expr, context)
return context["count"]