v0.5.4
Example document / build (push) Has been cancelled
Python application / build (push) Has been cancelled

NewPromt
- small fix
This commit is contained in:
Igor20264
2026-09-19 10:53:19 +03:00
parent f7136bd8bd
commit 5fb5010571
24 changed files with 4336 additions and 22 deletions
+22 -7
View File
@@ -26,7 +26,8 @@ APPENDIX_RE = re.compile(
)
NUMBERED_HEADING_RE = re.compile(r"^(\d+(?:\.\d+)*)\.?\s+(.+)$")
PRACTICE_RE = re.compile(r"^Практическая\s+работа\b", re.IGNORECASE)
LIST_MARKER_RE = re.compile(r"^(?:[–—\-•▪]|(\d+)\.)\s*\t?\s*(.*)$")
LIST_MARKER_RE = re.compile(r"^(?:[–—\-•▪]|(\d+(?:\.\d+)*)\.)\s*\t?\s*(.*)$")
ORDERED_MARKER_RE = re.compile(r"^(\d+(?:\.\d+)*)\.\s*\t?\s*(.+)$")
BIBLIO_LINE_RE = re.compile(r"^\[(\d+(?:\.\d+)?)\]\s*[:.]?\s*(.+)$")
BODY_START_TITLES = SPECIAL_UPPER | {"СОДЕРЖАНИЕ"}
@@ -136,23 +137,37 @@ def classify_heading_text(text: str, style_level: int | None) -> tuple[int, str,
return level, raw, True
def look_like_list_item(text: str) -> tuple[bool, bool, str] | None:
def parse_list_item(text: str) -> tuple[bool, int, str] | None:
"""
Detect md2gost-style list lines (–\\t / 1.\\t) or plain markers.
Returns (ordered, marker_ok, body) or None.
Detect md2gost-style list lines (–\\t / 1.\\t / 1.1.\\t).
Returns (ordered, level, body) or None.
"""
t = (text or "").strip()
if not t:
return None
if t[0] in ("–", "—", "-", "•", "▪") and (len(t) == 1 or t[1] in "\t "):
body = t[1:].lstrip("\t ").strip()
return False, True, body
m = re.match(r"^(\d+)\.\s*\t?\s*(.+)$", t)
return False, 1, body
m = ORDERED_MARKER_RE.match(t)
if m:
return True, True, m.group(2).strip()
number = m.group(1)
level = number.count(".") + 1
return True, level, m.group(2).strip()
return None
def look_like_list_item(text: str) -> tuple[bool, bool, str] | None:
"""
Detect md2gost-style list lines (–\\t / 1.\\t) or plain markers.
Returns (ordered, marker_ok, body) or None.
"""
parsed = parse_list_item(text)
if parsed is None:
return None
ordered, _level, body = parsed
return ordered, True, body
def parse_biblio_line(text: str) -> tuple[str, str] | None:
m = BIBLIO_LINE_RE.match((text or "").strip())
if not m: