Skip to content

Commit b09ac56

Browse files
committed
763_references_in_table
1 parent c402416 commit b09ac56

File tree

1 file changed

+33
-16
lines changed

1 file changed

+33
-16
lines changed

app/main/checks/report_checks/literature_references.py

Lines changed: 33 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -87,27 +87,44 @@ def check(self):
8787
'''
8888
return answer(False, result_str)
8989

90+
def search_references_in_table(self, index_table: int, prev_ref, array_of_references, ref_sequence) -> int:
91+
"""Функция поиска ссылок в таблицах (ищет в каждой клетке)"""
92+
for cell in self.file.file.tables[index_table]._cells:
93+
prev_ref = self.search_references_in_text(cell.text, prev_ref, array_of_references, ref_sequence)
94+
return prev_ref
95+
96+
def search_references_in_text(self, text: str, prev_ref, array_of_references, ref_sequence) -> int:
97+
"""Функция поиска ссылок в переданном тексте"""
98+
reg_exp = r'\[[\^]{0,1}[\d \-,]+\]'
99+
detected_references = re.findall(reg_exp, text)
100+
if detected_references:
101+
for reference_raw in detected_references:
102+
reference = reference_raw.replace('^', '') # TODO: kostyl'...
103+
for one_part in re.split(r'[\[\],]', reference):
104+
if re.match(r'\d+[ \-]+\d+', one_part):
105+
start, end = re.split(r'[ -]+', one_part)
106+
for k in range(int(start), int(end) + 1):
107+
prev_ref = self.add_references(k, prev_ref, array_of_references, ref_sequence)
108+
elif one_part != '':
109+
prev_ref = self.add_references(int(one_part), prev_ref, array_of_references, ref_sequence)
110+
return prev_ref
111+
90112
def search_references(self, start_par):
113+
"""Функция поиска ссылок в документе"""
91114
prev_ref = 0
92115
ref_sequence = []
93116
array_of_references = set()
94-
reg_exp = r'\[[\^]{0,1}[\d \-,]+\]' # md can use [^5] format for hyperlink
95117
for i in range(0, start_par):
96-
if isinstance(self.file.paragraphs[i], str):
97-
detected_references = re.findall(reg_exp, self.file.paragraphs[i])
98-
else:
99-
detected_references = re.findall(reg_exp, self.file.paragraphs[i].paragraph_text)
100-
101-
if detected_references:
102-
for reference_raw in detected_references:
103-
reference = reference_raw.replace('^', '') # TODO: kostyl'...
104-
for one_part in re.split(r'[\[\],]', reference):
105-
if re.match(r'\d+[ \-]+\d+', one_part):
106-
start, end = re.split(r'[ -]+', one_part)
107-
for k in range(int(start), int(end) + 1):
108-
prev_ref = self.add_references(k, prev_ref, array_of_references, ref_sequence)
109-
elif one_part != '':
110-
prev_ref = self.add_references(int(one_part), prev_ref, array_of_references, ref_sequence)
118+
text = self.file.paragraphs[i] if isinstance(self.file.paragraphs[i], str) else self.file.paragraphs[i].paragraph_text
119+
match = re.search(r'Таблица ([.\d]+)', text)
120+
if match:
121+
index_table = int(match.group(1)) - 1
122+
prev_ref = self.search_references_in_table(index_table, prev_ref, array_of_references, ref_sequence)
123+
text = None
124+
125+
if text is not None:
126+
prev_ref = self.search_references_in_text(text, prev_ref, array_of_references, ref_sequence)
127+
111128
if ref_sequence:
112129
if ref_sequence[0][1] == '0':
113130
ref_sequence[0] = ref_sequence[0].replace('[0],', '')

0 commit comments

Comments
 (0)