| import docx |
|
|
| from src.model.container import Container |
| from src.model.paragraph import Paragraph |
|
|
|
|
| class Doc: |
|
|
| def __init__(self, path='', id_=None): |
|
|
| self.xdoc = docx.Document(path) |
| self.title = path.split('/')[-1] |
| self.id_ = id(self) |
| self.path = path |
| paragraphs = [Paragraph(xp, self.id_, i) for (i, xp) in enumerate(self.xdoc.paragraphs)] |
| self.container = Container(paragraphs, father=self, level=0) |
| self.blocks = self.get_blocks() |
| self.tasks = [c.get_task(self.container.one_liner) for c in self.container.containers if c.task] |
|
|
| @property |
| def structure(self): |
|
|
| return self.container.structure |
|
|
| def get_blocks(self): |
|
|
| def from_list_to_str(index_list): |
| index_str = str(index_list[0]) |
| for el in index_list[1:]: |
| index_str += '.' + str(el) |
| return index_str |
|
|
| blocks = self.container.blocks |
| for block in blocks: |
| block.doc = self.title |
| if block.level == 0: |
| blocks.remove(block) |
| block.index = from_list_to_str(block.index) |
| return blocks |
| """ |
| current_level = len(current_index) |
| if 0 < block.level: |
| if block.level == current_level: |
| current_index[-1] += 1 |
| elif current_level < block.level: |
| current_index.append(1) |
| elif block.level < current_level: |
| current_index = current_index[:block.level] |
| current_index[-1] += 1 |
| block.index = from_list_to_str(current_index) |
| else: |
| block.index = "0" |
| """ |
|
|
|
|