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 ///