diff --git a/DiscordChatExporter.Core/DiscordChatExporter.Core.csproj b/DiscordChatExporter.Core/DiscordChatExporter.Core.csproj index c7ff083..abb5f4b 100644 --- a/DiscordChatExporter.Core/DiscordChatExporter.Core.csproj +++ b/DiscordChatExporter.Core/DiscordChatExporter.Core.csproj @@ -8,7 +8,7 @@ - + diff --git a/DiscordChatExporter.Core/Exporting/Filtering/Parsing/FilterGrammar.cs b/DiscordChatExporter.Core/Exporting/Filtering/Parsing/FilterGrammar.cs index fa059ec..ab44296 100644 --- a/DiscordChatExporter.Core/Exporting/Filtering/Parsing/FilterGrammar.cs +++ b/DiscordChatExporter.Core/Exporting/Filtering/Parsing/FilterGrammar.cs @@ -1,5 +1,4 @@ -using System.Linq; -using DiscordChatExporter.Core.Utils.Extensions; +using DiscordChatExporter.Core.Utils.Extensions; using Superpower; using Superpower.Parsers; @@ -7,16 +6,12 @@ namespace DiscordChatExporter.Core.Exporting.Filtering.Parsing { internal static class FilterGrammar { - // Choice(a, b) looks cleaner than a.Or(b) - private static TextParser Choice(params TextParser[] parsers) => - parsers.Aggregate((current, next) => current.Or(next)); - private static readonly TextParser EscapedCharacter = Character.EqualTo('\\').IgnoreThen(Character.AnyChar); private static readonly TextParser QuotedString = from open in Character.In('"', '\'') - from value in Choice(EscapedCharacter, Character.Except(open)).Many().Text() + from value in Parse.OneOf(EscapedCharacter, Character.Except(open)).Many().Text() from close in Character.EqualTo(open) select value; @@ -29,10 +24,10 @@ namespace DiscordChatExporter.Core.Exporting.Filtering.Parsing ); private static readonly TextParser UnquotedString = - Choice(EscapedCharacter, FreeCharacter).AtLeastOnce().Text(); + Parse.OneOf(EscapedCharacter, FreeCharacter).AtLeastOnce().Text(); private static readonly TextParser String = - Choice(QuotedString, UnquotedString).Named("text string"); + Parse.OneOf(QuotedString, UnquotedString).Named("text string"); private static readonly TextParser ContainsFilter = String.Select(v => (MessageFilter) new ContainsMessageFilter(v)); @@ -51,7 +46,7 @@ namespace DiscordChatExporter.Core.Exporting.Filtering.Parsing private static readonly TextParser HasFilter = Span .EqualToIgnoreCase("has:") - .IgnoreThen(Choice( + .IgnoreThen(Parse.OneOf( Span.EqualToIgnoreCase("link").IgnoreThen(Parse.Return(MessageContentMatchKind.Link)), Span.EqualToIgnoreCase("embed").IgnoreThen(Parse.Return(MessageContentMatchKind.Embed)), Span.EqualToIgnoreCase("file").IgnoreThen(Parse.Return(MessageContentMatchKind.File)), @@ -64,16 +59,16 @@ namespace DiscordChatExporter.Core.Exporting.Filtering.Parsing private static readonly TextParser NegatedFilter = Character .EqualTo('-') - .IgnoreThen(Parse.Ref(() => StandaloneFilter)) + .IgnoreThen(Parse.Ref(() => StandaloneFilter!)) .Select(f => (MessageFilter) new NegatedMessageFilter(f)); private static readonly TextParser GroupedFilter = from open in Character.EqualTo('(') - from content in Parse.Ref(() => BinaryExpressionFilter).Token() + from content in Parse.Ref(() => BinaryExpressionFilter!).Token() from close in Character.EqualTo(')') select content; - private static readonly TextParser StandaloneFilter = Choice( + private static readonly TextParser StandaloneFilter = Parse.OneOf( GroupedFilter, FromFilter, MentionsFilter, @@ -81,13 +76,13 @@ namespace DiscordChatExporter.Core.Exporting.Filtering.Parsing ContainsFilter ); - private static readonly TextParser UnaryExpressionFilter = Choice( + private static readonly TextParser UnaryExpressionFilter = Parse.OneOf( NegatedFilter, StandaloneFilter ); private static readonly TextParser BinaryExpressionFilter = Parse.Chain( - Choice( + Parse.OneOf( // Explicit operator Character.In('|', '&').Token().Try(), // Implicit operator (resolves to 'and') diff --git a/DiscordChatExporter.Gui/DiscordChatExporter.Gui.csproj b/DiscordChatExporter.Gui/DiscordChatExporter.Gui.csproj index a0b0eed..7ba9368 100644 --- a/DiscordChatExporter.Gui/DiscordChatExporter.Gui.csproj +++ b/DiscordChatExporter.Gui/DiscordChatExporter.Gui.csproj @@ -20,7 +20,7 @@ - +