package templatefunctions import "github.com/Theodor-Springmann-Stiftung/kgpz_web/xmlmodels" // CategoryFlags represents all possible category flags for a piece type CategoryFlags struct { Rezension bool Weltnachrichten bool EinkommendeFremde bool Wechselkurse bool Buecher bool Lokalanzeigen bool Lokalnachrichten bool Lotterie bool Gedicht bool Vorladung bool Auszug bool Aufsatz bool GelehrteNachrichten bool Theaterkritik bool Uebersetzung bool Kommentar bool Nachruf bool Replik bool Proklamation bool Ineigenersache bool Brief bool Anzeige bool Desertionsliste bool Notenblatt bool Vorlesungsverzeichnis bool Erzaehlung bool Nachtrag bool Panegyrik bool Kriminalanzeige bool Abbildung bool Rezepte bool Korrektur bool } // GetCategoryFlags analyzes a piece and returns a CategoryFlags struct with all category flags set func GetCategoryFlags(piece xmlmodels.Piece) CategoryFlags { flags := CategoryFlags{} // Process CategoryRefs for _, catref := range piece.CategoryRefs { switch catref.Ref { case "rezension": flags.Rezension = true case "weltnachrichten": flags.Weltnachrichten = true case "einkommende-fremde": flags.EinkommendeFremde = true case "wechselkurse": flags.Wechselkurse = true case "buecher": flags.Buecher = true case "lokalanzeigen": flags.Lokalanzeigen = true case "lokalnachrichten": flags.Lokalnachrichten = true case "lotterie": flags.Lotterie = true case "gedicht": flags.Gedicht = true case "vorladung": flags.Vorladung = true case "auszug": flags.Auszug = true case "aufsatz": flags.Aufsatz = true case "gelehrte-nachrichten": flags.GelehrteNachrichten = true case "theaterkritik": flags.Theaterkritik = true case "uebersetzung": flags.Uebersetzung = true case "kommentar": flags.Kommentar = true case "nachruf": flags.Nachruf = true case "replik": flags.Replik = true case "proklamation": flags.Proklamation = true case "ineigenersache": flags.Ineigenersache = true case "brief": flags.Brief = true case "anzeige": flags.Anzeige = true case "desertionsliste": flags.Desertionsliste = true case "notenblatt": flags.Notenblatt = true case "vorlesungsverzeichnis": flags.Vorlesungsverzeichnis = true case "erzaehlung": flags.Erzaehlung = true case "nachtrag": flags.Nachtrag = true case "panegyrik": flags.Panegyrik = true case "kriminalanzeige": flags.Kriminalanzeige = true case "abbildung": flags.Abbildung = true case "rezepte": flags.Rezepte = true case "korrektur": flags.Korrektur = true } } // Process WorkRefs with category mapping for _, workref := range piece.WorkRefs { kat := workref.Category if kat == "" { kat = "rezension" // Default category for WorkRefs } switch kat { case "rezension": flags.Rezension = true case "auszug": flags.Auszug = true case "theaterkritik": flags.Theaterkritik = true case "uebersetzung": flags.Uebersetzung = true case "kommentar": flags.Kommentar = true case "anzeige": flags.Anzeige = true case "replik": flags.Replik = true } } return flags }