Skip to content

Commit 58afc92

Browse files
committed
Improve syntax
1 parent 1a7d7b2 commit 58afc92

27 files changed

+314
-281
lines changed

src/SimpleStateMachine.StructuralSearch.Tests/ParameterParserTests.cs

Lines changed: 51 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public static class ParameterParserTests
1313
[InlineData(" ")]
1414
public static void OptionalStringParsingShouldBeSuccess(string str)
1515
{
16-
var result = ParametersParser.String.ParseOrThrow(str);
16+
var result = StringParameterParser.String.Before(CommonParser.Eof).ParseOrThrow(str);
1717
result = EscapeHelper.Escape(result);
1818
Assert.Equal(result.ToLower(), str.ToLower());
1919
}
@@ -27,7 +27,7 @@ public static void OptionalStringParsingShouldBeSuccess(string str)
2727
[InlineData("( )")]
2828
public static void StringInParenthesesParsingShouldBeSuccess(string str)
2929
{
30-
var result = ParametersParser.StringInParentheses.ParseOrThrow(str);
30+
var result = StringParameterParser.StringInParentheses.Before(CommonParser.Eof).ParseOrThrow(str);
3131
result = EscapeHelper.Escape(result);
3232
Assert.Equal(result.ToLower(), str.ToLower());
3333
}
@@ -44,9 +44,9 @@ public static void StringInParenthesesParsingShouldBeSuccess(string str)
4444
[InlineData("( )( )")]
4545
public static void StringParameterParsingShouldBeSuccess(string str)
4646
{
47-
var parameter = ParametersParser.StringParameter.ParseOrThrow(str);
47+
var parameter = StringParameterParser.StringParameter.Before(CommonParser.Eof).ParseOrThrow(str);
4848
var parameterStr = parameter.ToString()?.ToLower();
49-
Assert.Equal(parameterStr?.ToLower(), str.ToLower());
49+
Assert.Equal(str.ToLower(), parameterStr?.ToLower());
5050
}
5151

5252
[Theory]
@@ -57,7 +57,7 @@ public static void StringParameterParsingShouldBeFail(string str)
5757
{
5858
Assert.Throws<ParseException<char>>(() =>
5959
{
60-
var result = ParametersParser.StringParameter.Before(CommonParser.Eof).ParseOrThrow(str);
60+
var result = StringParameterParser.StringParameter.Before(CommonParser.Eof).ParseOrThrow(str);
6161
return result;
6262
});
6363
}
@@ -66,45 +66,63 @@ public static void StringParameterParsingShouldBeFail(string str)
6666
[InlineData("$var$")]
6767
public static void PlaceholderParameterParsingShouldBeSuccess(string str)
6868
{
69-
var parameter = ParametersParser.PlaceholderParameter.ParseOrThrow(str);
69+
var parameter = ParametersParser.PlaceholderParameter.Before(CommonParser.Eof).ParseOrThrow(str);
7070
var parameterStr = parameter.ToString().ToLower();
71-
Assert.Equal(parameterStr.ToLower(), str.ToLower());
71+
Assert.Equal(str.ToLower(), parameterStr.ToLower());
7272
}
7373

74-
[Theory]
75-
[InlineData("\"132\"")]
76-
[InlineData("\"132$var1$\"")]
77-
[InlineData("\"132 $var1$\"")]
78-
[InlineData("\"132 $var1$ \"")]
79-
[InlineData("\"123$var1$.Lenght456\"")]
80-
[InlineData("\" \\\"132\\\" \"")]
81-
[InlineData("\" \"")]
82-
public static void StringFormatParameterParsingShouldBeSuccess(string str)
83-
{
84-
var parameter = ParametersParser.StringFormatParameter.ParseOrThrow(str);
85-
var parameterStr = parameter.ToString()?.ToLower();
86-
Assert.Equal(parameterStr?.ToLower(), str.ToLower());
87-
}
74+
// [Theory]
75+
// [InlineData("\"132\"")]
76+
// [InlineData("\"132$var1$\"")]
77+
// [InlineData("\"132 $var1$\"")]
78+
// [InlineData("\"132 $var1$ \"")]
79+
// [InlineData("\"123$var1$.Lenght456\"")]
80+
// [InlineData("\" \\\"132\\\" \"")]
81+
// [InlineData("\" \"")]
82+
// public static void StringFormatParameterParsingShouldBeSuccess(string str)
83+
// {
84+
// var parameter = StringRuleParameterParser.StringFormatParameter.ParseOrThrow(str);
85+
// var parameterStr = parameter.ToString()?.ToLower();
86+
// Assert.Equal(parameterStr?.ToLower(), str.ToLower());
87+
// }
88+
//
89+
// [Theory]
90+
// [InlineData("\\\"132\\\"")]
91+
// public static void StringFormatParameterParsingShouldBeFail(string str)
92+
// {
93+
// Assert.Throws<ParseException<char>>(() => StringRuleParameterParser.StringFormatParameter.ParseOrThrow(str));
94+
// }
8895

