Spaces:
Sleeping
Sleeping
File size: 2,124 Bytes
86c402d |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
"""
Модуль содержит класс для представления формул в документе.
"""
from dataclasses import dataclass
from typing import Any, Callable
from .parsed_structure import DocumentElement
@dataclass
class ParsedFormula(DocumentElement):
"""
Формула из документа.
"""
title: str | None = None
latex: str = ""
# Номер формулы в документе
formula_number: str | None = None
# Дополнительное описание/пояснение формулы
description: str | None = None
def to_string(self) -> str:
"""
Преобразует формулу в строковое представление.
Returns:
str: Строковое представление формулы.
"""
title_str = f"{self.title}: " if self.title else ""
return f"{title_str}Формула: {self.latex}"
def apply(self, func: Callable[[str], str]) -> None:
"""
Применяет функцию к текстовым элементам формулы.
Args:
func (Callable[[str], str]): Функция для применения к текстовым элементам.
"""
if self.title:
self.title = func(self.title)
self.latex = func(self.latex)
if self.description:
self.description = func(self.description)
def to_dict(self) -> dict[str, Any]:
"""
Преобразует формулу в словарь.
Returns:
dict[str, Any]: Словарное представление формулы.
"""
result = {
'title': self.title,
'latex': self.latex,
'formula_number': self.formula_number,
'description': self.description,
'page_number': self.page_number,
'index_in_document': self.index_in_document,
'referenced_element_index': self.referenced_element_index
}
return result
|