mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
Make Filter abstract (nw)
This commit is contained in:
@@ -11,17 +11,8 @@ namespace SabreTools.Filtering
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// TODO: Investigate how to reduce the amount of hardcoded filter statements
|
/// TODO: Investigate how to reduce the amount of hardcoded filter statements
|
||||||
/// TODO: Add DatHeader filters
|
/// TODO: Add DatHeader filters
|
||||||
public class DatHeaderFilter
|
public class DatHeaderFilter : Filter
|
||||||
{
|
{
|
||||||
#region Logging
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Logging object
|
|
||||||
/// </summary>
|
|
||||||
private readonly Logger logger;
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Constructors
|
#region Constructors
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -40,29 +31,18 @@ namespace SabreTools.Filtering
|
|||||||
/// Populate the filters object using a set of key:value filters
|
/// Populate the filters object using a set of key:value filters
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="filters">List of key:value where ~key/!key is negated</param>
|
/// <param name="filters">List of key:value where ~key/!key is negated</param>
|
||||||
public void PopulateFromList(List<string> filters)
|
public override void PopulateFromList(List<string> filters)
|
||||||
{
|
{
|
||||||
foreach (string filterPair in filters)
|
foreach (string filterPair in filters)
|
||||||
{
|
{
|
||||||
|
(string field, string value, bool negate) = ProcessFilterPair(filterPair);
|
||||||
|
|
||||||
// If we don't even have a possible filter pair
|
// If we don't even have a possible filter pair
|
||||||
if (!filterPair.Contains(":"))
|
if (field == null && value == null)
|
||||||
{
|
|
||||||
logger.Warning($"'{filterPair}` is not a valid filter string. Valid filter strings are of the form 'key:value'. Please refer to README.1ST or the help feature for more details.");
|
|
||||||
continue;
|
continue;
|
||||||
}
|
|
||||||
|
|
||||||
string filterPairTrimmed = filterPair.Trim('"', ' ', '\t');
|
DatHeaderField filterField = field.AsDatHeaderField();
|
||||||
bool negate = filterPairTrimmed.StartsWith("!")
|
SetFilter(filterField, value, negate);
|
||||||
|| filterPairTrimmed.StartsWith("~")
|
|
||||||
|| filterPairTrimmed.StartsWith("not-");
|
|
||||||
filterPairTrimmed = filterPairTrimmed.TrimStart('!', '~');
|
|
||||||
filterPairTrimmed = filterPairTrimmed.StartsWith("not-") ? filterPairTrimmed.Substring(4) : filterPairTrimmed;
|
|
||||||
|
|
||||||
string filterFieldString = filterPairTrimmed.Split(':')[0].ToLowerInvariant().Trim('"', ' ', '\t');
|
|
||||||
string filterValue = filterPairTrimmed.Substring(filterFieldString.Length + 1).Trim('"', ' ', '\t');
|
|
||||||
|
|
||||||
DatHeaderField filterField = filterFieldString.AsDatHeaderField();
|
|
||||||
SetFilter(filterField, filterValue, negate);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
using System;
|
using System.Collections.Generic;
|
||||||
using System.Collections.Generic;
|
|
||||||
|
|
||||||
using SabreTools.Core;
|
using SabreTools.Core;
|
||||||
using SabreTools.Core.Tools;
|
using SabreTools.Core.Tools;
|
||||||
@@ -12,7 +11,7 @@ namespace SabreTools.Filtering
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// TODO: Can clever use of Filtering allow for easier external splitting methods?
|
/// TODO: Can clever use of Filtering allow for easier external splitting methods?
|
||||||
/// TODO: Investigate how to reduce the amount of hardcoded filter statements
|
/// TODO: Investigate how to reduce the amount of hardcoded filter statements
|
||||||
public class DatItemFilter
|
public class DatItemFilter : Filter
|
||||||
{
|
{
|
||||||
#region Fields
|
#region Fields
|
||||||
|
|
||||||
@@ -200,15 +199,6 @@ namespace SabreTools.Filtering
|
|||||||
|
|
||||||
#endregion // Fields
|
#endregion // Fields
|
||||||
|
|
||||||
#region Logging
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Logging object
|
|
||||||
/// </summary>
|
|
||||||
private readonly Logger logger;
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Constructors
|
#region Constructors
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -227,29 +217,18 @@ namespace SabreTools.Filtering
|
|||||||
/// Populate the filters object using a set of key:value filters
|
/// Populate the filters object using a set of key:value filters
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="filters">List of key:value where ~key/!key is negated</param>
|
/// <param name="filters">List of key:value where ~key/!key is negated</param>
|
||||||
public void PopulateFromList(List<string> filters)
|
public override void PopulateFromList(List<string> filters)
|
||||||
{
|
{
|
||||||
foreach (string filterPair in filters)
|
foreach (string filterPair in filters)
|
||||||
{
|
{
|
||||||
|
(string field, string value, bool negate) = ProcessFilterPair(filterPair);
|
||||||
|
|
||||||
// If we don't even have a possible filter pair
|
// If we don't even have a possible filter pair
|
||||||
if (!filterPair.Contains(":"))
|
if (field == null && value == null)
|
||||||
{
|
|
||||||
logger.Warning($"'{filterPair}` is not a valid filter string. Valid filter strings are of the form 'key:value'. Please refer to README.1ST or the help feature for more details.");
|
|
||||||
continue;
|
continue;
|
||||||
}
|
|
||||||
|
|
||||||
string filterPairTrimmed = filterPair.Trim('"', ' ', '\t');
|
DatItemField filterField = field.AsDatItemField();
|
||||||
bool negate = filterPairTrimmed.StartsWith("!")
|
SetFilter(filterField, value, negate);
|
||||||
|| filterPairTrimmed.StartsWith("~")
|
|
||||||
|| filterPairTrimmed.StartsWith("not-");
|
|
||||||
filterPairTrimmed = filterPairTrimmed.TrimStart('!', '~');
|
|
||||||
filterPairTrimmed = filterPairTrimmed.StartsWith("not-") ? filterPairTrimmed.Substring(4) : filterPairTrimmed;
|
|
||||||
|
|
||||||
string filterFieldString = filterPairTrimmed.Split(':')[0].ToLowerInvariant().Trim('"', ' ', '\t');
|
|
||||||
string filterValue = filterPairTrimmed.Substring(filterFieldString.Length + 1).Trim('"', ' ', '\t');
|
|
||||||
|
|
||||||
DatItemField filterField = filterFieldString.AsDatItemField();
|
|
||||||
SetFilter(filterField, filterValue, negate);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -810,5 +789,7 @@ namespace SabreTools.Filtering
|
|||||||
#endregion // Item-Specific
|
#endregion // Item-Specific
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -11,7 +11,7 @@ namespace SabreTools.Filtering
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// TODO: Can clever use of Filtering allow for easier external splitting methods?
|
/// TODO: Can clever use of Filtering allow for easier external splitting methods?
|
||||||
/// TODO: Investigate how to reduce the amount of hardcoded filter statements
|
/// TODO: Investigate how to reduce the amount of hardcoded filter statements
|
||||||
public class MachineFilter
|
public class MachineFilter : Filter
|
||||||
{
|
{
|
||||||
#region Fields
|
#region Fields
|
||||||
|
|
||||||
@@ -100,15 +100,6 @@ namespace SabreTools.Filtering
|
|||||||
|
|
||||||
#endregion // Fields
|
#endregion // Fields
|
||||||
|
|
||||||
#region Logging
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Logging object
|
|
||||||
/// </summary>
|
|
||||||
private readonly Logger logger;
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Constructors
|
#region Constructors
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -127,29 +118,18 @@ namespace SabreTools.Filtering
|
|||||||
/// Populate the filters object using a set of key:value filters
|
/// Populate the filters object using a set of key:value filters
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="filters">List of key:value where ~key/!key is negated</param>
|
/// <param name="filters">List of key:value where ~key/!key is negated</param>
|
||||||
public void PopulateFromList(List<string> filters)
|
public override void PopulateFromList(List<string> filters)
|
||||||
{
|
{
|
||||||
foreach (string filterPair in filters)
|
foreach (string filterPair in filters)
|
||||||
{
|
{
|
||||||
|
(string field, string value, bool negate) = ProcessFilterPair(filterPair);
|
||||||
|
|
||||||
// If we don't even have a possible filter pair
|
// If we don't even have a possible filter pair
|
||||||
if (!filterPair.Contains(":"))
|
if (field == null && value == null)
|
||||||
{
|
|
||||||
logger.Warning($"'{filterPair}` is not a valid filter string. Valid filter strings are of the form 'key:value'. Please refer to README.1ST or the help feature for more details.");
|
|
||||||
continue;
|
continue;
|
||||||
}
|
|
||||||
|
|
||||||
string filterPairTrimmed = filterPair.Trim('"', ' ', '\t');
|
MachineField filterField = field.AsMachineField();
|
||||||
bool negate = filterPairTrimmed.StartsWith("!")
|
SetFilter(filterField, value, negate);
|
||||||
|| filterPairTrimmed.StartsWith("~")
|
|
||||||
|| filterPairTrimmed.StartsWith("not-");
|
|
||||||
filterPairTrimmed = filterPairTrimmed.TrimStart('!', '~');
|
|
||||||
filterPairTrimmed = filterPairTrimmed.StartsWith("not-") ? filterPairTrimmed.Substring(4) : filterPairTrimmed;
|
|
||||||
|
|
||||||
string filterFieldString = filterPairTrimmed.Split(':')[0].ToLowerInvariant().Trim('"', ' ', '\t');
|
|
||||||
string filterValue = filterPairTrimmed.Substring(filterFieldString.Length + 1).Trim('"', ' ', '\t');
|
|
||||||
|
|
||||||
MachineField filterField = filterFieldString.AsMachineField();
|
|
||||||
SetFilter(filterField, filterValue, negate);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user