8996
[Theory]
90-
[InlineData("\\\"132\\\"")]
91-
public static void StringFormatParameterParsingShouldBeFail(string str)
97+
[InlineData("$var$")]
98+
[InlineData("$var$.Lenght")]
99+
[InlineData("$var$.Column.Start")]
100+
[InlineData("$var$.Column.End")]
101+
[InlineData("$var$.Offset.Start")]
102+
[InlineData("$var$.Offset.End")]
103+
[InlineData("$var$.Line.Start")]
104+
[InlineData("$var$.Line.End")]
105+
[InlineData("$var$.Trim")]
106+
[InlineData("$var$.Trim.Trim")]
107+
public static void ParameterParsingShouldBeSuccess(string str)
92108
{
93-
Assert.Throws<ParseException<char>>(() => ParametersParser.StringFormatParameter.ParseOrThrow(str));
109+
var parameter = ParametersParser.Parameter.Before(CommonParser.Eof).ParseOrThrow(str);
110+
var parameterStr = parameter.ToString()?.ToLower();
111+
Assert.Equal(str.ToLower(), parameterStr?.ToLower());
94112
}
95-
113+
96114
[Theory]
97-
[InlineData("$var$")]
98-
[InlineData("$var$.Trim")]
99-
[InlineData("$var$.Lenght")]
115+
[InlineData("$var$.Column")]
116+
[InlineData("$var$.Offset")]
117+
[InlineData("$var$.Line")]
100118
[InlineData("$var$.Lenght.Trim")]
101-
[InlineData("$var$.RemoveSubStr(\"123\")")]
102119
[InlineData("$var$.Lenght.RemoveSubStr(\"123\")")]
103120
[InlineData("$var$.Lenght.Trim.RemoveSubStr(\"123\")")]
104-
public static void ParameterParsingShouldBeSuccess(string str)
121+
public static void ParameterParsingShouldBeFailed(string str)
105122
{
106-
var parameter = ParametersParser.Parameter.ParseOrThrow(str);
107-
var parameterStr = parameter.ToString()?.ToLower();
108-
Assert.Equal(parameterStr?.ToLower(), str.ToLower());
123+
Assert.Throws<ParseException<char>>(() =>
124+
{
125+
var t = ParametersParser.Parameter.Before(CommonParser.Eof).ParseOrThrow(str);
126+
});
109127
}
110128
}

