From 064b5e82e436c717f74a4d0a353e01e20da9752c Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Wed, 15 Apr 2015 11:41:42 -0400 Subject: fix roku thumbnails --- MediaBrowser.Controller/Library/NameExtensions.cs | 56 +++++++++++++++++++---- 1 file changed, 47 insertions(+), 9 deletions(-) (limited to 'MediaBrowser.Controller/Library/NameExtensions.cs') diff --git a/MediaBrowser.Controller/Library/NameExtensions.cs b/MediaBrowser.Controller/Library/NameExtensions.cs index b2acdc7ea..6973dce64 100644 --- a/MediaBrowser.Controller/Library/NameExtensions.cs +++ b/MediaBrowser.Controller/Library/NameExtensions.cs @@ -2,40 +2,78 @@ 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 name1, string name2) + public static bool AreEqual(string x, string y) { - name1 = NormalizeForComparison(name1); - name2 = NormalizeForComparison(name2); + if (string.IsNullOrWhiteSpace(x) && string.IsNullOrWhiteSpace(y)) + { + return true; + } - return string.Equals(name1, name2, StringComparison.OrdinalIgnoreCase); + return string.Compare(x, y, CultureInfo.InvariantCulture, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace) == 0; } - public static bool EqualsAny(IEnumerable names, string name) + public static bool EqualsAny(IEnumerable names, string x) { - name = NormalizeForComparison(name); + x = NormalizeForComparison(x); - return names.Any(i => string.Equals(NormalizeForComparison(i), name, StringComparison.OrdinalIgnoreCase)); + return names.Any(y => string.Compare(x, y, CultureInfo.InvariantCulture, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace) == 0); } private static string NormalizeForComparison(string name) { - if (string.IsNullOrWhiteSpace(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 DistinctNames(this IEnumerable names) { - return names.DistinctBy(NormalizeForComparison, StringComparer.OrdinalIgnoreCase); + return names.DistinctBy(RemoveDiacritics, StringComparer.OrdinalIgnoreCase); + } + } + + class TextComparer : IComparer, IEqualityComparer + { + 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(); } } } -- cgit v1.2.3