diff --git a/lib/error_collector.py b/lib/error_collector.py index f7e9473..3278329 100644 --- a/lib/error_collector.py +++ b/lib/error_collector.py @@ -20,23 +20,63 @@ class ErrorCollector: """Fügt Fehler aus einem Dictionary hinzu.""" for key, value in error_dict.items(): if key in self.errors: - if isinstance(self.errors[key], list) and isinstance(value, list): - self.errors[key].extend(value) + # Key existiert bereits - Verhalten hängt vom Typ ab + existing = self.errors[key] + + if isinstance(existing, dict) and isinstance(value, dict): + # Beide sind Dictionaries → Merge/Update + existing.update(value) + elif isinstance(existing, list): + # Existierender Wert ist Liste + if isinstance(value, list): + existing.extend(value) + else: + existing.append(value) else: - self.errors[key] = [self.errors[key], value] + # Existierender Wert ist weder dict noch list → Mache Liste daraus + if isinstance(value, list): + self.errors[key] = [existing] + value + else: + self.errors[key] = [existing, value] else: - self.errors[key] = value + # Neuer Key - behalte Typ des Wertes + if isinstance(value, (dict, list)): + # Dictionary oder Liste → direkt speichern + self.errors[key] = value + else: + # Primitiver Wert (String, etc.) → als Liste speichern + self.errors[key] = [value] def add_warnings(self, warning_dict): """Fügt Warnungen aus einem Dictionary hinzu.""" for key, value in warning_dict.items(): if key in self.warnings: - if isinstance(self.warnings[key], list) and isinstance(value, list): - self.warnings[key].extend(value) + # Key existiert bereits - Verhalten hängt vom Typ ab + existing = self.warnings[key] + + if isinstance(existing, dict) and isinstance(value, dict): + # Beide sind Dictionaries → Merge/Update + existing.update(value) + elif isinstance(existing, list): + # Existierender Wert ist Liste + if isinstance(value, list): + existing.extend(value) + else: + existing.append(value) else: - self.warnings[key] = [self.warnings[key], value] + # Existierender Wert ist weder dict noch list → Mache Liste daraus + if isinstance(value, list): + self.warnings[key] = [existing] + value + else: + self.warnings[key] = [existing, value] else: - self.warnings[key] = value + # Neuer Key - behalte Typ des Wertes + if isinstance(value, (dict, list)): + # Dictionary oder Liste → direkt speichern + self.warnings[key] = value + else: + # Primitiver Wert (String, etc.) → als Liste speichern + self.warnings[key] = [value] def has_errors_or_warnings(self): """Prüft ob Fehler oder Warnungen vorhanden sind."""