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
{