Skip to content

Commit e568db5

Browse files
Merge pull request #8 from SimpleStateMachine/NewSubRule
New sub rule
2 parents e93282c + ca43648 commit e568db5

File tree

85 files changed

+1094
-455
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

85 files changed

+1094
-455
lines changed

global.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"sdk": {
3-
"version": "5.0.0",
3+
"version": "6.0.0",
44
"rollForward": "latestMinor",
55
"allowPrerelease": false
66
}

src/SimpleStateMachine.StructuralSearch.Sandbox/Program.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
using System;
22
using System.Collections.Generic;
3+
using System.IO;
34
using System.Linq;
5+
using System.Text;
46
using System.Text.Json;
57
using System.Text.RegularExpressions;
68
using Pidgin;
@@ -19,6 +21,24 @@ internal static class Program
1921
{
2022
static void Main(string[] args)
2123
{
24+
25+
var source = "test;;;test;;;.";
26+
var parser = Parser.OneOf(Parser<char>.Any.ThenReturn(Unit.Value), Parser<char>.End);
27+
28+
29+
var t = Parser<char>.Any.AtLeastOnceAsStringUntil(Lookahead(String(";").Then(Not(String(";"))).Try())).ParseOrThrow(source);
30+
31+
32+
var path = "Test.txt";
33+
var oldText = "0123456789";
34+
var text = "test";
35+
File.WriteAllText(path, oldText);
36+
37+
using var stringReader = text.AsStream();
38+
using var streamWriter = File.OpenWrite(path);
39+
40+
stringReader.CopyPartTo(streamWriter, 0, 7);
41+
2242
// var config = YmlHelper.Parse(
2343
// @"C:\Users\roman\GitHub\SimpleStateMachine.StructuralSearch\src\SimpleStateMachine.StructuralSearch.Tests\ConfigurationFile\FullConfig.yml");
2444
//

src/SimpleStateMachine.StructuralSearch.Sandbox/SimpleStateMachine.StructuralSearch.Sandbox.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@
55
<TargetFramework>net5.0</TargetFramework>
66
<ImplicitUsings>enable</ImplicitUsings>
77
<Nullable>enable</Nullable>
8-
<LangVersion>9</LangVersion>
8+
<LangVersion>10</LangVersion>
99
</PropertyGroup>
1010

1111
<ItemGroup>
12-
<PackageReference Include="Pidgin" Version="3.0.1" />
12+
<PackageReference Include="Pidgin" Version="3.1.0" />
1313
<PackageReference Include="YamlDotNet" Version="11.2.1" />
1414
</ItemGroup>
1515

src/SimpleStateMachine.StructuralSearch.Tests/ConfigurationFile/FullConfig.yml

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,17 @@
1414
# NullUnionOperator
1515

1616
- FindTemplate: |-
17-
if($value1$ $sign$ null)
18-
{
17+
if($value$ $sign$ null)
1918
$var$ = $value2$;
20-
}
2119
else
22-
{
2320
$var$ = $value1$;
24-
}
2521
FindRules:
2622
- $sign$ In ("Is", "==", "!=", "is not")
23+
- $value$ In ($value1$, "$value1$.Value", $value2$, "$value2$.Value")
2724
ReplaceTemplate: |-
2825
$var$ = $value1$ ?? $value2$;
2926
ReplaceRules:
27+
- $sign$ In ("!=", "is not") then $var2$ => $var1$, $var1$ => $var2$
3028
3129
# TernaryOperator
3230

src/SimpleStateMachine.StructuralSearch.Tests/ConfigurationFile/ShortConfig.yml

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,17 @@
1313
# NullUnionOperator
1414

1515
- FindTemplate: |-
16-
if($value1$ $sign$ null)
17-
{
16+
if($value$ $sign$ null)
1817
$var$ = $value2$;
19-
}
2018
else
21-
{
2219
$var$ = $value1$;
23-
}
2420
FindRules:
2521
- $sign$ In ("Is", "==", "!=", "is not")
22+
- $value$ In ($value1$, "$value1$.Value", $value2$, "$value2$.Value")
2623
ReplaceTemplate: |-
2724
$var$ = $value1$ ?? $value2$;
28-
25+
ReplaceRules:
26+
- $sign$ In ("!=", "is not") then $var2$ => $var1$, $var1$ => $var2$
2927
# TernaryOperator
3028

3129
- FindTemplate: |-
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
namespace SimpleStateMachine.StructuralSearch.Tests.Examples;
2+
3+
public class NullUnionOperator
4+
{
5+
public int Test1()
6+
{
7+
int? temp = 1;
8+
9+
if(temp is null)
10+
return 3;
11+
else
12+
return 4;
13+
}
14+
15+
public void Test2()
16+
{
17+
int? result;
18+
int? temp1 = 5;
19+
int? temp2 = 5;
20+
if(temp1 is null)
21+
result = temp2;
22+
else
23+
result = temp1;
24+
}
25+
26+
public void Test3()
27+
{
28+
int result;
29+
int? temp1 = 5;
30+
int? temp2 = 5;
31+
if(temp1 is null)
32+
result = temp2.Value;
33+
else
34+
result = temp1.Value;
35+
}
36+
37+
public int Test4()
38+
{
39+
int? temp3 = 5;
40+
41+
if(temp3 is null)
42+
return 7;
43+
else if (temp3 == 8)
44+
return 9;
45+
else
46+
return 10;
47+
}
48+
49+
public void Test5()
50+
{
51+
52+
}
53+
}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
using System;
2+
3+
namespace SimpleStateMachine.StructuralSearch.Tests.Examples
4+
{
5+
public class TernaryOperator
6+
{
7+
public int Test1()
8+
{
9+
var temp = 1;
10+
11+
if(temp == 2)
12+
return 3;
13+
else
14+
return 4;
15+
}
16+
17+
public int Test2()
18+
{
19+
var temp = 5;
20+
21+
if(temp == 6)
22+
return 7;
23+
else
24+
return 8;
25+
}
26+
27+
public int Test3()
28+
{
29+
var temp2 = 1;
30+
31+
if(temp2 == 2)
32+
return 3;
33+
else
34+
return 4;
35+
}
36+
37+
public int Test4()
38+
{
39+
var temp3 = 5;
40+
41+
if(temp3 == 6)
42+
return 7;
43+
else if (temp3 == 8)
44+
return 9;
45+
else
46+
return 10;
47+
}
48+
49+
public void Test5()
50+
{
51+
52+
}
53+
}
54+
}
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
$sign$ In ("Is", "==", "!=", "is not")
1+
$sign$ In ("Is", "==", "!=", "is not")
2+
$value$ In ($value1$, "$value1$.Value", $value2$, "$value2$.Value")

src/SimpleStateMachine.StructuralSearch.Tests/FindRuleParserTests.cs

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10,21 +10,24 @@ namespace SimpleStateMachine.StructuralSearch.Tests
1010
public class FindRuleParserTests
1111
{
1212
[Theory]
13-
[InlineData("equals $var$")]
14-
[InlineData("equals \"\\$\"")]
15-
[InlineData("Not equals $var$.Lenght")]
16-
[InlineData("Not equals $var$.offset.Start")]
17-
[InlineData("equals $var$.Lenght and Not StartsWith \"123\"")]
18-
[InlineData("equals $var$.Lenght and Not StartsWith \"\\\"Test\"")]
19-
[InlineData("Contains $var$.Lenght")]
20-
[InlineData("Contains \"123\"")]
21-
[InlineData("StartsWith $var$.Lenght")]
22-
[InlineData("StartsWith \"123\"")]
23-
[InlineData("EndsWith $var$.Lenght")]
24-
[InlineData("EndsWith \"123\"")]
25-
[InlineData("Match $var$.Lenght")]
26-
[InlineData("Is Int")]
27-
[InlineData("Is DateTime")]
13+
[InlineData("$var$ equals $var$")]
14+
[InlineData("$var$ equals \"\\$\"")]
15+
[InlineData("Not $var$ equals $var$.Lenght")]
16+
[InlineData("Not $var$ equals $var$.offset.Start")]
17+
[InlineData("$var$ equals $var$.Lenght and Not $var$ StartsWith \"123\"")]
18+
[InlineData("Not $var$ equals $var$.Lenght and $var$ StartsWith \"123\"")]
19+
[InlineData("$var$ equals $var$.Lenght and Not $var$ StartsWith \"\\\"Test\"")]
20+
[InlineData("$var$ Contains $var$.Lenght")]
21+
[InlineData("$var1$.Lenght Contains $var2$.Lenght")]
22+
[InlineData("$var$ Contains \"123\"")]
23+
[InlineData("$var$ StartsWith $var$.Lenght")]
24+
[InlineData("$var$.Lenght Equals $var$.Lenght")]
25+
[InlineData("$var$ StartsWith \"123\"")]
26+
[InlineData("$var$ EndsWith $var$.Lenght")]
27+
[InlineData("$var$ EndsWith \"123\"")]
28+
[InlineData("$var$ Match $var$.Lenght")]
29+
[InlineData("$var$ Is Int")]
30+
[InlineData("$var$ Is DateTime")]
2831

2932
public void FindRuleExprParsingShouldBeSuccess(string ruleStr)
3033
{
@@ -35,8 +38,10 @@ public void FindRuleExprParsingShouldBeSuccess(string ruleStr)
3538
}
3639

3740
[Theory]
38-
[InlineData("In \"Is\", \"==\", \"!=\", \"is not\"", "In \"Is\",\"==\",\"!=\",\"is not\"")]
39-
[InlineData("In (\"Is\", \"==\", \"!=\", \"is not\")", "In \"Is\",\"==\",\"!=\",\"is not\"")]
41+
[InlineData("$var$ In \"Is\", \"==\", \"!=\", \"is not\"", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
42+
[InlineData("$var$ In (\"Is\", \"==\", \"!=\", \"is not\")", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
43+
[InlineData("Not ($var$ equals $var$.Lenght and $var$ StartsWith \"123\")", "Not $var$ equals $var$.Lenght and $var$ StartsWith \"123\"")]
44+
[InlineData("Not ($var$ equals $var$.Lenght)", "Not $var$ equals $var$.Lenght")]
4045
public void FindRuleExprParsingShouldBeEqualsCustomResult(string ruleStr, string customResult)
4146
{
4247
var rule = FindRuleParser.Expr.ParseOrThrow(ruleStr);
Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,4 @@
1-
if($value1$ $sign$ null)
2-
{
1+
if($value$ $sign$ null)
32
$var$ = $value2$;
4-
}
53
else
6-
{
7-
$var$ = $value1$;
8-
}
4+
$var$ = $value1$;

0 commit comments

Comments
 (0)