From 291f2954bf7421040b131d2188174dc8ae5fac20 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Fri, 26 Jan 2024 09:32:29 +0000
Subject: [PATCH 01/10] chore(deps): update dotnet monorepo to v8
---
global.json | 2 +-
src/DataFilters/DataFilters.csproj | 6 +++---
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/global.json b/global.json
index 8a59db38..b83a83ee 100644
--- a/global.json
+++ b/global.json
@@ -1,6 +1,6 @@
{
"sdk": {
- "version": "7.0.405",
+ "version": "8.0.101",
"rollForward": "major"
}
}
\ No newline at end of file
diff --git a/src/DataFilters/DataFilters.csproj b/src/DataFilters/DataFilters.csproj
index 960a3012..7588081b 100644
--- a/src/DataFilters/DataFilters.csproj
+++ b/src/DataFilters/DataFilters.csproj
@@ -20,18 +20,18 @@
-
+
-
+
-
+
From 4637c9d9561d63090be069ae71bfa17327309113 Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Fri, 26 Jan 2024 09:32:29 +0000
Subject: [PATCH 02/10] chore(deps): update dotnet monorepo to v8
---
global.json | 2 +-
src/DataFilters/DataFilters.csproj | 6 +++---
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/global.json b/global.json
index 8a59db38..b83a83ee 100644
--- a/global.json
+++ b/global.json
@@ -1,6 +1,6 @@
{
"sdk": {
- "version": "7.0.405",
+ "version": "8.0.101",
"rollForward": "major"
}
}
\ No newline at end of file
diff --git a/src/DataFilters/DataFilters.csproj b/src/DataFilters/DataFilters.csproj
index 960a3012..7588081b 100644
--- a/src/DataFilters/DataFilters.csproj
+++ b/src/DataFilters/DataFilters.csproj
@@ -20,18 +20,18 @@
-
+
-
+
-
+
From f45ab09ee94f2bbbdf8cfdbb6d83e7c1cf024cfa Mon Sep 17 00:00:00 2001
From: Cyrille-Alexandre NDOUMBE
Date: Fri, 26 Jan 2024 10:59:37 +0100
Subject: [PATCH 03/10] feat: add `net8.0` target
add net8.0 target
add code styles checks on CI pipeline
---
.nuke/build.schema.json | 14 ++++++++++++++
.nuke/parameters.json | 4 +++-
build/Build.cs | 15 +++++++--------
build/_build.csproj | 1 +
.../DataFilters.Queries.csproj | 2 +-
src/DataFilters/DataFilters.csproj | 14 ++++++++++----
.../DataFilters.Expressions.csproj | 2 +-
.../DataFilters.Expressions.UnitTests.csproj | 12 ++++++------
.../DataFilters.PerformanceTests.csproj | 2 +-
.../DataFilters.Queries.UnitTests.csproj | 2 +-
.../DataFilters.TestObjects.csproj | 2 +-
.../DataFilters.UnitTests.csproj | 2 +-
12 files changed, 47 insertions(+), 25 deletions(-)
diff --git a/.nuke/build.schema.json b/.nuke/build.schema.json
index a8a54ae2..0b5d4b70 100644
--- a/.nuke/build.schema.json
+++ b/.nuke/build.schema.json
@@ -43,6 +43,18 @@
"type": "boolean",
"description": "Indicates to open the pull request as 'draft'"
},
+ "Formatters": {
+ "type": "array",
+ "description": "Sets of formatters that the tool must apply",
+ "items": {
+ "type": "string",
+ "enum": [
+ "Analyzers",
+ "Style",
+ "Whitespace"
+ ]
+ }
+ },
"GitHubToken": {
"type": "string",
"description": "Token used to create a new release in GitHub",
@@ -133,6 +145,7 @@
"Coldfix",
"Compile",
"Feature",
+ "Format",
"Hotfix",
"MutationTests",
"Pack",
@@ -166,6 +179,7 @@
"Coldfix",
"Compile",
"Feature",
+ "Format",
"Hotfix",
"MutationTests",
"Pack",
diff --git a/.nuke/parameters.json b/.nuke/parameters.json
index 3c9e37ef..df1d35da 100644
--- a/.nuke/parameters.json
+++ b/.nuke/parameters.json
@@ -1,4 +1,6 @@
{
"$schema": "./build.schema.json",
- "Solution": "DataFilters.sln"
+ "Solution": "DataFilters.sln",
+ "NoLogo": true,
+ "Formatters": ["analyzers", "style"]
}
\ No newline at end of file
diff --git a/build/Build.cs b/build/Build.cs
index 95302909..e5a44d0a 100644
--- a/build/Build.cs
+++ b/build/Build.cs
@@ -1,20 +1,18 @@
namespace DataFilters.ContinuousIntegration
{
+ using System;
+ using System.Collections.Generic;
+ using System.Linq;
using Candoumbe.Pipelines.Components;
+ using Candoumbe.Pipelines.Components.Formatting;
using Candoumbe.Pipelines.Components.GitHub;
using Candoumbe.Pipelines.Components.NuGet;
using Candoumbe.Pipelines.Components.Workflows;
-
using Nuke.Common;
using Nuke.Common.CI.GitHubActions;
using Nuke.Common.IO;
using Nuke.Common.ProjectModel;
- using System;
- using System.Collections.Generic;
- using System.Configuration;
- using System.Linq;
-
[GitHubActions(
"integration",
GitHubActionsImage.UbuntuLatest,
@@ -107,14 +105,13 @@ namespace DataFilters.ContinuousIntegration
)]
public class Build : NukeBuild,
- IHaveArtifacts,
- IHaveChangeLog,
IHaveSolution,
IHaveSourceDirectory,
IHaveTestDirectory,
IGitFlowWithPullRequest,
IClean,
IRestore,
+ IDotnetFormat,
ICompile,
IUnitTest,
IMutationTest,
@@ -179,6 +176,8 @@ IEnumerable IMutationTest.MutationTestsProjects
() => this is ICreateGithubRelease && this.Get()?.GitHubToken is not null)
};
+ bool IDotnetFormat.VerifyNoChanges => IsServerBuild;
+
protected override void OnBuildCreated()
{
if (IsServerBuild)
diff --git a/build/_build.csproj b/build/_build.csproj
index 2429c1f0..51dc6ed1 100644
--- a/build/_build.csproj
+++ b/build/_build.csproj
@@ -12,6 +12,7 @@
+
diff --git a/src/DataFilters.Queries/DataFilters.Queries.csproj b/src/DataFilters.Queries/DataFilters.Queries.csproj
index 760e712c..258bebbc 100644
--- a/src/DataFilters.Queries/DataFilters.Queries.csproj
+++ b/src/DataFilters.Queries/DataFilters.Queries.csproj
@@ -1,7 +1,7 @@
- netstandard1.3;netstandard2.0;netstandard2.1;net6.0;net7.0
+ netstandard1.3;netstandard2.0;netstandard2.1;net6.0;net7.0;net8.0
Provides extension methods to convert IFilter to IWhereClause and IOrder to ISort.
bin\$(Configuration)\$(TargetFramework)\DataFilters.Queries.xml
diff --git a/src/DataFilters/DataFilters.csproj b/src/DataFilters/DataFilters.csproj
index 7588081b..b7268407 100644
--- a/src/DataFilters/DataFilters.csproj
+++ b/src/DataFilters/DataFilters.csproj
@@ -2,14 +2,14 @@
- netstandard1.3;netstandard2.0;netstandard2.1;net6.0;net7.0
+ netstandard1.3;netstandard2.0;netstandard2.1;net6.0;net7.0;net8.0
Sets of classes to convert querystrings to strongly typed expressions.
expressions, querystring
bin\$(Configuration)\$(TargetFramework)\DataFilters.xml
README.md
-
+
STRING_SEGMENT
@@ -20,12 +20,18 @@
-
+
-
+
+
+
+
+
+
+
diff --git a/src/Datafilters.Expressions/DataFilters.Expressions.csproj b/src/Datafilters.Expressions/DataFilters.Expressions.csproj
index fc4c6514..692a9e5e 100644
--- a/src/Datafilters.Expressions/DataFilters.Expressions.csproj
+++ b/src/Datafilters.Expressions/DataFilters.Expressions.csproj
@@ -2,7 +2,7 @@
- netstandard1.3;netstandard2.0;netstandard2.1;net6.0;net7.0
+ netstandard1.3;netstandard2.0;netstandard2.1;net6.0;net7.0;net8.0
Converts IFilter instance to strongly typed expressions.
bin\$(Configuration)\$(TargetFramework)\DataFilters.Expressions.xml
diff --git a/test/DataFilters.Expressions.UnitTests/DataFilters.Expressions.UnitTests.csproj b/test/DataFilters.Expressions.UnitTests/DataFilters.Expressions.UnitTests.csproj
index 35fba93d..d667c2f6 100644
--- a/test/DataFilters.Expressions.UnitTests/DataFilters.Expressions.UnitTests.csproj
+++ b/test/DataFilters.Expressions.UnitTests/DataFilters.Expressions.UnitTests.csproj
@@ -2,7 +2,7 @@
- net6.0;net7.0
+ net6.0;net7.0;net8.0
@@ -20,19 +20,19 @@
-
+
-
+
-
+
-
+
-
+
diff --git a/test/DataFilters.PerformanceTests/DataFilters.PerformanceTests.csproj b/test/DataFilters.PerformanceTests/DataFilters.PerformanceTests.csproj
index a042d774..0a06a8cd 100644
--- a/test/DataFilters.PerformanceTests/DataFilters.PerformanceTests.csproj
+++ b/test/DataFilters.PerformanceTests/DataFilters.PerformanceTests.csproj
@@ -3,7 +3,7 @@
Exe
latest
- net6.0;net7.0;
+ net6.0;net7.0;net8.0
diff --git a/test/DataFilters.Queries.UnitTests/DataFilters.Queries.UnitTests.csproj b/test/DataFilters.Queries.UnitTests/DataFilters.Queries.UnitTests.csproj
index 93390478..68bb508d 100644
--- a/test/DataFilters.Queries.UnitTests/DataFilters.Queries.UnitTests.csproj
+++ b/test/DataFilters.Queries.UnitTests/DataFilters.Queries.UnitTests.csproj
@@ -3,7 +3,7 @@
- net6.0;net7.0
+ net6.0;net7.0;net8.0
diff --git a/test/DataFilters.TestObjects/DataFilters.TestObjects.csproj b/test/DataFilters.TestObjects/DataFilters.TestObjects.csproj
index 5e7f0dca..3592cd93 100644
--- a/test/DataFilters.TestObjects/DataFilters.TestObjects.csproj
+++ b/test/DataFilters.TestObjects/DataFilters.TestObjects.csproj
@@ -1,7 +1,7 @@
- netstandard2.0;net6.0;net7.0
+ netstandard2.0;net6.0;net7.0;net8.0
false
diff --git a/test/DataFilters.UnitTests/DataFilters.UnitTests.csproj b/test/DataFilters.UnitTests/DataFilters.UnitTests.csproj
index 81835384..b24a057e 100644
--- a/test/DataFilters.UnitTests/DataFilters.UnitTests.csproj
+++ b/test/DataFilters.UnitTests/DataFilters.UnitTests.csproj
@@ -2,7 +2,7 @@
- net6.0;net7.0
+ net6.0;net7.0;net8.0
From 03dc42df09f019d13dbe12345cc405e09d5cb745 Mon Sep 17 00:00:00 2001
From: Cyrille-Alexandre NDOUMBE
Date: Fri, 26 Jan 2024 11:10:36 +0100
Subject: [PATCH 04/10] chore(ci): add default value for `Formatters` settings
Add a default value for `Formatters` settings when running target locally
---
.nuke/parameters.local.json | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/.nuke/parameters.local.json b/.nuke/parameters.local.json
index a864825c..37c2ce36 100644
--- a/.nuke/parameters.local.json
+++ b/.nuke/parameters.local.json
@@ -1,5 +1,6 @@
{
"GitHubToken": "v1:OhvldXY34GSHTumJiuoWhHPHKwSoVb7B/X19pufOj7+Q2O5n0YnxMIowWmry2b4SbtIW2Ah4uwPP1HpOLvvfB9LO4QIggTf/dAVK00aG+Cp2ZeG/kqhbEsc9c6tV8lZn",
"NugetApiKey": "v1:pqiQ7rGFSYoCihCFSrdaCRFpf0BoThUJFRbvzCqVjnWssX61zbm6Z7aZH9x1/fOg",
- "CodecovToken": "v1:fD+Tl5VfvzhiKcjphPlwB+e7w7Dj7N645OTAjSoEtozxIae0KhwkqvHBi7RChHK3"
+ "CodecovToken": "v1:fD+Tl5VfvzhiKcjphPlwB+e7w7Dj7N645OTAjSoEtozxIae0KhwkqvHBi7RChHK3",
+ "Formatters": []
}
From 77dbfe4eb36b762df30288c009f18771a786e25b Mon Sep 17 00:00:00 2001
From: Cyrille-Alexandre NDOUMBE
Date: Fri, 26 Jan 2024 15:53:44 +0100
Subject: [PATCH 05/10] chore: apply coding style
---
.github/workflows/delivery.yml | 12 ++---
.github/workflows/integration.yml | 12 ++---
.github/workflows/nightly-manual.yml | 14 ++---
src/DataFilters.Queries/FilterToQueries.cs | 3 +-
src/DataFilters.Queries/OrderExtensions.cs | 3 +-
src/DataFilters/Filter.cs | 5 +-
src/DataFilters/FilterOptions.cs | 2 +-
.../Grammar/Parsing/FilterToken.cs | 4 +-
.../Grammar/Parsing/FilterTokenizer.cs | 8 ++-
.../Grammar/Syntax/AsteriskExpression.cs | 2 +-
.../Grammar/Syntax/BinaryFilterExpression.cs | 10 ++--
.../Grammar/Syntax/ConstantValueExpression.cs | 2 +-
.../Grammar/Syntax/DateExpression.cs | 4 +-
.../Grammar/Syntax/FilterExpression.cs | 2 +-
.../Grammar/Syntax/IntervalExpression.cs | 3 +-
.../Grammar/Syntax/NumericValueExpression.cs | 4 ++
.../Grammar/Syntax/OffsetExpression.cs | 2 +-
.../Grammar/Syntax/OneOfExpression.cs | 6 +--
.../Grammar/Syntax/StartsWithExpression.cs | 5 +-
.../Grammar/Syntax/TextExpression.cs | 2 +-
.../Grammar/Syntax/TimeExpression.cs | 2 +-
src/DataFilters/Order.cs | 2 +-
src/DataFilters/OrderValidator.cs | 3 +-
src/DataFilters/StringExtensions.cs | 2 +-
.../FilterExtensions.cs | 54 ++++++-------------
.../OrderExtensions.cs | 3 +-
.../QueryableExtensions.cs | 5 +-
.../FilterToExpressionsTests.cs | 27 ++++------
.../DataFilters.Expressions.UnitTests/Hero.cs | 4 +-
.../NodaTimeClass.cs | 3 +-
.../QueryableExtensionsTests.cs | 4 +-
.../ToOrderClauseTests.cs | 7 +--
.../BracketVsOr.cs | 5 +-
test/DataFilters.PerformanceTests/Program.cs | 2 +-
.../RawFilterVsFilterService.cs | 3 +-
.../FilterToQueriesTests.cs | 10 ++--
.../OrderToQueriesTests.cs | 8 +--
test/DataFilters.TestObjects/SuperHero.cs | 2 +-
.../Converters/DataFilterConvertersTests.cs | 10 ++--
.../FilterExtensionsTests.cs | 10 ++--
.../FilterOptionsTests.cs | 4 +-
.../FilterServiceOptionsTests.cs | 8 +--
.../FilterServiceTests.cs | 10 ++--
test/DataFilters.UnitTests/FilterTests.cs | 20 +++----
test/DataFilters.UnitTests/Generators.cs | 6 +--
.../Grammar/Parsing/FilterTokenParserTests.cs | 17 +++---
.../Grammar/Parsing/FilterTokenizerTests.cs | 13 ++---
.../Grammar/Syntax/AndExpressionTests.cs | 10 ++--
.../Grammar/Syntax/AsteriskExpressionTests.cs | 12 +++--
.../Grammar/Syntax/BoundaryExpressionTests.cs | 8 +--
.../Grammar/Syntax/BracketExpressionTests.cs | 10 ++--
.../Syntax/ConstantBracketValueTests.cs | 7 +--
.../Grammar/Syntax/ContainsExpressionTests.cs | 8 +--
.../Grammar/Syntax/DateExpressionTests.cs | 6 +--
.../Grammar/Syntax/DateTimeExpressionTests.cs | 8 +--
.../Grammar/Syntax/DurationExpressionTests.cs | 8 +--
.../Grammar/Syntax/EndsWithExpressionTests.cs | 8 +--
.../Grammar/Syntax/GroupExpressionTests.cs | 8 +--
.../Grammar/Syntax/IntervalExpressionTests.cs | 8 +--
.../Grammar/Syntax/NotExpressionTests.cs | 8 +--
.../Syntax/NumericValueExpressionTests.cs | 6 +--
.../Grammar/Syntax/OneOfExpressionTests.cs | 10 ++--
.../Grammar/Syntax/OrExpressionTests.cs | 10 ++--
.../Syntax/PropertyNameExpressionTests.cs | 7 +--
.../Grammar/Syntax/RangeBracketValueTests.cs | 8 +--
.../Syntax/StartsWithExpressionTests.cs | 8 +--
.../Syntax/StringValueExpressionTests.cs | 8 +--
.../Grammar/Syntax/TimeExpressionTests.cs | 6 +--
.../Helpers/CultureSwitcher.cs | 2 +-
.../Helpers/ExpressionsGenerators.cs | 11 ++--
.../Helpers/FilterGenerators.cs | 20 +++----
.../Helpers/GeneratorHelper.cs | 5 +-
.../DataFilters.UnitTests/MultiFilterTests.cs | 18 +++----
test/DataFilters.UnitTests/MultiOrderTests.cs | 5 +-
test/DataFilters.UnitTests/OrderTests.cs | 8 +--
.../StringExtensionsTests.cs | 8 +--
76 files changed, 212 insertions(+), 386 deletions(-)
diff --git a/.github/workflows/delivery.yml b/.github/workflows/delivery.yml
index 2342d95f..827235c6 100644
--- a/.github/workflows/delivery.yml
+++ b/.github/workflows/delivery.yml
@@ -33,11 +33,11 @@ jobs:
name: ubuntu-latest
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v3
with:
fetch-depth: 0
- name: 'Cache: .nuke/temp, ~/.nuget/packages'
- uses: actions/cache@v4
+ uses: actions/cache@v3
with:
path: |
.nuke/temp
@@ -50,22 +50,22 @@ jobs:
CodecovToken: ${{ secrets.CODECOV_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: 'Publish: unit-tests'
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v3
with:
name: unit-tests
path: output/artifacts/tests-results/unit-tests
- name: 'Publish: coverage-report'
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v3
with:
name: coverage-report
path: output/artifacts/reports/coverage-report
- name: 'Publish: coverage-history'
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v3
with:
name: coverage-history
path: output/artifacts/reports/coverage-history
- name: 'Publish: packages'
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v3
with:
name: packages
path: output/artifacts/packages
diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml
index a7f6c294..de4010fa 100644
--- a/.github/workflows/integration.yml
+++ b/.github/workflows/integration.yml
@@ -32,11 +32,11 @@ jobs:
name: ubuntu-latest
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v3
with:
fetch-depth: 0
- name: 'Cache: .nuke/temp, ~/.nuget/packages'
- uses: actions/cache@v4
+ uses: actions/cache@v3
with:
path: |
.nuke/temp
@@ -48,22 +48,22 @@ jobs:
NugetApiKey: ${{ secrets.NUGET_API_KEY }}
CodecovToken: ${{ secrets.CODECOV_TOKEN }}
- name: 'Publish: unit-tests'
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v3
with:
name: unit-tests
path: output/artifacts/tests-results/unit-tests
- name: 'Publish: coverage-report'
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v3
with:
name: coverage-report
path: output/artifacts/reports/coverage-report
- name: 'Publish: coverage-history'
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v3
with:
name: coverage-history
path: output/artifacts/reports/coverage-history
- name: 'Publish: packages'
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v3
with:
name: packages
path: output/artifacts/packages
diff --git a/.github/workflows/nightly-manual.yml b/.github/workflows/nightly-manual.yml
index 52d2ac08..781152d8 100644
--- a/.github/workflows/nightly-manual.yml
+++ b/.github/workflows/nightly-manual.yml
@@ -23,11 +23,11 @@ jobs:
name: ubuntu-latest
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v3
with:
fetch-depth: 0
- name: 'Cache: .nuke/temp, ~/.nuget/packages'
- uses: actions/cache@v4
+ uses: actions/cache@v3
with:
path: |
.nuke/temp
@@ -41,27 +41,27 @@ jobs:
StrykerDashboardApiKey: ${{ secrets.STRYKER_DASHBOARD_API_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: 'Publish: mutation-tests'
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v3
with:
name: mutation-tests
path: output/artifacts/tests-results/mutation-tests
- name: 'Publish: unit-tests'
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v3
with:
name: unit-tests
path: output/artifacts/tests-results/unit-tests
- name: 'Publish: packages'
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v3
with:
name: packages
path: output/artifacts/packages
- name: 'Publish: coverage-report'
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v3
with:
name: coverage-report
path: output/artifacts/reports/coverage-report
- name: 'Publish: coverage-history'
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v3
with:
name: coverage-history
path: output/artifacts/reports/coverage-history
diff --git a/src/DataFilters.Queries/FilterToQueries.cs b/src/DataFilters.Queries/FilterToQueries.cs
index 36b64b02..9ba861d5 100644
--- a/src/DataFilters.Queries/FilterToQueries.cs
+++ b/src/DataFilters.Queries/FilterToQueries.cs
@@ -1,9 +1,8 @@
namespace DataFilters
{
- using Queries.Core.Parts.Clauses;
-
using System;
using System.Linq;
+ using Queries.Core.Parts.Clauses;
///
/// Extensions method type.
diff --git a/src/DataFilters.Queries/OrderExtensions.cs b/src/DataFilters.Queries/OrderExtensions.cs
index 4a7ccc0a..21ca83de 100644
--- a/src/DataFilters.Queries/OrderExtensions.cs
+++ b/src/DataFilters.Queries/OrderExtensions.cs
@@ -1,9 +1,8 @@
namespace DataFilters
{
- using Queries.Core.Parts.Sorting;
-
using System;
using System.Collections.Generic;
+ using Queries.Core.Parts.Sorting;
///
/// Extensions method for types
diff --git a/src/DataFilters/Filter.cs b/src/DataFilters/Filter.cs
index 72bb8cd9..c3e31ef9 100644
--- a/src/DataFilters/Filter.cs
+++ b/src/DataFilters/Filter.cs
@@ -1,14 +1,13 @@
namespace DataFilters
{
- using DataFilters.Converters;
-
using System;
using System.Collections.Generic;
+ using System.Text.RegularExpressions;
+ using DataFilters.Converters;
using Newtonsoft.Json;
using Newtonsoft.Json.Schema;
using static Newtonsoft.Json.DefaultValueHandling;
using static Newtonsoft.Json.Required;
- using System.Text.RegularExpressions;
#if !NETSTANDARD1_3
using System.Text.Json.Serialization;
#endif
diff --git a/src/DataFilters/FilterOptions.cs b/src/DataFilters/FilterOptions.cs
index 5821c379..dd4116e8 100644
--- a/src/DataFilters/FilterOptions.cs
+++ b/src/DataFilters/FilterOptions.cs
@@ -21,7 +21,7 @@ public PropertyNameResolutionStrategy DefaultPropertyNameResolutionStrategy
{
get => _propertyNameResolutionStrategy;
#if !NET6_0_OR_GREATER
- set
+ set
#else
init
#endif
diff --git a/src/DataFilters/Grammar/Parsing/FilterToken.cs b/src/DataFilters/Grammar/Parsing/FilterToken.cs
index 0c9e2d1e..33e99140 100644
--- a/src/DataFilters/Grammar/Parsing/FilterToken.cs
+++ b/src/DataFilters/Grammar/Parsing/FilterToken.cs
@@ -91,7 +91,7 @@ public enum FilterToken
///
/// Bang sign
///
- [Token(Example = "!", Description ="exclamation point")]
+ [Token(Example = "!", Description = "exclamation point")]
Bang,
///
@@ -133,7 +133,7 @@ public enum FilterToken
///
/// The & character.
///
- [Token(Example = "&", Description ="ampersand")]
+ [Token(Example = "&", Description = "ampersand")]
Ampersand,
///
diff --git a/src/DataFilters/Grammar/Parsing/FilterTokenizer.cs b/src/DataFilters/Grammar/Parsing/FilterTokenizer.cs
index 516fafc5..4f72f898 100644
--- a/src/DataFilters/Grammar/Parsing/FilterTokenizer.cs
+++ b/src/DataFilters/Grammar/Parsing/FilterTokenizer.cs
@@ -1,11 +1,9 @@
namespace DataFilters.Grammar.Parsing
{
- using Superpower;
- using Superpower.Model;
-
using System.Collections.Generic;
using System.Linq;
-
+ using Superpower;
+ using Superpower.Model;
using static DataFilters.Grammar.Parsing.FilterToken;
///
@@ -246,7 +244,7 @@ protected override IEnumerable> Tokenize(TextSpan span, Toke
next.Remainder);
next = next.Remainder.ConsumeChar();
break;
- case DoubleQuote :
+ case DoubleQuote:
yield return Result.Value(FilterToken.DoubleQuote,
next.Location,
next.Remainder);
diff --git a/src/DataFilters/Grammar/Syntax/AsteriskExpression.cs b/src/DataFilters/Grammar/Syntax/AsteriskExpression.cs
index 8957b94f..410e8787 100644
--- a/src/DataFilters/Grammar/Syntax/AsteriskExpression.cs
+++ b/src/DataFilters/Grammar/Syntax/AsteriskExpression.cs
@@ -36,7 +36,7 @@ private AsteriskExpression() { }
///
///
///
- public static EndsWithExpression operator +(AsteriskExpression _, ConstantValueExpression right) => new (right.Value);
+ public static EndsWithExpression operator +(AsteriskExpression _, ConstantValueExpression right) => new(right.Value);
///
/// Computes a by adding a to a .
diff --git a/src/DataFilters/Grammar/Syntax/BinaryFilterExpression.cs b/src/DataFilters/Grammar/Syntax/BinaryFilterExpression.cs
index df5d39cb..24c41af3 100644
--- a/src/DataFilters/Grammar/Syntax/BinaryFilterExpression.cs
+++ b/src/DataFilters/Grammar/Syntax/BinaryFilterExpression.cs
@@ -29,11 +29,11 @@ protected BinaryFilterExpression(FilterExpression left, FilterExpression right)
{
(null, _) => throw new ArgumentNullException(nameof(left)),
(_, null) => throw new ArgumentNullException(nameof(right)),
- (BinaryFilterExpression , BinaryFilterExpression ) => (new GroupExpression(left), new GroupExpression(right)),
- (BinaryFilterExpression , not GroupExpression ) => (new GroupExpression(left), right),
- (not GroupExpression , BinaryFilterExpression) => (left, new GroupExpression(right)),
- (BinaryFilterExpression , _) => (new GroupExpression(left), right),
- (_ , BinaryFilterExpression) => (left, new GroupExpression(right)),
+ (BinaryFilterExpression, BinaryFilterExpression) => (new GroupExpression(left), new GroupExpression(right)),
+ (BinaryFilterExpression, not GroupExpression) => (new GroupExpression(left), right),
+ (not GroupExpression, BinaryFilterExpression) => (left, new GroupExpression(right)),
+ (BinaryFilterExpression, _) => (new GroupExpression(left), right),
+ (_, BinaryFilterExpression) => (left, new GroupExpression(right)),
_ => (left, right)
};
}
diff --git a/src/DataFilters/Grammar/Syntax/ConstantValueExpression.cs b/src/DataFilters/Grammar/Syntax/ConstantValueExpression.cs
index a2277e63..5b1a05b7 100644
--- a/src/DataFilters/Grammar/Syntax/ConstantValueExpression.cs
+++ b/src/DataFilters/Grammar/Syntax/ConstantValueExpression.cs
@@ -24,7 +24,7 @@ protected ConstantValueExpression(string value)
Value = value switch
{
null => throw new ArgumentNullException(nameof(value)),
- { Length : 0} => throw new ArgumentOutOfRangeException(nameof(value)),
+ { Length: 0 } => throw new ArgumentOutOfRangeException(nameof(value)),
_ => value
};
}
diff --git a/src/DataFilters/Grammar/Syntax/DateExpression.cs b/src/DataFilters/Grammar/Syntax/DateExpression.cs
index ffeb9823..955bac5f 100644
--- a/src/DataFilters/Grammar/Syntax/DateExpression.cs
+++ b/src/DataFilters/Grammar/Syntax/DateExpression.cs
@@ -63,7 +63,7 @@ public DateExpression(int year = 1, int month = 1, int day = 1)
public override bool IsEquivalentTo(FilterExpression other) => other switch
{
DateExpression date => Equals(date),
- DateTimeExpression { Date : var date, Time : null, Offset: null } => Equals(date),
+ DateTimeExpression { Date: var date, Time: null, Offset: null } => Equals(date),
_ => Equals((other as ISimplifiable)?.Simplify() ?? other)
};
@@ -81,6 +81,6 @@ public DateExpression(int year = 1, int month = 1, int day = 1)
};
///
- public static bool operator !=(DateExpression left, DateExpression right) => ! (left == right);
+ public static bool operator !=(DateExpression left, DateExpression right) => !(left == right);
}
}
diff --git a/src/DataFilters/Grammar/Syntax/FilterExpression.cs b/src/DataFilters/Grammar/Syntax/FilterExpression.cs
index 19367a95..00f89fe3 100644
--- a/src/DataFilters/Grammar/Syntax/FilterExpression.cs
+++ b/src/DataFilters/Grammar/Syntax/FilterExpression.cs
@@ -38,6 +38,6 @@ public virtual bool IsEquivalentTo(FilterExpression other)
///
/// Returns a that is the result of applying the NOT logical operator to the specified .
///
- public static NotExpression operator !(FilterExpression expression) => new (expression);
+ public static NotExpression operator !(FilterExpression expression) => new(expression);
}
}
\ No newline at end of file
diff --git a/src/DataFilters/Grammar/Syntax/IntervalExpression.cs b/src/DataFilters/Grammar/Syntax/IntervalExpression.cs
index 88564673..b87985f5 100644
--- a/src/DataFilters/Grammar/Syntax/IntervalExpression.cs
+++ b/src/DataFilters/Grammar/Syntax/IntervalExpression.cs
@@ -1,8 +1,7 @@
namespace DataFilters.Grammar.Syntax
{
- using Exceptions;
-
using System;
+ using Exceptions;
///
/// A that holds an interval between and values.
diff --git a/src/DataFilters/Grammar/Syntax/NumericValueExpression.cs b/src/DataFilters/Grammar/Syntax/NumericValueExpression.cs
index 5e1d73ea..22771ac0 100644
--- a/src/DataFilters/Grammar/Syntax/NumericValueExpression.cs
+++ b/src/DataFilters/Grammar/Syntax/NumericValueExpression.cs
@@ -43,5 +43,9 @@ public NumericValueExpression(string value) : base(value)
///
public static bool operator !=(NumericValueExpression left, NumericValueExpression right) => !(left == right);
+
+ ///
+ public override bool Equals(object obj)
+ => ReferenceEquals(this, obj) || Equals(obj.As()?.Value, Value);
}
}
\ No newline at end of file
diff --git a/src/DataFilters/Grammar/Syntax/OffsetExpression.cs b/src/DataFilters/Grammar/Syntax/OffsetExpression.cs
index 24b12115..e4abe979 100644
--- a/src/DataFilters/Grammar/Syntax/OffsetExpression.cs
+++ b/src/DataFilters/Grammar/Syntax/OffsetExpression.cs
@@ -47,7 +47,7 @@ public OffsetExpression(NumericSign sign = NumericSign.Plus, uint hours = 0, uin
throw new ArgumentOutOfRangeException(nameof(minutes), $"{nameof(minutes)} must be between 0 and 59 inclusive");
}
- Hours = (int) hours;
+ Hours = (int)hours;
Minutes = (int)minutes;
Sign = sign;
diff --git a/src/DataFilters/Grammar/Syntax/OneOfExpression.cs b/src/DataFilters/Grammar/Syntax/OneOfExpression.cs
index eb9ba9c7..006bea49 100644
--- a/src/DataFilters/Grammar/Syntax/OneOfExpression.cs
+++ b/src/DataFilters/Grammar/Syntax/OneOfExpression.cs
@@ -43,7 +43,7 @@ public OneOfExpression(params FilterExpression[] values)
_values = values.Where(x => x is not null)
.ToArray();
- _lazyParseableString = new (() => $"{{{string.Join(",", Values.Select(v => v.EscapedParseableString))}}}");
+ _lazyParseableString = new(() => $"{{{string.Join(",", Values.Select(v => v.EscapedParseableString))}}}");
}
///
@@ -134,7 +134,7 @@ public FilterExpression Simplify()
case 1:
simplifiedResult = curatedExpressions.Single();
break;
- case 2 :
+ case 2:
FilterExpression first = curatedExpressions.First();
FilterExpression other = curatedExpressions.Last();
if (first is OneOfExpression oneOfFirst && other is OneOfExpression oneOfSecond)
@@ -155,6 +155,6 @@ public FilterExpression Simplify()
}
///
- public override string EscapedParseableString =>_lazyParseableString.Value;
+ public override string EscapedParseableString => _lazyParseableString.Value;
}
}
diff --git a/src/DataFilters/Grammar/Syntax/StartsWithExpression.cs b/src/DataFilters/Grammar/Syntax/StartsWithExpression.cs
index eedd978c..0b6024ef 100644
--- a/src/DataFilters/Grammar/Syntax/StartsWithExpression.cs
+++ b/src/DataFilters/Grammar/Syntax/StartsWithExpression.cs
@@ -113,7 +113,7 @@ public StartsWithExpression(TextExpression text)
///
/// a whose is and is
///
- public static AndExpression operator +(StartsWithExpression left, EndsWithExpression right) => new (left, right);
+ public static AndExpression operator +(StartsWithExpression left, EndsWithExpression right) => new(left, right);
///
/// Combines the specified and
@@ -128,7 +128,7 @@ public StartsWithExpression(TextExpression text)
/// - exactly starts with 's value and contains 's value.
///
///
- public static OneOfExpression operator +(StartsWithExpression left, StartsWithExpression right) => new (new StringValueExpression(left.Value + right.Value),
+ public static OneOfExpression operator +(StartsWithExpression left, StartsWithExpression right) => new(new StringValueExpression(left.Value + right.Value),
new StartsWithExpression(left.Value + right.Value),
new AndExpression(left, new ContainsExpression(right.Value)));
@@ -156,6 +156,5 @@ public StartsWithExpression(TextExpression text)
/// A that can match any that starts with and end
///
public static AndExpression operator +(StartsWithExpression left, StringValueExpression right) => left + new EndsWithExpression(right.Value);
-
}
}
\ No newline at end of file
diff --git a/src/DataFilters/Grammar/Syntax/TextExpression.cs b/src/DataFilters/Grammar/Syntax/TextExpression.cs
index 282fe2da..8235e6dd 100644
--- a/src/DataFilters/Grammar/Syntax/TextExpression.cs
+++ b/src/DataFilters/Grammar/Syntax/TextExpression.cs
@@ -1,8 +1,8 @@
namespace DataFilters.Grammar.Syntax
{
using System;
- using System.Text;
using System.Collections.Generic;
+ using System.Text;
///
/// An expression that holds a string value "as is".
diff --git a/src/DataFilters/Grammar/Syntax/TimeExpression.cs b/src/DataFilters/Grammar/Syntax/TimeExpression.cs
index 82e64141..da4f2c97 100644
--- a/src/DataFilters/Grammar/Syntax/TimeExpression.cs
+++ b/src/DataFilters/Grammar/Syntax/TimeExpression.cs
@@ -77,7 +77,7 @@ public bool Equals(TimeExpression other) => other is not null
public override bool IsEquivalentTo(FilterExpression other) => other switch
{
TimeExpression time => Equals(time),
- DateTimeExpression { Date: null, Time: var time, Offset: null} => Equals(time),
+ DateTimeExpression { Date: null, Time: var time, Offset: null } => Equals(time),
_ => Equals((other as ISimplifiable)?.Simplify() ?? other)
};
diff --git a/src/DataFilters/Order.cs b/src/DataFilters/Order.cs
index 55e20b1f..b3df6677 100644
--- a/src/DataFilters/Order.cs
+++ b/src/DataFilters/Order.cs
@@ -47,7 +47,7 @@ public bool Equals(IOrder other)
public override bool Equals(object obj) => Equals(obj as Order);
///
-#if ! (NETSTANDARD1_0 || NETSTANDARD1_3 || NETSTANDARD2_0)
+#if !(NETSTANDARD1_0 || NETSTANDARD1_3 || NETSTANDARD2_0)
public override int GetHashCode() => HashCode.Combine(Expression, Direction);
#else
public override int GetHashCode() => (Expression, Direction).GetHashCode();
diff --git a/src/DataFilters/OrderValidator.cs b/src/DataFilters/OrderValidator.cs
index b9627477..d5f6b717 100644
--- a/src/DataFilters/OrderValidator.cs
+++ b/src/DataFilters/OrderValidator.cs
@@ -1,10 +1,9 @@
namespace DataFilters
{
- using FluentValidation;
-
using System;
using System.Linq;
using System.Text.RegularExpressions;
+ using FluentValidation;
///
/// Validates sort expression
diff --git a/src/DataFilters/StringExtensions.cs b/src/DataFilters/StringExtensions.cs
index f4a14ef7..debefca0 100644
--- a/src/DataFilters/StringExtensions.cs
+++ b/src/DataFilters/StringExtensions.cs
@@ -163,7 +163,7 @@ public static IFilter ToFilter(this StringSegment queryString, PropertyNameRe
=> ToFilter(queryString.Value, new FilterOptions() { DefaultPropertyNameResolutionStrategy = propertyNameResolutionStrategy});
#else
public static IFilter ToFilter(this string queryString, PropertyNameResolutionStrategy propertyNameResolutionStrategy)
- => ToFilter(queryString, new FilterOptions () { DefaultPropertyNameResolutionStrategy = propertyNameResolutionStrategy});
+ => ToFilter(queryString, new FilterOptions() { DefaultPropertyNameResolutionStrategy = propertyNameResolutionStrategy });
#endif
///
diff --git a/src/Datafilters.Expressions/FilterExtensions.cs b/src/Datafilters.Expressions/FilterExtensions.cs
index b297f1c5..adb6e77d 100644
--- a/src/Datafilters.Expressions/FilterExtensions.cs
+++ b/src/Datafilters.Expressions/FilterExtensions.cs
@@ -4,20 +4,18 @@
using DateOnlyTimeOnly.AspNet.Converters;
#endif
- using static Expressions.NullableValueBehavior;
+ using DataFilters.Expressions;
using System;
using System.Collections.Generic;
- using System.ComponentModel;
using System.Linq;
using System.Linq.Expressions;
using System.Reflection;
using static DataFilters.FilterOperator;
+ using static Expressions.NullableValueBehavior;
using static System.Linq.Expressions.Expression;
- using DataFilters.Expressions;
-
///
/// The `FilterExtensions` class provides extension methods for building expression trees from `IFilter` instances.
/// It allows for filtering data based on various conditions.
@@ -323,25 +321,20 @@ private static Expression ComputeContains(MemberExpression property, object valu
Type genericArgType = property.Type.GenericTypeArguments[0];
ParameterExpression pe = Parameter(genericArgType);
- if (typeof(string).Equals(genericArgType))
- {
- contains = Call(typeof(Enumerable),
+ contains = typeof(string).Equals(genericArgType)
+ ? Call(typeof(Enumerable),
nameof(Enumerable.Any),
new Type[] { typeof(string) },
property,
Lambda(
Call(pe,
typeof(string).GetRuntimeMethod(nameof(string.Contains), new[] { typeof(string) }),
- constantExpression), new[] { pe }));
- }
- else
- {
- contains = Call(typeof(Enumerable),
+ constantExpression), new[] { pe }))
+ : Call(typeof(Enumerable),
nameof(Enumerable.Any),
new Type[] { property.Type.GenericTypeArguments[0] },
property,
Lambda(Equal(pe, constantExpression), new[] { pe }));
- }
}
else
{
@@ -363,9 +356,8 @@ private static Expression ComputeNullSafeContains(MemberExpression property, obj
Type genericArgType = property.Type.GenericTypeArguments[0];
ParameterExpression pe = Parameter(genericArgType);
- if (typeof(string).Equals(genericArgType))
- {
- contains = Call(typeof(Enumerable),
+ contains = typeof(string).Equals(genericArgType)
+ ? Call(typeof(Enumerable),
nameof(Enumerable.Any),
new Type[] { typeof(string) },
property,
@@ -373,16 +365,12 @@ private static Expression ComputeNullSafeContains(MemberExpression property, obj
AndAlso(NotEqual(pe, Constant(null)),
Call(pe,
typeof(string).GetRuntimeMethod(nameof(string.Contains), new[] { typeof(string) }),
- constantExpression)), new[] { pe }));
- }
- else
- {
- contains = Call(typeof(Enumerable),
+ constantExpression)), new[] { pe }))
+ : Call(typeof(Enumerable),
nameof(Enumerable.Any),
new Type[] { property.Type.GenericTypeArguments[0] },
property,
Lambda(Equal(pe, constantExpression), new[] { pe }));
- }
}
else
{
@@ -490,14 +478,9 @@ private static Expression ComputeExpression(ParameterExpression pe, IEnumerable<
fields = fields.Skip(i)
.ToArray();
- if (fields.Any())
- {
- localBody = ComputeExpression(localParameter, fields.ToArray(), enumerableGenericType, @operator, value, property);
- }
- else
- {
- localBody = ComputeBodyExpression(property, @operator, value);
- }
+ localBody = fields.Any()
+ ? ComputeExpression(localParameter, fields.ToArray(), enumerableGenericType, @operator, value, property)
+ : ComputeBodyExpression(property, @operator, value);
body = Call(typeof(Enumerable),
nameof(Enumerable.Any),
@@ -576,14 +559,9 @@ private static Expression ComputeNullSafeExpression(ParameterExpression pe, IEnu
fields = fields.Skip(i)
.ToArray();
- if (fields.Any())
- {
- localBody = ComputeNullSafeExpression(localParameter, fields.ToArray(), enumerableGenericType, @operator, value, property);
- }
- else
- {
- localBody = ComputeNullSafeBodyExpression(property, @operator, value);
- }
+ localBody = fields.Any()
+ ? ComputeNullSafeExpression(localParameter, fields.ToArray(), enumerableGenericType, @operator, value, property)
+ : ComputeNullSafeBodyExpression(property, @operator, value);
body = AndAlso(NotEqual(property, Constant(null)),
Call(typeof(Enumerable),
diff --git a/src/Datafilters.Expressions/OrderExtensions.cs b/src/Datafilters.Expressions/OrderExtensions.cs
index 630e4ddd..5ac6f548 100644
--- a/src/Datafilters.Expressions/OrderExtensions.cs
+++ b/src/Datafilters.Expressions/OrderExtensions.cs
@@ -1,9 +1,8 @@
namespace DataFilters
{
- using DataFilters.Expressions;
-
using System;
using System.Collections.Generic;
+ using DataFilters.Expressions;
///
/// Extension methods for instances.
diff --git a/src/Datafilters.Expressions/QueryableExtensions.cs b/src/Datafilters.Expressions/QueryableExtensions.cs
index 856e35af..a862bd87 100644
--- a/src/Datafilters.Expressions/QueryableExtensions.cs
+++ b/src/Datafilters.Expressions/QueryableExtensions.cs
@@ -1,10 +1,9 @@
namespace System.Linq
{
- using DataFilters;
- using DataFilters.Expressions;
-
using System.Collections.Generic;
using System.Linq.Expressions;
+ using DataFilters;
+ using DataFilters.Expressions;
///
/// Provides extension methods for ordering a collection of entities.
diff --git a/test/DataFilters.Expressions.UnitTests/FilterToExpressionsTests.cs b/test/DataFilters.Expressions.UnitTests/FilterToExpressionsTests.cs
index 434e08fa..2de26825 100644
--- a/test/DataFilters.Expressions.UnitTests/FilterToExpressionsTests.cs
+++ b/test/DataFilters.Expressions.UnitTests/FilterToExpressionsTests.cs
@@ -1,22 +1,17 @@
namespace DataFilters.Expressions.UnitTests;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Linq.Expressions;
using DataFilters.Expressions;
using DataFilters.TestObjects;
-
using FluentAssertions;
using FluentAssertions.Extensions;
-
using NodaTime;
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Linq.Expressions;
-
using Xunit;
using Xunit.Abstractions;
using Xunit.Categories;
-
using static DataFilters.Expressions.NullableValueBehavior;
using static DataFilters.FilterLogic;
using static DataFilters.FilterOperator;
@@ -105,8 +100,8 @@ public static IEnumerable