Source code for dedoc.structure_extractors.concrete_structure_extractors.foiv_law_structure_extractor

from typing import List

from dedoc.data_structures.line_with_meta import LineWithMeta
from dedoc.structure_extractors.concrete_structure_extractors.abstract_law_structure_extractor import AbstractLawStructureExtractor
from dedoc.structure_extractors.hierarchy_level_builders.header_builder.header_hierarchy_level_builder import HeaderHierarchyLevelBuilder
from dedoc.structure_extractors.hierarchy_level_builders.law_builders.application_builder.application_foiv_hierarchy_level_builder import \
    ApplicationFoivHierarchyLevelBuilder
from dedoc.structure_extractors.hierarchy_level_builders.law_builders.body_builder.body_foiv_hierarchy_level_builder import BodyFoivHierarchyLevelBuilder
from dedoc.structure_extractors.hierarchy_level_builders.law_builders.cellar_builder import CellarHierarchyLevelBuilder
from dedoc.structure_extractors.hierarchy_level_builders.utils_reg import regexps_ends_of_number, regexps_foiv_item


[docs]class FoivLawStructureExtractor(AbstractLawStructureExtractor): """ This class is used for extraction structure from foiv type of law. You can find the description of this type of structure in the section :ref:`foiv_law_structure`. """ document_type = "foiv_law"
[docs] def __init__(self, *, config: dict) -> None: super().__init__(config=config) self.hierarchy_level_builders = [ HeaderHierarchyLevelBuilder(), BodyFoivHierarchyLevelBuilder(), CellarHierarchyLevelBuilder(), ApplicationFoivHierarchyLevelBuilder() ] self.regexps_subitem_with_number = BodyFoivHierarchyLevelBuilder.regexps_subitem_with_number self.regexps_subitem_with_char = BodyFoivHierarchyLevelBuilder.regexps_subitem_with_char self.regexps_ends_of_number = regexps_ends_of_number self.init_hl_depth = 2 self.hl_type = "foiv"
def _postprocess_lines(self, lines: List[LineWithMeta]) -> List[LineWithMeta]: return self._postprocess(lines=lines, paragraph_type=["item", "subitem", "subitem"], regexps=[regexps_foiv_item, self.regexps_subitem_with_number, self.regexps_subitem_with_char], excluding_regexps=[None, self.regexps_ends_of_number, None])