diff --git a/functions/lego_classes.py b/functions/lego_classes.py index 92ed684dc55261b904d5f255340974d880397934..eae5ee3789c3e409afadde6ffd615f0be27193a7 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}")