v0.5.4
NewPromt - small fix
This commit is contained in:
+22
-7
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user