diff --git a/SabreTools.DatTools/MergeSplit.cs b/SabreTools.DatTools/MergeSplit.cs
index 01f981ec..5507ebf2 100644
--- a/SabreTools.DatTools/MergeSplit.cs
+++ b/SabreTools.DatTools/MergeSplit.cs
@@ -4,7 +4,7 @@ using System.IO;
#if NET40_OR_GREATER || NETCOREAPP
using System.Threading.Tasks;
#endif
-using SabreTools.Core.Tools;
+using SabreTools.Core.Filter;
using SabreTools.DatFiles;
using SabreTools.DatItems;
using SabreTools.IO;
@@ -39,9 +39,10 @@ namespace SabreTools.DatTools
///
/// Current DatFile object to run operations on
/// True if DatFile tags override splitting, false otherwise
+ /// Optional FilterRunner to filter items on parse
/// True if the error that is thrown should be thrown back to the caller, false otherwise
/// True if the DatFile was split, false on error
- public bool ApplySplitting(DatFile datFile, bool useTags, bool throwOnError = false)
+ public bool ApplySplitting(DatFile datFile, bool useTags, FilterRunner? filterRunner = null, bool throwOnError = false)
{
InternalStopwatch watch = new("Applying splitting to DAT");
@@ -59,17 +60,29 @@ namespace SabreTools.DatTools
// No-op
break;
case MergingFlag.Split:
+ if (filterRunner != null)
+ datFile.ExecuteFilters(filterRunner);
+
datFile.ApplySplit();
break;
case MergingFlag.Merged:
+ if (filterRunner != null)
+ datFile.ExecuteFilters(filterRunner);
+
datFile.ApplyMerged();
break;
case MergingFlag.NonMerged:
+ if (filterRunner != null)
+ datFile.ExecuteFilters(filterRunner);
+
datFile.ApplyNonMerged();
break;
// Nonstandard
case MergingFlag.FullMerged:
+ if (filterRunner != null)
+ datFile.ExecuteFilters(filterRunner);
+
datFile.ApplyFullyMerged();
break;
case MergingFlag.DeviceNonMerged:
diff --git a/SabreTools/Features/Batch.cs b/SabreTools/Features/Batch.cs
index 79f5c8af..ec07af3d 100644
--- a/SabreTools/Features/Batch.cs
+++ b/SabreTools/Features/Batch.cs
@@ -577,7 +577,7 @@ Reset the internal state: reset();";
// Apply the merging flag
MergeSplit splitter = new() { SplitType = mergingFlag };
- splitter.ApplySplitting(batchState.DatFile, false, false);
+ splitter.ApplySplitting(batchState.DatFile, useTags: false, throwOnError: false);
}
}
diff --git a/SabreTools/Features/DatFromDir.cs b/SabreTools/Features/DatFromDir.cs
index 71929d25..7a52e309 100644
--- a/SabreTools/Features/DatFromDir.cs
+++ b/SabreTools/Features/DatFromDir.cs
@@ -101,7 +101,7 @@ namespace SabreTools.Features
// Perform additional processing steps
Extras!.ApplyExtras(datdata);
Extras!.ApplyExtrasDB(datdata);
- Splitter!.ApplySplitting(datdata, useTags: false);
+ Splitter!.ApplySplitting(datdata, useTags: false, filterRunner: FilterRunner);
datdata.ExecuteFilters(FilterRunner!);
Cleaner!.ApplyCleaning(datdata);
Remover!.ApplyRemovals(datdata);
diff --git a/SabreTools/Features/Update.cs b/SabreTools/Features/Update.cs
index 6024908f..9fe8f234 100644
--- a/SabreTools/Features/Update.cs
+++ b/SabreTools/Features/Update.cs
@@ -537,7 +537,7 @@ namespace SabreTools.Features
{
Extras!.ApplyExtras(datFile);
Extras!.ApplyExtrasDB(datFile);
- Splitter!.ApplySplitting(datFile, useTags: false);
+ Splitter!.ApplySplitting(datFile, useTags: false, filterRunner: FilterRunner);
datFile.ExecuteFilters(FilterRunner!);
Cleaner!.ApplyCleaning(datFile);
Remover!.ApplyRemovals(datFile);
diff --git a/SabreTools/Features/Verify.cs b/SabreTools/Features/Verify.cs
index 7db4da1d..bc7ea20c 100644
--- a/SabreTools/Features/Verify.cs
+++ b/SabreTools/Features/Verify.cs
@@ -72,7 +72,7 @@ namespace SabreTools.Features
// Perform additional processing steps
Extras!.ApplyExtras(datdata);
Extras!.ApplyExtrasDB(datdata);
- Splitter!.ApplySplitting(datdata, useTags: true);
+ Splitter!.ApplySplitting(datdata, useTags: true, filterRunner: FilterRunner);
datdata.ExecuteFilters(FilterRunner!);
Cleaner!.ApplyCleaning(datdata);
Remover!.ApplyRemovals(datdata);
@@ -128,7 +128,7 @@ namespace SabreTools.Features
// Perform additional processing steps
Extras!.ApplyExtras(datdata);
Extras!.ApplyExtrasDB(datdata);
- Splitter!.ApplySplitting(datdata, useTags: true);
+ Splitter!.ApplySplitting(datdata, useTags: true, filterRunner: FilterRunner);
datdata.ExecuteFilters(FilterRunner!);
Cleaner!.ApplyCleaning(datdata);
Remover!.ApplyRemovals(datdata);