using System.Collections.Generic;
using SabreTools.Core;
using SabreTools.Core.Tools;
using SabreTools.Logging;
namespace SabreTools.Filtering
{
///
/// Represents the filtering operations that need to be performed on a DatHeader
///
public class DatHeaderFilter : Filter
{
#region Constructors
///
/// Constructor
///
public DatHeaderFilter()
{
logger = new Logger(this);
}
#endregion
#region Filter Population
///
/// Populate the filters object using a set of key:value filters
///
/// List of key:value where ~key/!key is negated
public override void PopulateFromList(List 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 (field == null && value == null)
continue;
DatHeaderField filterField = field.AsDatHeaderField();
SetFilter(filterField, value, negate);
}
}
///
/// Set multiple filters from key
///
/// Key for the filter to be set
/// List of values for the filter
/// True if negative filter, false otherwise
public void SetFilter(DatHeaderField key, List values, bool negate)
{
foreach (string value in values)
{
SetFilter(key, value, negate);
}
}
///
/// Set a single filter from key
///
/// Key for the filter to be set
/// Value of the filter
/// True if negative filter, false otherwise
public void SetFilter(DatHeaderField key, string value, bool negate)
{
switch (key)
{
// TODO: Add DatHeader filters
}
}
#endregion
}
}