proper modelica text model editing
This commit is contained in:
@@ -691,7 +691,27 @@ def _safe_file_stem(model_name: str) -> str:
|
||||
|
||||
|
||||
def _signal_tree_parts(signal_name: str) -> tuple[str, ...]:
|
||||
"""Split dots and array indices into display hierarchy segments."""
|
||||
"""Split a result name into readable component, variable, and index levels.
|
||||
|
||||
OpenModelica emits state derivatives as names such as ``der(block.x)``.
|
||||
Keep those traces available, but display them below a ``Derivatives`` group
|
||||
on their owning component instead of creating a misleading top-level
|
||||
``der(block`` branch.
|
||||
"""
|
||||
|
||||
derivative = re.fullmatch(r"der\((.+)\)", signal_name)
|
||||
if derivative is not None:
|
||||
inner_name = derivative.group(1)
|
||||
inner_parts = _signal_tree_parts(inner_name)
|
||||
if inner_parts:
|
||||
index_count = len(re.findall(r"\[[^\]]+\]", inner_name.rsplit(".", 1)[-1]))
|
||||
variable_index = max(0, len(inner_parts) - index_count - 1)
|
||||
return (
|
||||
*inner_parts[:variable_index],
|
||||
"Derivatives",
|
||||
*inner_parts[variable_index:],
|
||||
)
|
||||
return ("Derivatives", signal_name)
|
||||
|
||||
parts: list[str] = []
|
||||
for segment in signal_name.split("."):
|
||||
|
||||
Reference in New Issue
Block a user