From 98c92aa9b51b3e34cf41692e1cfa08e6362fc568 Mon Sep 17 00:00:00 2001 From: Benedikt Hock <benedikt.hock@stud.tu-darmstadt.de> Date: Thu, 9 Feb 2023 19:21:41 +0100 Subject: [PATCH] Add function for printing a component tree --- functions/lego_classes.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/functions/lego_classes.py b/functions/lego_classes.py index 92ed684..eae5ee3 100644 --- a/functions/lego_classes.py +++ b/functions/lego_classes.py @@ -63,3 +63,23 @@ class LegoComponent: return f"Lego Component [{self.id}]" # TODO: Adjust default output when printing an item or component + +def print_component_tree(root, level=0, is_last=False): + # print component + component_padding = "" + if level > 0: + component_padding += "│ " * (level - 1) + if is_last: + component_padding += "└── " + else: + component_padding += "├── " + print(f"{component_padding}{root}") + # recursively print child components + for i, component in enumerate(root.components): + is_last_ = i == len(root.components) - 1 and len(root.items) == 0 + print_component_tree(component, level + 1, is_last_) + # print items + for i, item in enumerate(root.items): + item_padding = "│ " * level + item_padding += "├── " if i < len(root.items) - 1 else "└── " + print(f"{item_padding}{item}") -- GitLab