Skip to content

Commit 208ed8e

Browse files
committed
Simplify interfaces
1 parent 851d2e6 commit 208ed8e

37 files changed

+139
-248
lines changed

src/SimpleStateMachine.StructuralSearch.Sandbox/Program.cs

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,28 +9,18 @@ internal static class Program
99
{
1010
static void Main(string[] args)
1111
{
12-
13-
var pr = Parser.String("var").Trim();
14-
var str = pr.ParseOrThrow("var");
15-
str = pr.ParseOrThrow(" var");
16-
str = pr.ParseOrThrow("var ");
17-
str = pr.ParseOrThrow(" var ");
18-
var source = "test;;;test;;;.";
19-
var parser = Parser.OneOf(Parser<char>.Any.ThenReturn(Unit.Value), Parser<char>.End);
20-
21-
22-
var t = Parser<char>.Any.AtLeastOnceAsStringUntil(Lookahead(String(";").Then(Not(String(";"))).Try())).ParseOrThrow(source);
12+
//StructuralSearch.ParseFindTemplate()
2313

2414

2515
var path = "Test.txt";
2616
var oldText = "0123456789";
2717
var text = "test";
2818
File.WriteAllText(path, oldText);
2919

30-
using var stringReader = text.AsStream();
31-
using var streamWriter = File.OpenWrite(path);
32-
33-
stringReader.CopyPartTo(streamWriter, 0, 7);
20+
// using var stringReader = text.AsStream();
21+
// using var streamWriter = File.OpenWrite(path);
22+
//
23+
// stringReader.CopyPartTo(streamWriter, 0, 7);
3424

3525
// var config = YmlHelper.Parse(
3626
// @"C:\Users\roman\GitHub\SimpleStateMachine.StructuralSearch\src\SimpleStateMachine.StructuralSearch.Tests\ConfigurationFile\FullConfig.yml");

src/SimpleStateMachine.StructuralSearch.Tests/FindTemplateParserTests.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,9 @@ public static void SourceParsingBeFindTemplateShouldBeSuccess(string templatePat
2929
{
3030
var findTemplate = File.ReadAllText(templatePath);
3131
var source = File.ReadAllText(sourcePath);
32-
var input = Input.String(source);
32+
var input = Input.Input.String(source);
3333
var findParser = StructuralSearch.ParseFindTemplate(findTemplate);
34-
IParsingContext parsingContext = new ParsingContext(input);
35-
var matches = findParser.Parse(ref parsingContext);
34+
var matches = findParser.Parse(input);
3635
Assert.Single(matches);
3736

3837
var match = matches.First();

src/SimpleStateMachine.StructuralSearch.Tests/PlaceholderParserTests.cs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,9 @@ public static class PlaceholderParserTests
1212
[InlineData("($test$)", "(value (test) )", "value (test) ")]
1313
public static void TemplateParsingShouldBeSuccess(string template, string source, string result)
1414
{
15-
var input = Input.String(source);
16-
IParsingContext parsingContext = new ParsingContext(input);
15+
var input = Input.Input.String(source);
1716
var templateParser = StructuralSearch.ParseFindTemplate(template);
18-
var matches = templateParser.Parse(ref parsingContext);
17+
var matches = templateParser.Parse(input);
1918

2019
Assert.Single(matches);
2120
var match = matches.First();
@@ -30,10 +29,9 @@ public static void TemplateParsingShouldBeSuccess(string template, string source
3029
[InlineData("$var$;.", "test;;;.", "test;;")]
3130
public static void TemplateParsingShouldBeSuccess2(string template, string source, params string[] values)
3231
{
33-
var input = Input.String(source);
34-
IParsingContext parsingContext = new ParsingContext(input);
32+
var input = Input.Input.String(source);
3533
var templateParser = StructuralSearch.ParseFindTemplate(template);
36-
var matches = templateParser.Parse(ref parsingContext);
34+
var matches = templateParser.Parse(input);
3735
Assert.Single(matches);
3836
var match = matches.First();
3937
Assert.Equal(match.Placeholders.Count, values.Length);

src/SimpleStateMachine.StructuralSearch.Tests/ReplaceTemplateTests.cs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System.IO;
22
using System.Linq;
33
using Pidgin;
4+
using SimpleStateMachine.StructuralSearch.ReplaceTemplate;
45
using Xunit;
56

67
namespace SimpleStateMachine.StructuralSearch.Tests;
@@ -15,11 +16,9 @@ public static void ReplaceTemplateParsingShouldHaveStepCount(string templatePath
1516
{
1617
var replaceTemplate = File.ReadAllText(templatePath);
1718
var replaceBuilder = StructuralSearch.ParseReplaceTemplate(replaceTemplate);
18-
IParsingContext context = ParsingContext.Empty;
19-
var result = replaceBuilder.Build(ref context);
2019

2120
Assert.NotNull(replaceTemplate);
22-
Assert.Equal(replaceBuilder.Steps.Count(), stepsCount);
21+
Assert.Equal(((ReplaceBuilder)replaceBuilder).Steps.Count(), stepsCount);
2322
}
2423

2524
[Theory]
@@ -38,12 +37,12 @@ public static void ReplaceBuildShouldBeSuccess(string templatePath, string resul
3837
var replaceResult = File.ReadAllText(resultPath);
3938
var replaceBuilder = StructuralSearch.ParseReplaceTemplate(replaceTemplate);
4039

41-
IParsingContext parsingContext = new ParsingContext(Input.Empty);
40+
IParsingContext parsingContext = new ParsingContext(Input.Input.Empty);
4241
for (int i = 0; i < keys.Length; i++)
4342
{
44-
parsingContext.AddPlaceholder(Placeholder.CreateEmpty(parsingContext, keys[i], values[i]));
43+
parsingContext[keys[i]] = Placeholder.CreateEmpty(parsingContext, keys[i], values[i]);
4544
}
46-
45+
4746
var result = replaceBuilder.Build(ref parsingContext);
4847

4948
Assert.NotNull(replaceTemplate);

src/SimpleStateMachine.StructuralSearch.Tests/StructurSearchParserTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public static void StructuralSearchShouldBeSuccess(string exampleName, string ex
1616
var parser = new StructuralSearchParser(config);
1717

1818
var fileInfo = new FileInfo(exampleFilePath);
19-
var input = Input.File(fileInfo);
19+
var input = Input.Input.File(fileInfo);
2020
var matches = parser.Parse(input);
2121
Assert.Equal(matches.Count(), matchesCount);
2222
}

src/SimpleStateMachine.StructuralSearch.Tests/StructuralSearchTests.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using SimpleStateMachine.StructuralSearch;
55
using SimpleStateMachine.StructuralSearch.Configurations;
66
using SimpleStateMachine.StructuralSearch.Extensions;
7+
using SimpleStateMachine.StructuralSearch.Input;
78
using Xunit;
89

910
namespace SimpleStateMachine.StructuralSearch.Tests;

src/SimpleStateMachine.StructuralSearch/Empty.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Collections.Generic;
33
using System.Linq;
4+
using SimpleStateMachine.StructuralSearch.Input;
45

56
namespace SimpleStateMachine.StructuralSearch;
67

src/SimpleStateMachine.StructuralSearch/Extensions/IRuleParameterExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@
33
internal static class IRuleParameterExtensions
44
{
55
public static bool IsApplicableForPlaceholder(this IRuleParameter parameter, string placeholderName)
6-
=> parameter is IPlaceholderRelatedRuleParameter relatedRuleParameter && relatedRuleParameter.Name == placeholderName;
6+
=> parameter is IPlaceholderRelatedRuleParameter relatedRuleParameter && relatedRuleParameter.PlaceholderName == placeholderName;
77
}

src/SimpleStateMachine.StructuralSearch/FindParser.cs

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,47 +3,49 @@
33
using System.Text;
44
using Pidgin;
55
using SimpleStateMachine.StructuralSearch.Extensions;
6+
using SimpleStateMachine.StructuralSearch.Input;
67

78
namespace SimpleStateMachine.StructuralSearch;
89

9-
public class FindParser : IFindParser
10+
internal class FindParser : IFindParser
1011
{
11-
public static readonly EmptyFindParser Empty = new ();
12-
1312
private SeriesParser Parser { get; }
13+
1414
public FindParser(SeriesParser parser)
1515
{
1616
Parser = parser;
1717
}
1818

19-
public IEnumerable<FindParserResult> Parse(ref IParsingContext context)
19+
public List<FindParserResult> Parse(IInput input)
2020
{
2121
List<FindParserResult> matches = new();
2222
StringBuilder res = new();
2323

24+
IParsingContext context = new ParsingContext(input);
2425
Parser.SetContext(ref context);
25-
26+
2627
var parsingContext = context;
2728
var parser = Parser.Select(x => string.Join(string.Empty, x))
2829
.Match()
2930
.ThenInvoke(match =>
3031
{
31-
var placeholders = parsingContext.Clear();
32+
var placeholders = context.ToDictionary();
33+
context.Clear();
3234
matches.Add(new FindParserResult(match, placeholders));
3335
})
3436
.ThenReturn(Unit.Value)
3537
.Try();
36-
38+
3739
var empty = Parser<char>.Any
3840
.ThenInvoke(x =>
3941
{
4042
res.Append(x);
4143
parsingContext.Clear();
4244
})
4345
.ThenReturn(Unit.Value);
44-
45-
context.Input.ParseBy(Pidgin.Parser.OneOf(parser, empty).Many());
46-
47-
return matches.OrderBy(x=> x.Match.Offset.Start);
46+
47+
using var textReader = context.Input.ReadData();
48+
Pidgin.Parser.OneOf(parser, empty).Many().Parse(textReader);
49+
return matches.OrderBy(x=> x.Match.Offset.Start).ToList();
4850
}
4951
}
Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,9 @@
1-
using System;
2-
using System.Collections.Generic;
1+
using System.Collections.Generic;
2+
using SimpleStateMachine.StructuralSearch.Input;
33

44
namespace SimpleStateMachine.StructuralSearch;
55

66
public interface IFindParser
77
{
8-
IEnumerable<FindParserResult> Parse(ref IParsingContext context);
9-
}
10-
11-
public class EmptyFindParser: IFindParser
12-
{
13-
public IEnumerable<FindParserResult> Parse(ref IParsingContext context)
14-
=> Array.Empty<FindParserResult>();
8+
List<FindParserResult> Parse(IInput input);
159
}

0 commit comments

Comments
 (0)