using System;
using System.Diagnostics.Contracts;
using System.Runtime.CompilerServices;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Data;
namespace OwlCore.WinUI.Converters.Text
{
///
/// A converter that changes the casing of a string.
///
public class CaseConverter : IValueConverter
{
///
/// Gets or sets the character casing to convert an input string to.
///
public CharacterCasing Case { get; set; }
///
/// Initializes a new instance of the class.
///
public CaseConverter()
{
Case = CharacterCasing.Upper;
}
///
/// Converts a string to a certain character casing.
///
/// The string to convert.
/// The result's character casing.
/// String in the specified character casing.
[Pure]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static string Convert(string? value, CharacterCasing characterCasing)
{
if (value != null)
{
switch (characterCasing)
{
case CharacterCasing.Upper:
return value.ToUpper();
case CharacterCasing.Lower:
return value.ToLower();
case CharacterCasing.Normal:
default:
return value;
}
}
return string.Empty;
}
///
public object Convert(object value, Type targetType, object parameter, string language)
{
var str = value as string;
return Convert(str, Case);
}
///
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}
}