Files
atm-curs-dl/gen/strategii/substituie.py
Claude Agent 0c37ddaa82 strategii: mutate in summaries/17_STRATEGII si randate
Mutarea face ca indexul, breadcrumb-ul si pager-ul existente sa mearga
fara cod nou. Trimiterile ../summaries/X rescrise in ../X, cele spre
triaj/ si harvest/ in ../../. 658 de linkuri in HTML, 0 rupte.

render_html: capitolele isi scriu trimiterile cu .md (ca sa mearga si pe
Gitea), deci pagina le rescrie in .html la randare, doar pentru tintele
care chiar au pagina. TEMPLATE.md a iesit din folderul publicat.

104 pagini randate.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ThN7ixZrowca8aTGrK1MUJ
2026-09-19 13:28:02 +00:00

56 lines
1.9 KiB
Python

"""Înlocuiește marcajele <!-- DIAGRAMA: cheie --> din strategii/*.md cu SVG-ul lui.
Substituția o face scriptul ăsta, nu agenții: la 37 de diagrame, dacă fiecare
agent ar scrie în .md-ul capitolului, șapte agenți ar edita același fișier.
Cheia din marcaj se caută ca gen/strategii/<slug>_<cheie>.svg, unde slug-ul
vine din numele capitolului (01_buy_doji.md -> buy_doji).
python3 gen/strategii/substituie.py # scrie
python3 gen/strategii/substituie.py --check # doar raportează, nu scrie
"""
import re
import sys
from pathlib import Path
ROOT = Path(__file__).resolve().parent.parent.parent
CAPITOLE = sorted((ROOT / "summaries" / "17_STRATEGII").glob("0[1-8]_*.md"))
MARCAJ = re.compile(r"^[ \t]*<!-- DIAGRAMA: ([a-z0-9_]+) -->[ \t]*$", re.M)
def slug(cale: Path) -> str:
"""01_buy_doji.md -> buy_doji"""
return cale.stem.split("_", 1)[1]
def main() -> int:
check = "--check" in sys.argv
puse = lipsa = 0
for cap in CAPITOLE:
text = cap.read_text()
s = slug(cap)
def inlocuieste(m: re.Match) -> str:
nonlocal puse, lipsa
# unii agenți au pus slug-ul în cheie (mp2_exemplu), alții nu (exemplu)
gen = ROOT / "gen" / "strategii"
svg = next((c for c in (gen / f"{s}_{m.group(1)}.svg",
gen / f"{m.group(1)}.svg") if c.exists()),
gen / f"{s}_{m.group(1)}.svg")
if not svg.exists():
lipsa += 1
print(f"LIPSĂ {cap.name}: {svg.name}")
return m.group(0)
puse += 1
return svg.read_text().strip()
nou = MARCAJ.sub(inlocuieste, text)
if nou != text and not check:
cap.write_text(nou)
print(f"{puse} diagrame puse, {lipsa} lipsă")
return 1 if lipsa else 0
if __name__ == "__main__":
sys.exit(main())