| import string |
|
|
| INFINITE = 10000 |
|
|
|
|
| class Paragraph: |
|
|
| def __init__(self, xparagraph, doc_id: int, id_: int): |
|
|
| self.xparagraph = xparagraph |
| self.id_ = int(str(2) + str(doc_id) + str(id_)) |
| self.level = self.get_level_from_name() |
| self.is_structure = self.level < INFINITE |
| self.text = self.xparagraph.text |
| self.type = self.get_type() |
|
|
| @property |
| def structure(self): |
| structure = {str(self.id_): { |
| 'index': str(self.id_), |
| 'canMove': True, |
| 'isFolder': False, |
| 'children': [], |
| 'title': self.text, |
| 'canRename': True, |
| 'data': {}, |
| 'level': self.level, |
| }} |
| return structure |
|
|
| @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 get_level_from_name(self) -> int: |
| style_name = self.xparagraph.style.name |
| level = INFINITE |
| if '.Titre' in style_name: |
| suffix = style_name[-1] |
| try: |
| level = int(suffix) |
| except: |
| pass |
| return level |
|
|
|
|
|
|