Skip to content

Commit 0d974f3

Browse files
committed
added support for multiple expressions in arrays
1 parent 5e94f4a commit 0d974f3

7 files changed

Lines changed: 402 additions & 273 deletions

File tree

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
// ReSharper disable MemberCanBePrivate.Global
2+
3+
using System.Collections.Generic;
4+
5+
namespace romaklayt.DynamicFilter.Common.Models;
6+
7+
internal static class ElementOperators
8+
{
9+
public static Dictionary<string, ElementOperatorEnum> Get =>
10+
new()
11+
{
12+
{ "==*", ElementOperatorEnum.EqualsCaseInsensitive },
13+
{ "_-=*", ElementOperatorEnum.EndsWithCaseInsensitive },
14+
{ "_=*", ElementOperatorEnum.StartsWithCaseInsensitive },
15+
{ "@=*", ElementOperatorEnum.ContainsCaseInsensitive },
16+
{ "_-=", ElementOperatorEnum.EndsWith },
17+
{ "_=", ElementOperatorEnum.StartsWith },
18+
{ "<=", ElementOperatorEnum.LessOrEqual },
19+
{ ">=", ElementOperatorEnum.GreaterOrEqual },
20+
{ "<", ElementOperatorEnum.LessThan },
21+
{ ">", ElementOperatorEnum.GreaterThan },
22+
{ "@=", ElementOperatorEnum.Contains },
23+
{ "==", ElementOperatorEnum.Equals }
24+
};
25+
}
26+
27+
internal enum ElementOperatorEnum
28+
{
29+
Equals,
30+
Contains,
31+
GreaterThan,
32+
LessThan,
33+
GreaterOrEqual,
34+
LessOrEqual,
35+
StartsWith,
36+
EndsWith,
37+
ContainsCaseInsensitive,
38+
StartsWithCaseInsensitive,
39+
EndsWithCaseInsensitive,
40+
EqualsCaseInsensitive
41+
}
42+
43+
internal static class EnumerableOperators
44+
{
45+
public static Dictionary<string, EnumerableOperatorEnum> Get =>
46+
new()
47+
{
48+
{ "any", EnumerableOperatorEnum.Any },
49+
{ "all", EnumerableOperatorEnum.All }
50+
};
51+
}
52+
53+
internal enum EnumerableOperatorEnum
54+
{
55+
Any,
56+
All
57+
}

src/romaklayt.DynamicFilter.Common/Models/FilterArray.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@ internal class FilterArray
1010
public FilterArray(string filterArray, Type type, Expression parameter)
1111
{
1212
var split = filterArray.Split(FilterArrayLogicOperators.GetOperators(), StringSplitOptions.RemoveEmptyEntries);
13-
FilterElements = split.Select(s => new FilterElement(s.Trim('(', ')'), type, parameter)).ToList();
13+
FilterElements = split.Select(s => new FilterSimpleQuery(s.Trim('(', ')'), type, parameter)).ToList();
1414
Operators = Extensions.ParseOperators(filterArray, split);
1515
Expression = GetExpression();
1616
}
1717

18-
private List<FilterElement> FilterElements { get; }
18+
private List<FilterSimpleQuery> FilterElements { get; }
1919
private List<FilterArrayLogicOperatorEnum> Operators { get; }
2020
public Expression Expression { get; }
2121

src/romaklayt.DynamicFilter.Common/Models/FilterArrayLogicOperators.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
// ReSharper disable MemberCanBePrivate.Global
22

3+
using System.Collections.Generic;
4+
35
namespace romaklayt.DynamicFilter.Common.Models;
46

57
internal class FilterArrayLogicOperators
@@ -14,4 +16,17 @@ internal enum FilterArrayLogicOperatorEnum
1416
{
1517
Or,
1618
And
19+
}
20+
21+
internal class FilterEnumerableLogicOperators
22+
{
23+
public const char Or = '|';
24+
public const char And = '&';
25+
26+
public static Dictionary<char, FilterArrayLogicOperatorEnum> Get =>
27+
new()
28+
{
29+
{ Or, FilterArrayLogicOperatorEnum.Or },
30+
{ And, FilterArrayLogicOperatorEnum.And }
31+
};
1732
}

src/romaklayt.DynamicFilter.Common/Models/FilterElement.cs

Lines changed: 0 additions & 222 deletions
This file was deleted.

src/romaklayt.DynamicFilter.Common/Models/FilterElementContainsOperators.cs

Lines changed: 0 additions & 45 deletions
This file was deleted.

0 commit comments

Comments
 (0)