From 5e3e485d140978349c89c0b781ca7e425e093aeb Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Tue, 5 Mar 2024 02:56:50 -0500 Subject: [PATCH] Implement simple filters --- SabreTools.DatFiles/DatFile.cs | 1 + SabreTools.DatItems/DatItem.cs | 14 ++++++++++++++ SabreTools.DatItems/Machine.cs | 7 +++++++ 3 files changed, 22 insertions(+) diff --git a/SabreTools.DatFiles/DatFile.cs b/SabreTools.DatFiles/DatFile.cs index 223d6070..f230b8af 100644 --- a/SabreTools.DatFiles/DatFile.cs +++ b/SabreTools.DatFiles/DatFile.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using System.Threading.Tasks; using System.Xml.Serialization; using Newtonsoft.Json; using SabreTools.Core; diff --git a/SabreTools.DatItems/DatItem.cs b/SabreTools.DatItems/DatItem.cs index f9031e2f..a4e65c74 100644 --- a/SabreTools.DatItems/DatItem.cs +++ b/SabreTools.DatItems/DatItem.cs @@ -7,6 +7,7 @@ using SabreTools.Core; using SabreTools.Core.Tools; using SabreTools.DatItems.Formats; using SabreTools.FileTypes; +using SabreTools.Filter; using SabreTools.Logging; using SabreTools.Matching; @@ -375,6 +376,19 @@ namespace SabreTools.DatItems // TODO: These should be item-specific for better filtering #region Manipulation + /// + /// Runs a filter and determines if it passes or not + /// + /// Filter runner to use for checking + /// True if the item passes the filter, false otherwise + public bool PassesFilter(FilterRunner filterRunner) + { + if (!Machine.PassesFilter(filterRunner)) + return false; + + return filterRunner.Run(_internal); + } + /// /// Remove a field from the DatItem /// diff --git a/SabreTools.DatItems/Machine.cs b/SabreTools.DatItems/Machine.cs index 72cba3bc..cab4f3ee 100644 --- a/SabreTools.DatItems/Machine.cs +++ b/SabreTools.DatItems/Machine.cs @@ -542,6 +542,13 @@ namespace SabreTools.DatItems #region Manipulation + /// + /// Runs a filter and determines if it passes or not + /// + /// Filter runner to use for checking + /// True if the Machine passes the filter, false otherwise + public bool PassesFilter(FilterRunner filterRunner) => filterRunner.Run(_machine); + /// /// Remove a field from the Machine ///