diff --git a/SabreTools.Library/DatFiles/AttractMode.cs b/SabreTools.Library/DatFiles/AttractMode.cs index e2ffaada..449f7e05 100644 --- a/SabreTools.Library/DatFiles/AttractMode.cs +++ b/SabreTools.Library/DatFiles/AttractMode.cs @@ -7,7 +7,6 @@ using SabreTools.Library.Data; using SabreTools.Library.DatItems; using SabreTools.Library.Tools; using SabreTools.Library.Writers; -using NaturalSort; namespace SabreTools.Library.DatFiles { diff --git a/SabreTools.Library/DatFiles/ClrMamePro.cs b/SabreTools.Library/DatFiles/ClrMamePro.cs index 75dca067..fe637dca 100644 --- a/SabreTools.Library/DatFiles/ClrMamePro.cs +++ b/SabreTools.Library/DatFiles/ClrMamePro.cs @@ -8,7 +8,6 @@ using SabreTools.Library.DatItems; using SabreTools.Library.Readers; using SabreTools.Library.Tools; using SabreTools.Library.Writers; -using NaturalSort; namespace SabreTools.Library.DatFiles { diff --git a/SabreTools.Library/DatFiles/DatFile.cs b/SabreTools.Library/DatFiles/DatFile.cs index 8835479f..86f59d6d 100644 --- a/SabreTools.Library/DatFiles/DatFile.cs +++ b/SabreTools.Library/DatFiles/DatFile.cs @@ -1350,8 +1350,20 @@ namespace SabreTools.Library.DatFiles /// True if CHDs should be treated like regular files, false otherwise /// Filter object to be passed to the DatItem level /// True if DatFile tags override splitting, false otherwise - public bool PopulateFromDir(string basePath, Hash omitFromScan, bool bare, bool archivesAsFiles, SkipFileType skipFileType, - bool addBlanks, bool addDate, string tempDir, bool copyFiles, string headerToCheckAgainst, bool chdsAsFiles, Filter filter, bool useTags = false) + public bool PopulateFromDir( + string basePath, + Hash omitFromScan, + bool bare, + bool archivesAsFiles, + SkipFileType skipFileType, + bool addBlanks, + bool addDate, + string tempDir, + bool copyFiles, + string headerToCheckAgainst, + bool chdsAsFiles, + Filter filter, + bool useTags = false) { // If the description is defined but not the name, set the name from the description if (string.IsNullOrWhiteSpace(Header.Name) && !string.IsNullOrWhiteSpace(Header.Description)) @@ -1457,8 +1469,18 @@ namespace SabreTools.Library.DatFiles /// True if files should be copied to the temp directory before hashing, false otherwise /// Populated string representing the name of the skipper to use, a blank string to use the first available checker, null otherwise /// True if CHDs should be treated like regular files, false otherwise - private void CheckFileForHashes(string item, string basePath, Hash omitFromScan, bool archivesAsFiles, - SkipFileType skipFileType, bool addBlanks, bool addDate, string tempDir, bool copyFiles, string headerToCheckAgainst, bool chdsAsFiles) + private void CheckFileForHashes( + string item, + string basePath, + Hash omitFromScan, + bool archivesAsFiles, + SkipFileType skipFileType, + bool addBlanks, + bool addDate, + string tempDir, + bool copyFiles, + string headerToCheckAgainst, + bool chdsAsFiles) { // Special case for if we are in Romba mode (all names are supposed to be SHA-1 hashes) if (Header.Romba) @@ -1563,8 +1585,14 @@ namespace SabreTools.Library.DatFiles /// True if dates should be archived for all files, false otherwise /// Populated string representing the name of the skipper to use, a blank string to use the first available checker, null otherwise /// True if CHDs should be treated like regular files, false otherwise - private void ProcessFile(string item, string parent, string basePath, Hash omitFromScan, - bool addDate, string headerToCheckAgainst, bool chdsAsFiles) + private void ProcessFile( + string item, + string parent, + string basePath, + Hash omitFromScan, + bool addDate, + string headerToCheckAgainst, + bool chdsAsFiles) { Globals.Logger.Verbose($"'{Path.GetFileName(item)}' treated like a file"); BaseFile baseFile = FileExtensions.GetInfo(item, omitFromScan: omitFromScan, date: addDate, header: headerToCheckAgainst, chdsAsFiles: chdsAsFiles); @@ -2509,8 +2537,16 @@ namespace SabreTools.Library.DatFiles /// True if short filenames should be used, false otherwise (Level Split only) /// True if original filenames should be used as the base for output filename, false otherwise (Level Split only) /// Long value representing the split point (Size Split only) - public void DetermineSplitType(List inputs, string outDir, bool inplace, SplittingMode splittingMode, - List exta, List extb, bool shortname, bool basedat, long radix) + public void DetermineSplitType( + List inputs, + string outDir, + bool inplace, + SplittingMode splittingMode, + List exta, + List extb, + bool shortname, + bool basedat, + long radix) { // If we somehow have the "none" split type, return if (splittingMode == SplittingMode.None) @@ -2523,6 +2559,7 @@ namespace SabreTools.Library.DatFiles foreach (ParentablePath file in files) { // Create and fill the new DAT + DatFile internalDat = Create(Header); Parse(file); // Get the output directory @@ -2530,25 +2567,19 @@ namespace SabreTools.Library.DatFiles // Split and write the DAT if (splittingMode.HasFlag(SplittingMode.Extension)) - SplitByExtension(outDir, exta, extb); + internalDat.SplitByExtension(outDir, exta, extb); if (splittingMode.HasFlag(SplittingMode.Hash)) - SplitByHash(outDir); + internalDat.SplitByHash(outDir); if (splittingMode.HasFlag(SplittingMode.Level)) - SplitByLevel(outDir, shortname, basedat); + internalDat.SplitByLevel(outDir, shortname, basedat); if (splittingMode.HasFlag(SplittingMode.Size)) - SplitBySize(outDir, radix); + internalDat.SplitBySize(outDir, radix); if (splittingMode.HasFlag(SplittingMode.Type)) - SplitByType(outDir); - - // Now re-empty the DAT to make room for the next one - DatFormat tempFormat = Header.DatFormat; - Header = new DatHeader(); - Items = new ItemDictionary(); - Header.DatFormat = tempFormat; + internalDat.SplitByType(outDir); } } @@ -2559,7 +2590,7 @@ namespace SabreTools.Library.DatFiles /// List of extensions to split on (first DAT) /// List of extensions to split on (second DAT) /// True if split succeeded, false otherwise - private bool SplitByExtension(string outDir, List extA, List extB) + public bool SplitByExtension(string outDir, List extA, List extB) { // If roms is empty, return false if (Items.TotalCount == 0) @@ -2617,7 +2648,7 @@ namespace SabreTools.Library.DatFiles /// /// Name of the directory to write the DATs out to /// True if split succeeded, false otherwise - private bool SplitByHash(string outDir) + public bool SplitByHash(string outDir) { // Create each of the respective output DATs Globals.Logger.User("Creating and populating new DATs"); @@ -2759,7 +2790,7 @@ namespace SabreTools.Library.DatFiles /// True if short names should be used, false otherwise /// True if original filenames should be used as the base for output filename, false otherwise /// True if split succeeded, false otherwise - private bool SplitByLevel(string outDir, bool shortname, bool basedat) + public bool SplitByLevel(string outDir, bool shortname, bool basedat) { // First, bucket by games so that we can do the right thing Items.BucketBy(BucketedBy.Game, DedupeType.None, lower: false, norename: true); @@ -2819,31 +2850,31 @@ namespace SabreTools.Library.DatFiles /// /// Helper function for SplitByLevel to clean and write out a DAT /// - /// DAT to clean and write out + /// DAT to clean and write out /// Directory to write out to /// True if short naming scheme should be used, false otherwise /// True if original filenames should be used as the base for output filename, false otherwise - private void SplitByLevelHelper(DatFile datFile, string outDir, bool shortname, bool restore) + private void SplitByLevelHelper(DatFile newDatFile, string outDir, bool shortname, bool restore) { // Get the name from the DAT to use separately - string name = datFile.Header.Name; + string name = newDatFile.Header.Name; string expName = name.Replace("/", " - ").Replace("\\", " - "); // Now set the new output values - datFile.Header.FileName = WebUtility.HtmlDecode(string.IsNullOrWhiteSpace(name) + newDatFile.Header.FileName = WebUtility.HtmlDecode(string.IsNullOrWhiteSpace(name) ? Header.FileName : (shortname ? Path.GetFileName(name) : expName ) ); - datFile.Header.FileName = (restore ? $"{Header.FileName} ({datFile.Header.FileName})" : datFile.Header.FileName); - datFile.Header.Name = $"{Header.Name} ({expName})"; - datFile.Header.Description = (string.IsNullOrWhiteSpace(Header.Description) ? datFile.Header.Name : $"{Header.Description} ({expName})"); - datFile.Header.Type = null; + newDatFile.Header.FileName = (restore ? $"{Header.FileName} ({newDatFile.Header.FileName})" : newDatFile.Header.FileName); + newDatFile.Header.Name = $"{Header.Name} ({expName})"; + newDatFile.Header.Description = (string.IsNullOrWhiteSpace(Header.Description) ? newDatFile.Header.Name : $"{Header.Description} ({expName})"); + newDatFile.Header.Type = null; // Write out the temporary DAT to the proper directory - datFile.Write(outDir); + newDatFile.Write(outDir); } /// @@ -2852,7 +2883,7 @@ namespace SabreTools.Library.DatFiles /// Name of the directory to write the DATs out to /// Long value representing the split point /// True if split succeeded, false otherwise - private bool SplitBySize(string outDir, long radix) + public bool SplitBySize(string outDir, long radix) { // Create each of the respective output DATs Globals.Logger.User("Creating and populating new DATs"); @@ -2901,7 +2932,7 @@ namespace SabreTools.Library.DatFiles /// /// Name of the directory to write the DATs out to /// True if split succeeded, false otherwise - private bool SplitByType(string outDir) + public bool SplitByType(string outDir) { // Create each of the respective output DATs Globals.Logger.User("Creating and populating new DATs"); diff --git a/SabreTools.Library/DatFiles/DatHeader.cs b/SabreTools.Library/DatFiles/DatHeader.cs index 82bd412b..337d6af6 100644 --- a/SabreTools.Library/DatFiles/DatHeader.cs +++ b/SabreTools.Library/DatFiles/DatHeader.cs @@ -3,8 +3,8 @@ using System.Collections.Generic; using System.IO; using SabreTools.Library.Data; -using Newtonsoft.Json; using SabreTools.Library.Tools; +using Newtonsoft.Json; namespace SabreTools.Library.DatFiles { diff --git a/SabreTools.Library/DatFiles/DosCenter.cs b/SabreTools.Library/DatFiles/DosCenter.cs index f672d11d..0bc0a20e 100644 --- a/SabreTools.Library/DatFiles/DosCenter.cs +++ b/SabreTools.Library/DatFiles/DosCenter.cs @@ -9,7 +9,6 @@ using SabreTools.Library.DatItems; using SabreTools.Library.Readers; using SabreTools.Library.Tools; using SabreTools.Library.Writers; -using NaturalSort; namespace SabreTools.Library.DatFiles { diff --git a/SabreTools.Library/DatFiles/EverdriveSmdb.cs b/SabreTools.Library/DatFiles/EverdriveSmdb.cs index 3bf5a904..af4b34c4 100644 --- a/SabreTools.Library/DatFiles/EverdriveSmdb.cs +++ b/SabreTools.Library/DatFiles/EverdriveSmdb.cs @@ -7,7 +7,6 @@ using SabreTools.Library.Data; using SabreTools.Library.DatItems; using SabreTools.Library.Tools; using SabreTools.Library.Writers; -using NaturalSort; namespace SabreTools.Library.DatFiles { diff --git a/SabreTools.Library/DatFiles/Filter.cs b/SabreTools.Library/DatFiles/Filter.cs index b53b97f5..bbd330b7 100644 --- a/SabreTools.Library/DatFiles/Filter.cs +++ b/SabreTools.Library/DatFiles/Filter.cs @@ -779,6 +779,8 @@ namespace SabreTools.Library.DatFiles #endregion + #region Filter Running + /// /// Filter a DatFile using the inputs /// @@ -1416,6 +1418,8 @@ namespace SabreTools.Library.DatFiles return true; } + #endregion + #region Internal Splitting/Merging /// diff --git a/SabreTools.Library/DatFiles/Hashfile.cs b/SabreTools.Library/DatFiles/Hashfile.cs index 978be69a..2af478f9 100644 --- a/SabreTools.Library/DatFiles/Hashfile.cs +++ b/SabreTools.Library/DatFiles/Hashfile.cs @@ -7,7 +7,6 @@ using SabreTools.Library.Data; using SabreTools.Library.DatItems; using SabreTools.Library.Tools; using SabreTools.Library.Writers; -using NaturalSort; namespace SabreTools.Library.DatFiles { diff --git a/SabreTools.Library/DatFiles/Json.cs b/SabreTools.Library/DatFiles/Json.cs index a5ff7162..b044dee6 100644 --- a/SabreTools.Library/DatFiles/Json.cs +++ b/SabreTools.Library/DatFiles/Json.cs @@ -6,7 +6,6 @@ using System.Text; using SabreTools.Library.Data; using SabreTools.Library.DatItems; using SabreTools.Library.Tools; -using NaturalSort; using Newtonsoft.Json; namespace SabreTools.Library.DatFiles diff --git a/SabreTools.Library/DatFiles/Listrom.cs b/SabreTools.Library/DatFiles/Listrom.cs index 661cbda2..4295a6a4 100644 --- a/SabreTools.Library/DatFiles/Listrom.cs +++ b/SabreTools.Library/DatFiles/Listrom.cs @@ -7,7 +7,6 @@ using System.Text.RegularExpressions; using SabreTools.Library.Data; using SabreTools.Library.DatItems; using SabreTools.Library.Tools; -using NaturalSort; namespace SabreTools.Library.DatFiles { diff --git a/SabreTools.Library/DatFiles/Listxml.cs b/SabreTools.Library/DatFiles/Listxml.cs index 9adc0b43..c6e96d4e 100644 --- a/SabreTools.Library/DatFiles/Listxml.cs +++ b/SabreTools.Library/DatFiles/Listxml.cs @@ -7,7 +7,6 @@ using System.Xml; using SabreTools.Library.Data; using SabreTools.Library.DatItems; using SabreTools.Library.Tools; -using NaturalSort; namespace SabreTools.Library.DatFiles { diff --git a/SabreTools.Library/DatFiles/Logiqx.cs b/SabreTools.Library/DatFiles/Logiqx.cs index f1c26d5b..10db741e 100644 --- a/SabreTools.Library/DatFiles/Logiqx.cs +++ b/SabreTools.Library/DatFiles/Logiqx.cs @@ -9,7 +9,6 @@ using System.Xml; using SabreTools.Library.Data; using SabreTools.Library.DatItems; using SabreTools.Library.Tools; -using NaturalSort; namespace SabreTools.Library.DatFiles { diff --git a/SabreTools.Library/DatFiles/Missfile.cs b/SabreTools.Library/DatFiles/Missfile.cs index 84af2fad..d42d7b75 100644 --- a/SabreTools.Library/DatFiles/Missfile.cs +++ b/SabreTools.Library/DatFiles/Missfile.cs @@ -6,7 +6,6 @@ using System.Text; using SabreTools.Library.Data; using SabreTools.Library.DatItems; using SabreTools.Library.Tools; -using NaturalSort; namespace SabreTools.Library.DatFiles { diff --git a/SabreTools.Library/DatFiles/OfflineList.cs b/SabreTools.Library/DatFiles/OfflineList.cs index 65317819..e71c7f37 100644 --- a/SabreTools.Library/DatFiles/OfflineList.cs +++ b/SabreTools.Library/DatFiles/OfflineList.cs @@ -7,7 +7,6 @@ using System.Xml; using SabreTools.Library.Data; using SabreTools.Library.DatItems; using SabreTools.Library.Tools; -using NaturalSort; namespace SabreTools.Library.DatFiles { diff --git a/SabreTools.Library/DatFiles/OpenMSX.cs b/SabreTools.Library/DatFiles/OpenMSX.cs index 90115956..cb4d4fe7 100644 --- a/SabreTools.Library/DatFiles/OpenMSX.cs +++ b/SabreTools.Library/DatFiles/OpenMSX.cs @@ -7,7 +7,6 @@ using System.Xml; using SabreTools.Library.Data; using SabreTools.Library.DatItems; using SabreTools.Library.Tools; -using NaturalSort; namespace SabreTools.Library.DatFiles { diff --git a/SabreTools.Library/DatFiles/RomCenter.cs b/SabreTools.Library/DatFiles/RomCenter.cs index bcb99a5b..5da30cf6 100644 --- a/SabreTools.Library/DatFiles/RomCenter.cs +++ b/SabreTools.Library/DatFiles/RomCenter.cs @@ -8,7 +8,6 @@ using SabreTools.Library.DatItems; using SabreTools.Library.Readers; using SabreTools.Library.Tools; using SabreTools.Library.Writers; -using NaturalSort; namespace SabreTools.Library.DatFiles { diff --git a/SabreTools.Library/DatFiles/SabreDat.cs b/SabreTools.Library/DatFiles/SabreDat.cs index c79cd780..dd08a6c1 100644 --- a/SabreTools.Library/DatFiles/SabreDat.cs +++ b/SabreTools.Library/DatFiles/SabreDat.cs @@ -8,7 +8,6 @@ using System.Xml; using SabreTools.Library.Data; using SabreTools.Library.DatItems; using SabreTools.Library.Tools; -using NaturalSort; namespace SabreTools.Library.DatFiles { diff --git a/SabreTools.Library/DatFiles/SeparatedValue.cs b/SabreTools.Library/DatFiles/SeparatedValue.cs index cbb1f50c..21f2b2f5 100644 --- a/SabreTools.Library/DatFiles/SeparatedValue.cs +++ b/SabreTools.Library/DatFiles/SeparatedValue.cs @@ -8,7 +8,6 @@ using SabreTools.Library.DatItems; using SabreTools.Library.Readers; using SabreTools.Library.Tools; using SabreTools.Library.Writers; -using NaturalSort; namespace SabreTools.Library.DatFiles { diff --git a/SabreTools.Library/DatFiles/SoftwareList.cs b/SabreTools.Library/DatFiles/SoftwareList.cs index bbefeb2c..7939399c 100644 --- a/SabreTools.Library/DatFiles/SoftwareList.cs +++ b/SabreTools.Library/DatFiles/SoftwareList.cs @@ -7,7 +7,6 @@ using System.Xml; using SabreTools.Library.Data; using SabreTools.Library.DatItems; using SabreTools.Library.Tools; -using NaturalSort; namespace SabreTools.Library.DatFiles {