ae7c3a3fff
- OperationMode now designed and implemented in a way that allows serialization - Modes are now defined using an enumeration with with attributes decorated values - MainWindow.xaml.cs's event handlers now only listen for changes to certain properties - Property naming conventions fixed - AvaloniaProperties are now public + static + readonly
42 lines
1.3 KiB
C#
42 lines
1.3 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text.RegularExpressions;
|
|
|
|
namespace BFR.Helpers
|
|
{
|
|
public static class IListExtensions
|
|
{
|
|
public static void ReplaceAll<T>(this IList<T> list, IEnumerable<T> replacement)
|
|
{
|
|
list.Clear();
|
|
foreach (var t in replacement)
|
|
list.Add(t);
|
|
}
|
|
}
|
|
|
|
public static class StringExtensions
|
|
{
|
|
public static string Replace(this string input, string pattern, string replacement, bool useRegex = false, bool useRegexReplace = false) =>
|
|
Regex.Replace(input,
|
|
useRegex ? pattern : Regex.Escape(pattern),
|
|
useRegexReplace ? replacement : replacement.Replace("$", "$$"));
|
|
|
|
public static bool RegexContains(this string input, string pattern)
|
|
{
|
|
try { return Regex.IsMatch(input, pattern); }
|
|
catch(Exception) { return false; }
|
|
}
|
|
}
|
|
|
|
public static class EnumExtensions
|
|
{
|
|
public static T GetAttribute<T>(this Enum enumVal) where T : Attribute
|
|
{
|
|
var type = enumVal.GetType();
|
|
var memInfo = type.GetMember(enumVal.ToString());
|
|
var attributes = memInfo[0].GetCustomAttributes(typeof(T), false);
|
|
return (attributes.Length > 0) ? (T)attributes[0] : null;
|
|
}
|
|
}
|
|
}
|