This commit is contained in:
Team3
2026-07-26 16:00:49 +02:00
parent 714307f93e
commit 6b155affbd
12 changed files with 629 additions and 388 deletions

View File

@@ -1,9 +1,11 @@
"""Zerlegt den rohen Feature-Text in Sektionen — nur für die Anzeige.
Format: titel (eine Zeile), art, ziel, dann wiederholbare <!-- funktion -->-Blöcke;
<!-- regel -->- und <!-- flow -->-Blöcke gehören zur davorstehenden Funktion.
Präambel, unbekannte Marker und verwaiste regel/flow-Blöcke landen in `sonstiges`
(wird nicht angezeigt, aber beim Speichern erhalten).
<!-- regeln -->- und <!-- testen -->-Blöcke (je eine `- `-Zeile pro Eintrag) gehören zur
davorstehenden Funktion. Alt-Format wird weiter gelesen: <!-- regel -->-Blöcke (einer je
Regel) und <!-- flow --> (heute testen) werden zusammengeführt. Präambel, unbekannte
Marker und verwaiste Blöcke landen in `sonstiges` (wird nicht angezeigt, aber beim
Speichern erhalten).
Trennzeilen aus Bindestrichen (---) sind reine Optik und werden ignoriert.
"""
@@ -36,6 +38,7 @@ def zerlege(roh: str) -> dict:
titel = []
ziel = []
regeln = []
funktionen = []
sonstiges = []
art = []
@@ -45,18 +48,22 @@ def zerlege(roh: str) -> dict:
elif schluessel == "art":
art.append(text)
elif schluessel == "ziel":
ziel.append(text)
# vor der ersten Funktion: Karten-Ziel, danach: Ziel der Funktion
(funktionen[-1]["ziel"] if funktionen else ziel).append(text)
elif schluessel == "funktion":
funktionen.append({"text": text, "regeln": [], "flow": []})
elif schluessel == "regel" and funktionen:
funktionen[-1]["regeln"].append(text)
elif schluessel == "flow" and funktionen:
funktionen[-1]["flow"].append(text)
else: # Präambel, unbekannter Marker, regel/flow ohne funktion
funktionen.append({"text": text, "ziel": [], "regeln": [], "testen": []})
elif schluessel in ("regel", "regeln"):
# vor der ersten Funktion: Karten-Regeln, danach: Regeln der Funktion
(funktionen[-1]["regeln"] if funktionen else regeln).append(text)
elif schluessel in ("flow", "testen") and funktionen:
funktionen[-1]["testen"].append(text)
else: # Präambel, unbekannter Marker, regeln/testen ohne funktion
sonstiges.append(text)
for f in funktionen:
f["flow"] = "\n".join(f["flow"])
f["ziel"] = "\n\n".join(f["ziel"])
f["regeln"] = "\n".join(f["regeln"])
f["testen"] = "\n".join(f["testen"])
# Titel ist eine Zeile: erste nicht-leere
titel_zeilen = [z.strip() for t in titel for z in t.splitlines() if z.strip()]
@@ -65,6 +72,7 @@ def zerlege(roh: str) -> dict:
"titel": titel_zeilen[0] if titel_zeilen else "",
"art": "optional" if art and art[0].strip().lower() == "optional" else "kern",
"ziel": "\n\n".join(ziel),
"regeln": "\n".join(regeln),
"funktionen": funktionen,
"sonstiges": "\n\n".join(sonstiges),
}