Index si navigare: fara prefixul de modul repetat in fiecare intrare
In index, fiecare lectie isi repeta modulul ("Modul 2 / #6 — ...") sub un
titlu de sectiune care spune deja "Modulul 2", iar sesiunile Q&A isi
repetau "Q&A" sub titlul "Q&A". Acum raman "#6 — ..." si "15.07.2025 —
...", cu subiectul pastrat in index si doar data in barele inguste.
Titlurile din Analiza Fundamentala erau inconsecvente si scurtarea le
rata: trei incepeau cu "Modul Analiza Fundamentala /", iar una cu
"Modul 16 /", care e numarul folderului, nu al modulului. Normalizate
toate la "Analiza Fundamentala / #N".
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MtSTyTmt6AbCL9j5ajEDm1
This commit is contained in:
@@ -77,12 +77,13 @@ def md_title(md_path: Path) -> str:
|
||||
return text.splitlines()[0].lstrip("# ").strip() if text else md_path.stem
|
||||
|
||||
|
||||
def short_title(title: str, folder: str) -> str:
|
||||
"""Pentru bara de navigare. Titlul lecțiilor începe cu "Modul 2 / #6 — ...",
|
||||
iar modulul e deja în breadcrumb. La Q&A titlul întreg ocupă trei rânduri pe
|
||||
telefon, așa că rămâne doar "Q&A <data>" — restul se vede în H1, dedesubt."""
|
||||
short = re.sub(r"^Modul[^/]*/\s*", "", title)
|
||||
return short.split(" — ")[0] if folder == "09_QA" else short
|
||||
def short_title(title: str, date_only: bool = False) -> str:
|
||||
"""Taie prefixul de modul din titlu ("Modul 2 / #6 — ..." -> "#6 — ..."),
|
||||
pentru locurile unde modulul e deja scris alături: breadcrumb, bara de
|
||||
navigare, titlurile din index. `date_only` ține doar "Q&A <data>", pentru
|
||||
barele înguste de pe telefon — subiectul se vede oricum în H1, dedesubt."""
|
||||
short = re.sub(r"^(?:[^/]*/\s*(?=#)|Q&A (?=\d))", "", title)
|
||||
return short.split(" — ")[0] if date_only else short
|
||||
|
||||
|
||||
def nav_html(md_path: Path, title: str) -> tuple[str, str]:
|
||||
@@ -95,14 +96,14 @@ def nav_html(md_path: Path, title: str) -> tuple[str, str]:
|
||||
f'<a href="../index.html#{folder}">{escape(module_name(folder))}</a>']
|
||||
if folder == "09_QA" and md_path.stem != "INDEX_TEMATIC":
|
||||
crumbs.append('<a href="INDEX_TEMATIC.html">index tematic</a>')
|
||||
crumbs.append(escape(short_title(title, folder)))
|
||||
crumbs.append(escape(short_title(title, date_only=folder == "09_QA")))
|
||||
top = f'<nav class="crumbs">{sep.join(crumbs)}</nav>'
|
||||
|
||||
lessons = sorted(f for f in md_path.parent.glob("*.md") if f.name[0].isdigit())
|
||||
prev_a = next_a = ""
|
||||
if md_path in lessons:
|
||||
i = lessons.index(md_path)
|
||||
label = lambda f: f"{f.name.split('_')[0]}. {escape(short_title(md_title(f), folder))}"
|
||||
label = lambda f: f"{f.name.split('_')[0]}. {escape(short_title(md_title(f), date_only=folder == '09_QA'))}"
|
||||
if i > 0:
|
||||
prev_a = f'<a class="prev" href="{lessons[i-1].stem}.html">← {label(lessons[i-1])}</a>'
|
||||
if i < len(lessons) - 1:
|
||||
@@ -134,7 +135,7 @@ def write_index(pages: list[tuple[Path, str]]):
|
||||
sections.append("</ul>")
|
||||
current = path.parent.name
|
||||
sections.append(f'<h2 id="{current}">{escape(module_name(current))}</h2><ul>')
|
||||
sections.append(f'<li><a href="{path.relative_to(ROOT)}">{title}</a></li>')
|
||||
sections.append(f'<li><a href="{path.relative_to(ROOT)}">{escape(short_title(title))}</a></li>')
|
||||
if current is not None:
|
||||
sections.append("</ul>")
|
||||
(ROOT / "index.html").write_text(
|
||||
|
||||
Reference in New Issue
Block a user