You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
25 lines
868 B
25 lines
868 B
using System;
|
|
using DiscordChatExporter.Core.Discord.Data;
|
|
|
|
namespace DiscordChatExporter.Core.Exporting.Filtering;
|
|
|
|
internal class BinaryExpressionMessageFilter : MessageFilter
|
|
{
|
|
private readonly MessageFilter _first;
|
|
private readonly MessageFilter _second;
|
|
private readonly BinaryExpressionKind _kind;
|
|
|
|
public BinaryExpressionMessageFilter(MessageFilter first, MessageFilter second, BinaryExpressionKind kind)
|
|
{
|
|
_first = first;
|
|
_second = second;
|
|
_kind = kind;
|
|
}
|
|
|
|
public override bool IsMatch(Message message) => _kind switch
|
|
{
|
|
BinaryExpressionKind.Or => _first.IsMatch(message) || _second.IsMatch(message),
|
|
BinaryExpressionKind.And => _first.IsMatch(message) && _second.IsMatch(message),
|
|
_ => throw new InvalidOperationException($"Unknown binary expression kind '{_kind}'.")
|
|
};
|
|
} |