diff --git a/SabreTools.Metadata.Filter/FilterKey.cs b/SabreTools.Metadata.Filter/FilterKey.cs
index 012a745c..f74a1481 100644
--- a/SabreTools.Metadata.Filter/FilterKey.cs
+++ b/SabreTools.Metadata.Filter/FilterKey.cs
@@ -33,6 +33,8 @@ namespace SabreTools.Metadata.Filter
private static readonly string[] _datItemTypeNames = Enum.GetNames(typeof(ItemType));
#endif
+ #region Per-Type Accepted Keys
+
///
/// Known keys for Adjuster
///
@@ -831,6 +833,8 @@ namespace SabreTools.Metadata.Filter
#endregion
+ #endregion
+
///
/// Validating combined key constructor
///
diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs
index 4e95bc33..baeb6bb8 100644
--- a/SabreTools.Metadata.Filter/FilterObject.cs
+++ b/SabreTools.Metadata.Filter/FilterObject.cs
@@ -430,6 +430,77 @@ namespace SabreTools.Metadata.Filter
}
}
+ ///
+ /// 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.Equals,
+ ":=" => Operation.Equals,
+
+ "!" => Operation.NotEquals,
+ "!=" => Operation.NotEquals,
+ "!:" => Operation.NotEquals,
+
+ ">" => Operation.GreaterThan,
+ ">:" => Operation.GreaterThanOrEqual,
+ ">=" => Operation.GreaterThanOrEqual,
+ "!<" => Operation.GreaterThanOrEqual,
+
+ "<" => Operation.LessThan,
+ "<:" => Operation.LessThanOrEqual,
+ "<=" => Operation.LessThanOrEqual,
+ "!>" => Operation.LessThanOrEqual,
+
+ _ => Operation.NONE,
+ };
+ }
+
+ ///
+ /// Derive a key, operation, and value from the input string, if possible
+ ///
+ private static bool SplitFilterString(string? filterString, out string? key, out Operation operation, out string? value)
+ {
+ // Set default values
+ key = null; operation = Operation.NONE; value = null;
+
+ if (string.IsNullOrEmpty(filterString))
+ return false;
+
+ // Trim quotations, if necessary
+#if NETCOREAPP || NETSTANDARD2_1_OR_GREATER
+ if (filterString!.StartsWith('\"'))
+ filterString = filterString[1..^1];
+#else
+ if (filterString!.StartsWith("\""))
+ filterString = filterString.Substring(1, filterString.Length - 2);
+#endif
+
+ // Split the string using regex
+ var match = Regex.Match(filterString, @"^(?[a-zA-Z._]+)(?[=!:><]{1,2})(?.*)$", RegexOptions.Compiled);
+ if (!match.Success)
+ return false;
+
+ key = match.Groups["itemField"].Value;
+ operation = GetOperation(match.Groups["operation"].Value);
+
+ // Only non-zero length values are counted as non-null
+ if (match.Groups["value"]?.Value?.Length > 0)
+ value = match.Groups["value"].Value;
+
+ return true;
+ }
+
+ #endregion
+
+ #region Per-Type Check Value Retrieval
+
///
/// Get the check value for a field
///
@@ -2448,73 +2519,6 @@ namespace SabreTools.Metadata.Filter
}
}
- ///
- /// 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.Equals,
- ":=" => Operation.Equals,
-
- "!" => Operation.NotEquals,
- "!=" => Operation.NotEquals,
- "!:" => Operation.NotEquals,
-
- ">" => Operation.GreaterThan,
- ">:" => Operation.GreaterThanOrEqual,
- ">=" => Operation.GreaterThanOrEqual,
- "!<" => Operation.GreaterThanOrEqual,
-
- "<" => Operation.LessThan,
- "<:" => Operation.LessThanOrEqual,
- "<=" => Operation.LessThanOrEqual,
- "!>" => Operation.LessThanOrEqual,
-
- _ => Operation.NONE,
- };
- }
-
- ///
- /// Derive a key, operation, and value from the input string, if possible
- ///
- private static bool SplitFilterString(string? filterString, out string? key, out Operation operation, out string? value)
- {
- // Set default values
- key = null; operation = Operation.NONE; value = null;
-
- if (string.IsNullOrEmpty(filterString))
- return false;
-
- // Trim quotations, if necessary
-#if NETCOREAPP || NETSTANDARD2_1_OR_GREATER
- if (filterString!.StartsWith('\"'))
- filterString = filterString[1..^1];
-#else
- if (filterString!.StartsWith("\""))
- filterString = filterString.Substring(1, filterString.Length - 2);
-#endif
-
- // Split the string using regex
- var match = Regex.Match(filterString, @"^(?[a-zA-Z._]+)(?[=!:><]{1,2})(?.*)$", RegexOptions.Compiled);
- if (!match.Success)
- return false;
-
- key = match.Groups["itemField"].Value;
- operation = GetOperation(match.Groups["operation"].Value);
-
- // Only non-zero length values are counted as non-null
- if (match.Groups["value"]?.Value?.Length > 0)
- value = match.Groups["value"].Value;
-
- return true;
- }
-
#endregion
}
}