Files
Artemis/src/Artemis.UI.Shared/Utilities/EnumUtilities.cs
T
SpoinkyNL 9fc6191015 Layers - Finished effects on layers, groups still missing
Effects - Added filter effect with different SkiaSharp image filters
2020-06-16 00:25:04 +02:00

43 lines
1.4 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Globalization;
using System.Linq;
using Humanizer;
namespace Artemis.UI.Shared.Utilities
{
public static class EnumUtilities
{
public static string Description(this Enum value)
{
var attributes = value.GetType().GetField(value.ToString()).GetCustomAttributes(typeof(DescriptionAttribute), false);
if (attributes.Any())
return (attributes.First() as DescriptionAttribute).Description;
// If no description is found, the least we can do is replace underscores with spaces
// You can add your own custom default formatting logic here
var ti = CultureInfo.CurrentCulture.TextInfo;
return ti.ToTitleCase(ti.ToLower(value.ToString().Replace("_", " ")));
}
public static IEnumerable<ValueDescription> GetAllValuesAndDescriptions(Type t)
{
if (!t.IsEnum)
throw new ArgumentException($"{nameof(t)} must be an enum type");
return Enum.GetValues(t).Cast<Enum>().Select(e => new ValueDescription {Value = e, Description = e.Humanize()}).ToList();
}
public static string HumanizeValue(Enum value)
{
return value.Humanize();
}
}
public class ValueDescription
{
public object Value { get; set; }
public string Description { get; set; }
}
}