# SwitchCaseProcessor

## Überblick

Der `SwitchCaseProcessor` ermöglicht switch/case-Logik in Templates, ähnlich wie in Programmiersprachen.

## Funktionsweise

- Findet `<switch>`-Tags mit einem `value`-Attribut
- Vergleicht den Wert mit den `value`-Attributen der enthaltenen `<case>`-Tags
- Zeigt nur den Inhalt des ersten passenden `<case>`-Tags an
- Falls kein Fall passt, wird der Inhalt des `<default>`-Tags angezeigt (wenn vorhanden)

## Syntax

```html
<switch value="expression">
    <case value="value1">Inhalt für value1</case>
    <case value="value2">Inhalt für value2</case>
    <default>Fallback-Inhalt</default>
</switch>
```

## Beispiel

```html
<switch value="{{ status }}">
    <case value="active">Aktiv</case>
    <case value="pending">Ausstehend</case>
    <case value="suspended">Gesperrt</case>
    <default>Unbekannter Status</default>
</switch>
```

## Implementierung

Der Prozessor findet alle `<switch>`-Tags und deren `<case>`- und `<default>`-Kinder. Er vergleicht den im `value`-Attribut des `<switch>`-Tags angegebenen Wert mit den Werten der `<case>`-Tags und behält nur den passenden Fall bei. Alle nicht passenden Fälle werden aus dem DOM entfernt.

## Mehrere passende Fälle

Wenn mehrere `<case>`-Tags dem Wert entsprechen, wird nur der erste passende Fall berücksichtigt. Die anderen werden entfernt, ähnlich wie bei einem `break` in einer Programmiersprache.

## Default-Fall

Der `<default>`-Tag wird nur angezeigt, wenn kein `<case>`-Tag passt. Er benötigt kein `value`-Attribut.

## Dynamische Werte

Das `value`-Attribut des `<switch>`-Tags kann mit Platzhaltern verwendet werden:

```html
<switch value="{{ userRole }}">
    <case value="admin">Administratorbereich</case>
    <case value="moderator">Moderatorbereich</case>
    <default>Benutzerbereich</default>
</switch>
```

## Vorteile

- Elegantere Alternative zu verschachtelten `if`-Bedingungen
- Verbessert die Lesbarkeit bei mehreren Bedingungen
- Ideal für Status-basierte Anzeigen, Benutzerberechtigungen, etc.
