37 lines
1.4 KiB
Python
37 lines
1.4 KiB
Python
|
|
from .common import LcrConnException, Circuit, JointKind, to_human_readable_value
|
||
|
|
|
||
|
|
|
||
|
|
def _get_joint_kind_symbol(joint_kind: JointKind) -> str:
|
||
|
|
match joint_kind:
|
||
|
|
case JointKind.SERIES:
|
||
|
|
return "S"
|
||
|
|
case JointKind.PARALLEL:
|
||
|
|
return "P"
|
||
|
|
|
||
|
|
|
||
|
|
def _illustrate_circuit(circuit: Circuit) -> None:
|
||
|
|
match circuit.len_devices():
|
||
|
|
case 1:
|
||
|
|
dev1 = to_human_readable_value(circuit.device_value)
|
||
|
|
print(f"{dev1}")
|
||
|
|
case 2:
|
||
|
|
dev1 = to_human_readable_value(circuit.device_value)
|
||
|
|
joint1 = circuit.joints[0]
|
||
|
|
j1 = _get_joint_kind_symbol(joint1.joint_kind)
|
||
|
|
dev2 = to_human_readable_value(joint1.device_value)
|
||
|
|
print(f"[{j1}] ┬ {dev1}")
|
||
|
|
print(f" └ {dev2}")
|
||
|
|
case 3:
|
||
|
|
dev1 = to_human_readable_value(circuit.device_value)
|
||
|
|
joint1 = circuit.joints[0]
|
||
|
|
j1 = _get_joint_kind_symbol(joint1.joint_kind)
|
||
|
|
dev2 = to_human_readable_value(joint1.device_value)
|
||
|
|
joint2 = circuit.joints[1]
|
||
|
|
j2 = _get_joint_kind_symbol(joint2.joint_kind)
|
||
|
|
dev3 = to_human_readable_value(joint2.device_value)
|
||
|
|
print(f"[{j2}] ┬ [{j1}] ┬ {dev1}")
|
||
|
|
print(f" │ └ {dev2}")
|
||
|
|
print(f" └ {dev3}")
|
||
|
|
case _:
|
||
|
|
raise LcrConnException("Circuit too complex to illustrate")
|