From 74daa7a2b0e7bb6b0c19b363bdbb92fd458a5c73 Mon Sep 17 00:00:00 2001 From: John Andrews Date: Fri, 10 May 2024 20:56:42 +1200 Subject: [PATCH] zip now doesnt force .zip extension fixed comic book info parser --- BasicNodes/Tools/Zip.cs | 3 +-- ComicNodes/Comics/CreateComicInfo.cs | 17 +++++++++++++++-- ComicNodes/Tests/ComicInfoTests.cs | 28 ++++++++++++++++++++++++++++ 3 files changed, 44 insertions(+), 4 deletions(-) diff --git a/BasicNodes/Tools/Zip.cs b/BasicNodes/Tools/Zip.cs index b21b4727..129c08a1 100644 --- a/BasicNodes/Tools/Zip.cs +++ b/BasicNodes/Tools/Zip.cs @@ -123,8 +123,7 @@ public class Zip : Node { destFile = FileHelper.GetShortFileName(args.FileName) + ".zip"; } - if (destFile.ToLower().EndsWith(".zip") == false) - destFile += ".zip"; + destFile = FileHelper.Combine(destDir, destFile); string tempZip = FileHelper.Combine(args.TempPath, Guid.NewGuid() + ".zip"); diff --git a/ComicNodes/Comics/CreateComicInfo.cs b/ComicNodes/Comics/CreateComicInfo.cs index ec786d9b..36d39d2e 100644 --- a/ComicNodes/Comics/CreateComicInfo.cs +++ b/ComicNodes/Comics/CreateComicInfo.cs @@ -339,7 +339,13 @@ public class CreateComicInfo : Node if (matchIndex == 1 || shortname[matchIndex - 2] is '#' or ' ' or '(' or '[' or '.' or '_' or '-') { // Remove the issue number from the string - shortname = shortname.Remove(matchIndex - 1, match.Length + 1).Trim(); + int length = match.Length; + if (shortname[matchIndex - 1] == '#') + { + matchIndex--; + length++; + } + shortname = shortname.Remove(matchIndex - 1, length).Trim(); // Use the extracted issue number as needed info.Number = -issueNumber; @@ -349,7 +355,14 @@ public class CreateComicInfo : Node else if (matchIndex == 0 || shortname[matchIndex - 1] is '#' or ' ' or '(' or '[' or '.' or '_' or '-') { // Remove the issue number from the string - shortname = shortname.Remove(matchIndex, match.Length).Trim(); + int length = match.Length; + if (shortname[matchIndex - 1] == '#') + { + matchIndex--; + length++; + } + + shortname = shortname.Remove(matchIndex, length).Trim(); // Use the extracted issue number as needed info.Number = issueNumber; diff --git a/ComicNodes/Tests/ComicInfoTests.cs b/ComicNodes/Tests/ComicInfoTests.cs index 44cd3213..1062ee21 100644 --- a/ComicNodes/Tests/ComicInfoTests.cs +++ b/ComicNodes/Tests/ComicInfoTests.cs @@ -145,6 +145,34 @@ public class ComicInfoTests : TestBase Assert.AreEqual("Cable (1993) - #-01.cbz", name.Value); } + + [TestMethod] + public void NoTitle() + { + var result = CreateComicInfo.GetInfo(Logger, + "/home/john/Comics/Marvel/X-Men/X-Man/X-Man - #071.cbz", + "/home/john/Comics", + true); + + TestContext.WriteLine(Logger.ToString()); + + Assert.IsFalse(result.IsFailed); + var info = result.Value; + Assert.IsNotNull(info); + Assert.AreEqual("Marvel", info.Publisher); + Assert.AreEqual("X-Man", info.Series); + Assert.IsTrue(string.IsNullOrEmpty(info.Title)); + Assert.AreEqual(71, info.Number); + + var xml = CreateComicInfo.SerializeToXml(info); + Assert.IsFalse(string.IsNullOrWhiteSpace(xml)); + TestContext.WriteLine(new string('-', 70)); + TestContext.WriteLine(xml); + + var name = CreateComicInfo.GetNewName(info, "cbz", 3); + Assert.AreEqual("X-Man - #071.cbz", name.Value); + } + [TestMethod] public void Other() {