src/SimpleStateMachine.StructuralSearch/Extensions/RuleParameterExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,5 @@ namespace SimpleStateMachine.StructuralSearch.Extensions;
55
internal static class RuleParameterExtensions
66
{
77
public static bool IsApplicableForPlaceholder(this IRuleParameter parameter, string placeholderName)
8-
=> parameter is IPlaceholderRelatedRuleParameter relatedRuleParameter && relatedRuleParameter.PlaceholderName == placeholderName;
8+
=> parameter is IPlaceholderPropertyRuleParameter relatedRuleParameter && relatedRuleParameter.Placeholder.PlaceholderName == placeholderName;
99
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
using System;
2+
using SimpleStateMachine.StructuralSearch.Context;
3+
using SimpleStateMachine.StructuralSearch.Helper;
4+
using SimpleStateMachine.StructuralSearch.Rules.Parameters.Types;
5+
6+
namespace SimpleStateMachine.StructuralSearch.Rules.Parameters;
7+
8+
internal class ChangeBinaryParameter : IStringRuleParameter
9+
{
10+
private readonly IStringRuleParameter _left;
11+
private readonly ChangeBinaryType _type;
12+
private readonly IStringRuleParameter _right;
13+
14+
public ChangeBinaryParameter(IStringRuleParameter left, ChangeBinaryType type, IStringRuleParameter right)
15+
{
16+
_left = left;
17+
_type = type;
18+
_right = right;
19+
}
20+
21+
public string GetValue(ref IParsingContext context)
22+
{
23+
var left = _left.GetValue(ref context);
24+
var right = _right.GetValue(ref context);
25+
return _type switch
26+
{
27+
ChangeBinaryType.RemoveSubStr => left.Replace(right, string.Empty),
28+
_ => throw new ArgumentOutOfRangeException(nameof(_type).FormatPrivateVar(), _type, null)
29+
};
30+
}
31+
32+
public override string ToString()
33+
=> $"{_left}{Constant.Dote}{_type}{Constant.LeftParenthesis}{_right}{Constant.RightParenthesis}";
34+
}

src/SimpleStateMachine.StructuralSearch/Rules/Parameters/ChangeParameter.cs

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

src/SimpleStateMachine.StructuralSearch/Rules/Parameters/ChangeUnaryParameter.cs

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,30 +5,31 @@
55

66
namespace SimpleStateMachine.StructuralSearch.Rules.Parameters;
77

8-
internal class ChangeUnaryParameter : IRuleParameter
8+
internal class ChangeUnaryParameter : IStringRuleParameter
99
{
10-
private readonly IRuleParameter _parameter;
11-
private readonly ChangeUnaryType _type;
12-
private readonly IRuleParameter _arg;
13-
14-
public ChangeUnaryParameter(IRuleParameter parameter, ChangeUnaryType type, IRuleParameter arg)
10+
private readonly IStringRuleParameter _parameter;
11+
private readonly ChangeUnaryType _unaryType;
12+
13+
public ChangeUnaryParameter(IStringRuleParameter parameter, ChangeUnaryType unaryType)
1514
{
1615
_parameter = parameter;
17-
_type = type;
18-
_arg = arg;
16+
_unaryType = unaryType;
1917
}
2018

2119
public string GetValue(ref IParsingContext context)
2220
{
2321
var parameter = _parameter.GetValue(ref context);
24-
var arg = _arg.GetValue(ref context);
25-
return _type switch
22+
return _unaryType switch
2623
{
27-
ChangeUnaryType.RemoveSubStr => parameter.Replace(arg, string.Empty),
28-
_ => throw new ArgumentOutOfRangeException(nameof(_type).FormatPrivateVar(), _type, null)
24+
ChangeUnaryType.Trim => parameter.Trim(),
25+
ChangeUnaryType.TrimEnd => parameter.TrimEnd(),
26+
ChangeUnaryType.TrimStart => parameter.TrimStart(),
27+
ChangeUnaryType.ToUpper => parameter.ToUpper(),
28+
ChangeUnaryType.ToLower => parameter.ToLower(),
29+
_ => throw new ArgumentOutOfRangeException(nameof(_unaryType).FormatPrivateVar(), _unaryType, null)
2930
};
3031
}
31-
32-
public override string ToString()
33-
=> $"{_parameter}{Constant.Dote}{_type}{Constant.LeftParenthesis}{_arg}{Constant.RightParenthesis}";
32+
33+
public override string ToString()
34+
=> $"{_parameter}{Constant.Dote}{_unaryType}";
3435
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
namespace SimpleStateMachine.StructuralSearch.Rules.Parameters;
2+
3+
internal interface IPlaceholderPropertyRuleParameter : IRuleParameter
4+
{
5+
PlaceholderParameter Placeholder { get; }
6+
}

src/SimpleStateMachine.StructuralSearch/Rules/Parameters/IPlaceholderRelatedRuleParameter.cs

Lines changed: 0 additions & 6 deletions
This file was deleted.
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
namespace SimpleStateMachine.StructuralSearch.Rules.Parameters;
2+
3+
internal interface IStringRuleParameter : IRuleParameter
4+
{
5+
6+
}

src/SimpleStateMachine.StructuralSearch/Rules/Parameters/ParenthesisedParameter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
namespace SimpleStateMachine.StructuralSearch.Rules.Parameters;
66

7-
internal class ParenthesisedParameter : IRuleParameter
7+
internal class ParenthesisedParameter : IStringRuleParameter
88
{
99
private readonly ParenthesisType _parenthesisType;
1010
private readonly IRuleParameter _ruleParameter;

src/SimpleStateMachine.StructuralSearch/Rules/Parameters/PlaceholderColumnParameter.cs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,21 @@
55

66
namespace SimpleStateMachine.StructuralSearch.Rules.Parameters;
77

8-
internal class PlaceholderColumnParameter : IPlaceholderRelatedRuleParameter
8+
internal class PlaceholderColumnParameter : IPlaceholderPropertyRuleParameter
99
{
10-
private readonly PlaceholderParameter _placeholderParameter;
1110
private readonly ColumnProperty _property;
1211

1312
public PlaceholderColumnParameter(PlaceholderParameter parameter, ColumnProperty property)
1413
{
15-
_placeholderParameter = parameter;
14+
Placeholder = parameter;
1615
_property = property;
1716
}
1817

19-
public string PlaceholderName => _placeholderParameter.PlaceholderName;
18+
public PlaceholderParameter Placeholder { get; }
2019

2120
public string GetValue(ref IParsingContext context)
2221
{
23-
var placeHolder = _placeholderParameter.GetPlaceholder(ref context);
22+
var placeHolder = Placeholder.GetPlaceholder(ref context);
2423
var column = placeHolder.Column;
2524

2625
var value = _property switch
@@ -34,5 +33,5 @@ public string GetValue(ref IParsingContext context)
3433
}
3534

3635
public override string ToString()
37-
=> $"{_placeholderParameter}{Constant.Dote}{PlaceholderProperty.Column}{Constant.Dote}{_property}";
36+
=> $"{Placeholder}{Constant.Dote}{PlaceholderProperty.Column}{Constant.Dote}{_property}";
3837
}

0 commit comments

Comments
 (0)