|
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 |