using System.Globalization;
using Avalonia.Data.Converters;

namespace ClawdDotNet.Desktop.Converters;

/// <summary>
/// Vergleicht eine Zeichenkette mit dem <c>ConverterParameter</c>, ohne Gross- und
/// Kleinschreibung zu unterscheiden.
///
/// <para>Gedacht fuer <c>Classes.xyz="{Binding …}"</c>: Die Ansicht setzt damit eine
/// Stilklasse, und die Farbe dazu steht in <c>Styles/Shell.axaml</c> an
/// <c>DynamicResource</c>. Das ersetzt den frueheren LogLevelBrushConverter, der
/// Pinsel mit festen Farbwerten zurueckgab — die blieben beim Wechsel auf Dunkel
/// unveraendert stehen, weil ein einmal gelieferter Pinsel nichts mehr vom Thema
/// mitbekommt.</para>
/// </summary>
public sealed class StringEqualsConverter : IValueConverter
{
    public static readonly StringEqualsConverter Instance = new();

    public object Convert(object? value, Type targetType, object? parameter, CultureInfo culture)
        => value is string text && parameter is string expected
           && text.Equals(expected, StringComparison.OrdinalIgnoreCase);

    public object ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture)
        => throw new NotSupportedException("Nur zur Anzeige.");
}
