Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -37,24 +37,23 @@ public static void FindRuleExprParsingShouldBeSuccess(string ruleStr)
}

[Theory]
[InlineData(0, "$var$ In \"Is\", \"==\", \"!=\", \"is not\"", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
[InlineData(1, "$var$ In (\"Is\", \"==\", \"!=\", \"is not\")", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
[InlineData(2, "$var$ In \"Is\",\"==\",\"!=\",\"is not\"", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
[InlineData(3, "$var$ In (\"Is\",\"==\",\"!=\",\"is not\")", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
[InlineData(4, "$var$ In(\"Is\",\"==\",\"!=\",\"is not\")", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
[InlineData(5, "$var$ In ( \"Is\",\"==\",\"!=\",\"is not\" ) ", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
[InlineData(6, "$var$ In ( \"Is\",\"==\",\"!=\",\"is not\" )", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
[InlineData(7, "$var$ In ( \"Is\",\"==\",\"!=\",\"is not\") ", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
[InlineData(8, "$var$ In (\"Is\",\"==\",\"!=\",\"is not\" ) ", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
[InlineData(9, "$var$ In (\"Is\",\"==\",\"!=\",\"is not\" )", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
[InlineData(10, "$var$ In (\"Is\",\"==\",\"!=\",\"is not\") ", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
[InlineData(11, "$var$ In( \"Is\",\"==\",\"!=\",\"is not\" ) ", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
[InlineData(12, "$var$ In( \"Is\",\"==\",\"!=\",\"is not\" )", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
[InlineData(13, "$var$ In( \"Is\",\"==\",\"!=\",\"is not\") ", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
[InlineData(14, "Not ($var$ equals $var$.Lenght and $var$ StartsWith \"123\")", "Not $var$ equals $var$.Lenght and $var$ StartsWith \"123\"")]
[InlineData(15, "Not ($var$ equals $var$.Lenght)", "Not $var$ equals $var$.Lenght")]
[InlineData(16, "$var$ In( \"Is\",\"==\",\"!=\",\"is not\" )", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
public static void FindRuleExprParsingShouldBeEqualsCustomResult(int number, string ruleStr, string customResult)
[InlineData("$var$ In \"Is\", \"==\", \"!=\", \"is not\"", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
[InlineData("$var$ In (\"Is\", \"==\", \"!=\", \"is not\")", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
[InlineData("$var$ In \"Is\",\"==\",\"!=\",\"is not\"", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
[InlineData("$var$ In (\"Is\",\"==\",\"!=\",\"is not\")", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
[InlineData("$var$ In(\"Is\",\"==\",\"!=\",\"is not\")", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
[InlineData("$var$ In ( \"Is\",\"==\",\"!=\",\"is not\" ) ", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
[InlineData("$var$ In ( \"Is\",\"==\",\"!=\",\"is not\" )", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
[InlineData("$var$ In ( \"Is\",\"==\",\"!=\",\"is not\") ", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
[InlineData("$var$ In (\"Is\",\"==\",\"!=\",\"is not\" ) ", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
[InlineData("$var$ In (\"Is\",\"==\",\"!=\",\"is not\" )", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
[InlineData("$var$ In (\"Is\",\"==\",\"!=\",\"is not\") ", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
[InlineData("$var$ In( \"Is\",\"==\",\"!=\",\"is not\" ) ", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
[InlineData("$var$ In( \"Is\",\"==\",\"!=\",\"is not\" )", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
[InlineData("$var$ In( \"Is\",\"==\",\"!=\",\"is not\") ", "$var$ In \"Is\",\"==\",\"!=\",\"is not\"")]
[InlineData("Not ($var$ equals $var$.Lenght and $var$ StartsWith \"123\")", "Not $var$ equals $var$.Lenght and $var$ StartsWith \"123\"")]
[InlineData("Not ($var$ equals $var$.Lenght)", "Not $var$ equals $var$.Lenght")]
public static void FindRuleExprParsingShouldBeEqualsCustomResult(string ruleStr, string customResult)
{
var rule = FindRuleParser.Expr.ParseOrThrow(ruleStr);
var ruleAsStr = rule.ToString()?.ToLower();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,23 +54,23 @@ public static void ReplaceBuildShouldBeSuccess(string templatePath, string resul
// TODO validation parenthesis for parameters

[Theory]
[InlineData(0, "test $var1$.Lenght")]
[InlineData(1, "(test) $var1$.Lenght")]
[InlineData(2, "test ($var1$.Lenght)")]
[InlineData(3, "(test $var1$.Lenght)")]
[InlineData(4, "test ")]
[InlineData(5, "($var1$.Lenght)")]
[InlineData(6, " ($var1$.Lenght)")]
[InlineData(7, " ( )")]
[InlineData(8, "test ( )")]
[InlineData(9, " (test $var1$.Lenght)")]
[InlineData(10, "(test) ($var1$.Lenght)")]
[InlineData(11, "((test) $var1$.Lenght)")]
[InlineData(12, "(test ($var1$.Lenght))")]
[InlineData(13, "((test) ($var1$.Lenght))")]
[InlineData(14, "()")]
[InlineData(15, "(test ($var1$.Lenght) test2)")]
public static void ReplaceTemplateParsingShouldBeSuccess(int number, string templateStr)
[InlineData("test $var1$.Lenght")]
[InlineData("(test) $var1$.Lenght")]
[InlineData("test ($var1$.Lenght)")]
[InlineData("(test $var1$.Lenght)")]
[InlineData("test ")]
[InlineData("($var1$.Lenght)")]
[InlineData(" ($var1$.Lenght)")]
[InlineData(" ( )")]
[InlineData("test ( )")]
[InlineData(" (test $var1$.Lenght)")]
[InlineData("(test) ($var1$.Lenght)")]
[InlineData("((test) $var1$.Lenght)")]
[InlineData("(test ($var1$.Lenght))")]
[InlineData("((test) ($var1$.Lenght))")]
[InlineData("()")]
[InlineData("(test ($var1$.Lenght) test2)")]
public static void ReplaceTemplateParsingShouldBeSuccess(string templateStr)
{
var replaceBuilder = StructuralSearch.ParseReplaceTemplate(templateStr);
var replaceStr = replaceBuilder.ToString()?.ToLower();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ public void Fill(IReadOnlyDictionary<string, IPlaceholder> placeholders)
throw new System.NotImplementedException();
}

public void Clear()
public IReadOnlyDictionary<string, IPlaceholder> Clear()
{
throw new System.NotImplementedException();
}
Expand Down
4 changes: 2 additions & 2 deletions src/SimpleStateMachine.StructuralSearch/FindParser.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public IEnumerable<FindParserResult> Parse(ref IParsingContext context)
.Match()
.ThenInvoke(match =>
{
var placeholders= parsingContext.SwitchOnNew();
var placeholders = parsingContext.Clear();
matches.Add(new FindParserResult(match, placeholders));
})
.ThenReturn(Unit.Value)
Expand All @@ -38,7 +38,7 @@ public IEnumerable<FindParserResult> Parse(ref IParsingContext context)
.ThenInvoke(x =>
{
res.Append(x);
parsingContext.SwitchOnNew();
parsingContext.Clear();
})
.ThenReturn(Unit.Value);

Expand Down
5 changes: 1 addition & 4 deletions src/SimpleStateMachine.StructuralSearch/IParsingContext.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,10 @@ public interface IParsingContext
IInput Input { get; }

bool TryGetPlaceholder(string name, out IPlaceholder value);

void AddPlaceholder(IPlaceholder placeholder);

IPlaceholder GetPlaceholder(string name);

IReadOnlyDictionary<string, IPlaceholder> SwitchOnNew();
void Fill(IReadOnlyDictionary<string, IPlaceholder>placeholders);
void Clear();
IReadOnlyDictionary<string, IPlaceholder> Clear();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ public override Parser<char, string> BuildParser(Func<Parser<char, string>?> nex

var simpleString = CommonTemplateParser.StringWithPlshd;
var token = Parser.OneOf(simpleString, CommonParser.WhiteSpaces).Try();
Parser<char, string> term = null;
Parser<char, string>? term = null;

var parenthesised = Parsers.BetweenOneOfChars(x => Parser.Char(x).AsString(),
expr: Parser.Rec(() => term),
Expand Down
28 changes: 15 additions & 13 deletions src/SimpleStateMachine.StructuralSearch/ParsingContext.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,29 +29,31 @@ public IPlaceholder GetPlaceholder(string name)
{
return Placeholders[name];
}

public IReadOnlyDictionary<string, IPlaceholder> SwitchOnNew()
{
var placeholders = Placeholders
.OrderBy(x=> x.Value.Offset.Start)
.ToDictionary(x=> x.Key, x=> x.Value);
Clear();
return placeholders;
}


public void Fill(IReadOnlyDictionary<string, IPlaceholder> placeholders)
{
Clear();
ClearInternal();

foreach (var placeholder in placeholders)
{
Placeholders.Add(placeholder.Key, placeholder.Value);
}
}

public void Clear()
public IReadOnlyDictionary<string, IPlaceholder> Clear()
{
var placeholders = Placeholders
.OrderBy(x=> x.Value.Offset.Start)
.ToDictionary(x=> x.Key, x=> x.Value);

ClearInternal();

return placeholders;
}

private void ClearInternal()
{
Placeholders.Clear();
Placeholders.Clear();;
}
}
}