Browse Source

Change ReadOnlySpan to string following PR 6383 (#6734)

Claus Vium 3 years ago
parent
commit
39d5bdac96

+ 8 - 16
Emby.Naming/Video/CleanStringParser.cs

@@ -17,11 +17,11 @@ namespace Emby.Naming.Video
         /// <param name="expressions">List of regex to parse name and year from.</param>
         /// <param name="newName">Parsing result string.</param>
         /// <returns>True if parsing was successful.</returns>
-        public static bool TryClean([NotNullWhen(true)] string? name, IReadOnlyList<Regex> expressions, out ReadOnlySpan<char> newName)
+        public static bool TryClean([NotNullWhen(true)] string? name, IReadOnlyList<Regex> expressions, out string newName)
         {
             if (string.IsNullOrEmpty(name))
             {
-                newName = ReadOnlySpan<char>.Empty;
+                newName = string.Empty;
                 return false;
             }
 
@@ -32,32 +32,24 @@ namespace Emby.Naming.Video
                 if (TryClean(name, expressions[i], out newName))
                 {
                     cleaned = true;
-                    name = newName.ToString();
+                    name = newName;
                 }
             }
 
-            newName = cleaned ? name.AsSpan() : ReadOnlySpan<char>.Empty;
+            newName = cleaned ? name : string.Empty;
             return cleaned;
         }
 
-        private static bool TryClean(string name, Regex expression, out ReadOnlySpan<char> newName)
+        private static bool TryClean(string name, Regex expression, out string newName)
         {
             var match = expression.Match(name);
-            int index = match.Index;
-            if (match.Success)
+            if (match.Success && match.Groups.TryGetValue("cleaned", out var cleaned))
             {
-                var found = match.Groups.TryGetValue("cleaned", out var cleaned);
-                if (!found || cleaned == null)
-                {
-                    newName = ReadOnlySpan<char>.Empty;
-                    return false;
-                }
-
-                newName = name.AsSpan().Slice(cleaned.Index, cleaned.Length);
+                newName = cleaned.Value;
                 return true;
             }
 
-            newName = ReadOnlySpan<char>.Empty;
+            newName = string.Empty;
             return false;
         }
     }

+ 3 - 3
Emby.Naming/Video/VideoResolver.cs

@@ -87,9 +87,9 @@ namespace Emby.Naming.Video
                 year = cleanDateTimeResult.Year;
 
                 if (extraResult.ExtraType == null
-                    && TryCleanString(name, namingOptions, out ReadOnlySpan<char> newName))
+                    && TryCleanString(name, namingOptions, out var newName))
                 {
-                    name = newName.ToString();
+                    name = newName;
                 }
             }
 
@@ -138,7 +138,7 @@ namespace Emby.Naming.Video
         /// <param name="namingOptions">The naming options.</param>
         /// <param name="newName">Clean name.</param>
         /// <returns>True if cleaning of name was successful.</returns>
-        public static bool TryCleanString([NotNullWhen(true)] string? name, NamingOptions namingOptions, out ReadOnlySpan<char> newName)
+        public static bool TryCleanString([NotNullWhen(true)] string? name, NamingOptions namingOptions, out string newName)
         {
             return CleanStringParser.TryClean(name, namingOptions.CleanStringRegexes, out newName);
         }

+ 4 - 6
tests/Jellyfin.Naming.Tests/Video/CleanStringTests.cs

@@ -1,4 +1,3 @@
-using System;
 using Emby.Naming.Common;
 using Emby.Naming.Video;
 using Xunit;
@@ -32,9 +31,8 @@ namespace Jellyfin.Naming.Tests.Video
         // FIXME: [InlineData("After The Sunset - [0004].mkv", "After The Sunset")]
         public void CleanStringTest_NeedsCleaning_Success(string input, string expectedName)
         {
-            Assert.True(VideoResolver.TryCleanString(input, _namingOptions, out ReadOnlySpan<char> newName));
-            // TODO: compare spans when XUnit supports it
-            Assert.Equal(expectedName, newName.ToString());
+            Assert.True(VideoResolver.TryCleanString(input, _namingOptions, out var newName));
+            Assert.Equal(expectedName, newName);
         }
 
         [Theory]
@@ -47,8 +45,8 @@ namespace Jellyfin.Naming.Tests.Video
         [InlineData("Run lola run (lola rennt) (2009).mp4")]
         public void CleanStringTest_DoesntNeedCleaning_False(string? input)
         {
-            Assert.False(VideoResolver.TryCleanString(input, _namingOptions, out ReadOnlySpan<char> newName));
-            Assert.True(newName.IsEmpty);
+            Assert.False(VideoResolver.TryCleanString(input, _namingOptions, out var newName));
+            Assert.True(string.IsNullOrEmpty(newName));
         }
     }
 }