sec_parser.semantic_tree.tree_builder ===================================== .. py:module:: sec_parser.semantic_tree.tree_builder Classes ------- .. autoapisummary:: sec_parser.semantic_tree.tree_builder.TreeBuilder Module Contents --------------- .. py:class:: TreeBuilder(get_rules: Callable[[], list[sec_parser.semantic_tree.nesting_rules.AbstractNestingRule]] | None = None) Builds a semantic tree from a list of semantic elements. Why Use a Tree Structure? ========================= Using a tree data structure allows for easier and more robust filtering of sections. With a tree, you can select specific branches to filter, making it straightforward to identify section boundaries. This approach is more maintainable and robust compared to attempting the same operations on a flat list of elements. Overview: ========= 1. Takes a list of semantic elements. 2. Applies nesting rules to these elements. Customization: ============== The nesting process is customizable through a list of rules. These rules determine how new elements should be nested under existing ones. Advanced Customization: ======================= You can supply your own set of rules by providing a callable to `get_rules`, which should return a list of `AbstractNestingRule` instances. .. py:attribute:: get_rules .. py:method:: get_default_rules() -> list[sec_parser.semantic_tree.nesting_rules.AbstractNestingRule] :staticmethod: .. py:method:: build(elements: list[sec_parser.semantic_elements.abstract_semantic_element.AbstractSemanticElement]) -> sec_parser.semantic_tree.semantic_tree.SemanticTree .. py:method:: _find_parent_node(new_node: sec_parser.semantic_tree.tree_node.TreeNode, stack: list[sec_parser.semantic_tree.tree_node.TreeNode], rules: list[sec_parser.semantic_tree.nesting_rules.AbstractNestingRule]) -> sec_parser.semantic_tree.tree_node.TreeNode | None .. py:method:: _should_nest_under(child_node: sec_parser.semantic_tree.tree_node.TreeNode, parent_node: sec_parser.semantic_tree.tree_node.TreeNode, rules: list[sec_parser.semantic_tree.nesting_rules.AbstractNestingRule]) -> bool