diff --git a/lib/export_csv.py b/lib/export_csv.py index e21b6b6..f985e90 100644 --- a/lib/export_csv.py +++ b/lib/export_csv.py @@ -166,21 +166,43 @@ def build_weiche_merkmale(block, eintrag): def build_variofoerderer_merkmale(block): + """Merkmale-Dict fuer einen VF_N- oder GF_N-Streckenblock. + + Die Attributnamen folgen dem gemeinsamen Schema *strecke-attr-front* / + *strecke-attr-gruppe* in ssg_core.lsp. Hoehen und Delta-Werte tragen dort + das Einheiten-Suffix _mm; SEITE ist in SEITE_AS/SEITE_ES (Antriebs-/ + Endstation) und WINKEL in GF_WINKEL/VF_WINKEL aufgeteilt. Die alten Namen + ohne Suffix werden per Fallback weiter gelesen, damit aeltere + export_raw.json-Dateien (z.B. tests/reference/export_raw.json) und noch + nicht neu aufgebaute Bloecke in der Zeichnung weiterhin Werte liefern. + """ attribs = block.get("attribs", {}) + + def att(*keys): + """Erster nicht-leerer Attributwert; aktuelles Schema zuerst, Alt-Name + als Fallback.""" + for key in keys: + value = attribs.get(key) + if value not in (None, ""): + return value + return "" + return { - "Typ": attribs.get("TYP", ""), - "Seite": attribs.get("SEITE", ""), - "Winkel": attribs.get("WINKEL", ""), - "DeltaH_mm": attribs.get("DELTA_H", ""), - "DeltaL_mm": attribs.get("DELTA_L", ""), - "L_VF_m": attribs.get("L_VF_m", ""), - "L_GF_m": attribs.get("L_GF_m", ""), - "Montagehoehe_m": attribs.get("MONTAGEHOEHE_m", ""), - "Hoehe_Von_mm": attribs.get("HOEHE_VON", ""), - "Hoehe_Bis_mm": attribs.get("HOEHE_BIS", ""), - "Antriebfahrtrichtung": attribs.get("ANTRIEBFAHRTRICHTUNG", ""), - "Anzahl_Separator": attribs.get("ANZAHL_SEPARATOR", ""), - "Anzahl_Scanner": attribs.get("ANZAHL_SCANNER", ""), + "Typ": att("TYP"), + "Seite_AS": att("SEITE_AS", "SEITE"), + "Seite_ES": att("SEITE_ES", "SEITE"), + "Winkel": att("GF_WINKEL", "WINKEL"), + "VF_Winkel": att("VF_WINKEL"), + "DeltaH_mm": att("DELTA_H_mm", "DELTA_H"), + "DeltaL_mm": att("DELTA_L_mm", "DELTA_L"), + "L_VF_m": att("L_VF_m"), + "L_GF_m": att("L_GF_m"), + "Montagehoehe_m": att("MONTAGEHOEHE_m"), + "Hoehe_Von_mm": att("HOEHE_VON_mm", "HOEHE_VON"), + "Hoehe_Bis_mm": att("HOEHE_BIS_mm", "HOEHE_BIS"), + "Antriebfahrtrichtung": att("ANTRIEBFAHRTRICHTUNG"), + "Anzahl_Separator": att("ANZAHL_SEPARATOR"), + "Anzahl_Scanner": att("ANZAHL_SCANNER"), }