aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/Library/NameExtensions.cs
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2015-04-15 11:41:42 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2015-04-15 11:41:42 -0400
commit064b5e82e436c717f74a4d0a353e01e20da9752c (patch)
tree3937f44bc852e661cc681afb0a2ef0d859bb62e9 /MediaBrowser.Controller/Library/NameExtensions.cs
parent9189b551eccfc2e8e511d18e1cbe228f0be73c60 (diff)
fix roku thumbnails
Diffstat (limited to 'MediaBrowser.Controller/Library/NameExtensions.cs')
-rw-r--r--MediaBrowser.Controller/Library/NameExtensions.cs56
1 files changed, 47 insertions, 9 deletions
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<string> names, string name)
+ public static bool EqualsAny(IEnumerable<string> 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<string> DistinctNames(this IEnumerable<string> names)
{
- return names.DistinctBy(NormalizeForComparison, StringComparer.OrdinalIgnoreCase);
+ 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();
}
}
}