| import string |
|
|
| INFINITE = 10000 |
|
|
| class Requirement_Paragraph: |
| def __init__(self, text : str, font_style : str, id_ : int, page_id : int): |
| self.font_style = font_style |
| self.id_ = int(str(2)+str(page_id)+str(id_)) |
| self.page_id = page_id |
| self.level = self.get_level_from_name(font_style) |
| self.is_structure = self.level < INFINITE |
| self.text = text |
|
|
| @property |
| def blank(self): |
| """ |
| checks if the paragraph is blank: i.e. it brings some signal (it may otherwise be ignored) |
| """ |
| text = self.text.replace('\n', '') |
| return set(text).isdisjoint(string.ascii_letters) |
| |
| def rearrange_paragraph(self): |
| """ |
| rearrange the paragraph to have a better structure |
| """ |
| if self.font_style == "code": |
| self.text = "\n\nCode :```\n" + self.text + "\n```\n\n" |
| elif self.font_style == "table": |
| self.text = "\n\nTable :\n" + self.text + "\n\n" |
| return self |
| |
| @staticmethod |
| def get_level_from_name(style_name: str) -> int: |
| level = INFINITE |
| if 'Titre' in style_name or 'Heading' in style_name: |
| suffix = style_name[-1] |
| try: |
| level = int(suffix) |
| except: |
| pass |
| return level |