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