diff options
Diffstat (limited to 'MediaBrowser.Controller/Library/NameExtensions.cs')
| -rw-r--r-- | MediaBrowser.Controller/Library/NameExtensions.cs | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/MediaBrowser.Controller/Library/NameExtensions.cs b/MediaBrowser.Controller/Library/NameExtensions.cs new file mode 100644 index 000000000..6973dce64 --- /dev/null +++ b/MediaBrowser.Controller/Library/NameExtensions.cs @@ -0,0 +1,79 @@ +using MediaBrowser.Common.Extensions; +using MoreLinq; +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; + +namespace MediaBrowser.Controller.Library +{ + public static class NameExtensions + { + public static bool AreEqual(string x, string y) + { + if (string.IsNullOrWhiteSpace(x) && string.IsNullOrWhiteSpace(y)) + { + return true; + } + + return string.Compare(x, y, CultureInfo.InvariantCulture, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace) == 0; + } + + public static bool EqualsAny(IEnumerable<string> names, string x) + { + x = NormalizeForComparison(x); + + return names.Any(y => string.Compare(x, y, CultureInfo.InvariantCulture, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace) == 0); + } + + private static string NormalizeForComparison(string name) + { + if (name == null) + { + return string.Empty; + } + + return name; + //return name.RemoveDiacritics(); + } + + private static string RemoveDiacritics(string name) + { + if (name == null) + { + return string.Empty; + } + + //return name; + return name.RemoveDiacritics(); + } + + public static IEnumerable<string> DistinctNames(this IEnumerable<string> names) + { + return names.DistinctBy(RemoveDiacritics, StringComparer.OrdinalIgnoreCase); + } + } + + class TextComparer : IComparer<string>, IEqualityComparer<string> + { + public int Compare(string x, string y) + { + if (string.IsNullOrWhiteSpace(x) && string.IsNullOrWhiteSpace(y)) + { + return 0; + } + + return string.Compare(x, y, CultureInfo.InvariantCulture, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace); + } + + public bool Equals(string x, string y) + { + return Compare(x, y) == 0; + } + + public int GetHashCode(string obj) + { + return (obj ?? string.Empty).GetHashCode(); + } + } +} |
