aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/Library/NameExtensions.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Controller/Library/NameExtensions.cs')
-rw-r--r--MediaBrowser.Controller/Library/NameExtensions.cs79
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();
+ }
+ }
+}