diff --git a/SabreTools.Filter/FilterObject.cs b/SabreTools.Filter/FilterObject.cs index 2c6505b0..fa57542e 100644 --- a/SabreTools.Filter/FilterObject.cs +++ b/SabreTools.Filter/FilterObject.cs @@ -61,52 +61,6 @@ namespace SabreTools.Filter this.Operation = operation; } - /// - /// Derive an operation from the input string, if possible - /// - private static Operation GetOperation(string? operation) - { - return operation?.ToLowerInvariant() switch - { - "=" => Operation.Equals, - "==" => Operation.Equals, - ":" => Operation.Equals, - "::" => Operation.Equals, - - "!" => Operation.NotEquals, - "!=" => Operation.NotEquals, - "!:" => Operation.NotEquals, - - ">" => Operation.GreaterThan, - ">=" => Operation.GreaterThanOrEqual, - - "<" => Operation.LessThan, - "<=" => Operation.LessThanOrEqual, - - _ => Operation.NONE, - }; - } - - /// - /// Derive a key, operation, and value from the input string, if possible - /// - private static (string?, Operation, string?) SplitFilterString(string? filterString) - { - if (filterString == null) - return (null, Operation.NONE, null); - - // Split the string using regex - var match = Regex.Match(filterString, @"^(?[a-zA-Z.]+)(?[=!:><]{1,2})(?.*)$"); - if (!match.Success) - return (null, Operation.NONE, null); - - string itemField = match.Groups["itemField"].Value; - Operation operation = GetOperation(match.Groups["operation"].Value); - string value = match.Groups["value"].Value; - - return (itemField, operation, value); - } - #region Matching /// @@ -270,5 +224,55 @@ namespace SabreTools.Filter } #endregion + + #region Helpers + + /// + /// Derive an operation from the input string, if possible + /// + private static Operation GetOperation(string? operation) + { + return operation?.ToLowerInvariant() switch + { + "=" => Operation.Equals, + "==" => Operation.Equals, + ":" => Operation.Equals, + "::" => Operation.Equals, + + "!" => Operation.NotEquals, + "!=" => Operation.NotEquals, + "!:" => Operation.NotEquals, + + ">" => Operation.GreaterThan, + ">=" => Operation.GreaterThanOrEqual, + + "<" => Operation.LessThan, + "<=" => Operation.LessThanOrEqual, + + _ => Operation.NONE, + }; + } + + /// + /// Derive a key, operation, and value from the input string, if possible + /// + private static (string?, Operation, string?) SplitFilterString(string? filterString) + { + if (filterString == null) + return (null, Operation.NONE, null); + + // Split the string using regex + var match = Regex.Match(filterString, @"^(?[a-zA-Z.]+)(?[=!:><]{1,2})(?.*)$"); + if (!match.Success) + return (null, Operation.NONE, null); + + string itemField = match.Groups["itemField"].Value; + Operation operation = GetOperation(match.Groups["operation"].Value); + string value = match.Groups["value"].Value; + + return (itemField, operation, value); + } + + #endregion } } \ No newline at end of file diff --git a/SabreTools.Filter/FilterParser.cs b/SabreTools.Filter/FilterParser.cs index c6a74a6f..eeaaf700 100644 --- a/SabreTools.Filter/FilterParser.cs +++ b/SabreTools.Filter/FilterParser.cs @@ -7,7 +7,7 @@ using SabreTools.Models.Internal; namespace SabreTools.Filter { - public static class FilterParser + internal static class FilterParser { /// /// Parse a filter ID string into the item name and field name, if possible