-
Notifications
You must be signed in to change notification settings - Fork 0
feat: use a parser and simplify the syntax #2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 3 commits
Commits
Show all changes
4 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,9 @@ | ||
| using System.Text; | ||
|
|
||
| namespace Cutout.Sample; | ||
|
|
||
| public static partial class Examples | ||
| { | ||
| [Template("This is a very simple example")] | ||
| public static partial void Test(this StringBuilder builder); | ||
| } |
18 changes: 18 additions & 0 deletions
18
Cutout.Tests/CallStatementTests.Case1a#Test.Test.g.verified.cs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,18 @@ | ||
| //HintName: Test.Test.g.cs | ||
| // <auto-generated/> | ||
| #nullable enable | ||
|
|
||
| using Cutout; | ||
| using System.Diagnostics.CodeAnalysis; | ||
| using System; | ||
|
|
||
| namespace <global namespace>; | ||
|
|
||
| public static partial class Test | ||
| { | ||
| public static partial void Test(this StringBuilder builder, String product) | ||
| { | ||
| builder.Append(@"Some text before "); | ||
| Case2(builder,product); | ||
| } | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,37 @@ | ||
| using System.Text; | ||
| using Cutout.Tests.Extensions; | ||
|
|
||
| namespace Cutout.Tests; | ||
|
|
||
| public static partial class CallTemplates | ||
| { | ||
| public sealed record Product(string Title); | ||
|
|
||
| private const string CallExample1 = "Some text before {{ call Case2(product.Title) }}"; | ||
|
|
||
| [Template(CallExample1)] | ||
| public static partial void Case1(this StringBuilder builder, Product product); | ||
|
|
||
| private const string CallExample2 = "The product title is {{ title }}"; | ||
|
|
||
| [Template(CallExample2)] | ||
| public static partial void Case2(this StringBuilder builder, string title); | ||
| } | ||
|
|
||
| public sealed class CallStatementTests | ||
| { | ||
| [Fact(DisplayName = "A call statement can used")] | ||
| public void Case1() | ||
| { | ||
| var builder = new StringBuilder(); | ||
| builder.Case1(new CallTemplates.Product("Awesome Shoes")); | ||
| Assert.Equal("Some text before The product title is Awesome Shoes", builder.ToString()); | ||
| } | ||
|
|
||
| [Fact(DisplayName = "Case1 produces the expected source")] | ||
| public Task Case1a() => | ||
| """ | ||
| [Template("Some text before {{ call Case2(product) }}")] | ||
| public static partial void Test(this StringBuilder builder, string product); | ||
| """.VerifyTemplate(); | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
23 changes: 23 additions & 0 deletions
23
Cutout.Tests/ForStatementTests.Case1a#Test.Test.g.verified.cs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,23 @@ | ||
| //HintName: Test.Test.g.cs | ||
| // <auto-generated/> | ||
| #nullable enable | ||
|
|
||
| using Cutout; | ||
| using System.Diagnostics.CodeAnalysis; | ||
| using System; | ||
|
|
||
| namespace <global namespace>; | ||
|
|
||
| public static partial class Test | ||
| { | ||
| public static partial void Test(this StringBuilder builder, String product) | ||
| { | ||
| builder.Append(@"This is a test for tags ["); | ||
| foreach (var tag in product.Tags) | ||
| { | ||
| builder.Append(tag); | ||
| builder.Append(@"; "); | ||
| } | ||
|
bmazzarol marked this conversation as resolved.
|
||
| builder.Append(@"] which is cool."); | ||
| } | ||
| } | ||
24 changes: 24 additions & 0 deletions
24
Cutout.Tests/ForStatementTests.Case2a#Test.Test.g.verified.cs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,24 @@ | ||
| //HintName: Test.Test.g.cs | ||
| // <auto-generated/> | ||
| #nullable enable | ||
|
|
||
| using Cutout; | ||
| using System.Diagnostics.CodeAnalysis; | ||
| using System; | ||
|
|
||
| namespace <global namespace>; | ||
|
|
||
| public static partial class Test | ||
| { | ||
| public static partial void Test(this StringBuilder builder, String product) | ||
| { | ||
| builder.Append(@"This is a test for tags ["); | ||
| while (i < product.Tags.Length) | ||
| { | ||
| builder.Append(i + 1); | ||
| builder.Append(@". "); | ||
| builder.Append(product.Tags[i++]); | ||
| } | ||
|
bmazzarol marked this conversation as resolved.
|
||
| builder.Append(@"] which is cool."); | ||
| } | ||
| } | ||
32 changes: 32 additions & 0 deletions
32
Cutout.Tests/ForStatementTests.Case3a#Test.Test.g.verified.cs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,32 @@ | ||
| //HintName: Test.Test.g.cs | ||
| // <auto-generated/> | ||
| #nullable enable | ||
|
|
||
| using Cutout; | ||
| using System.Diagnostics.CodeAnalysis; | ||
| using System; | ||
|
|
||
| namespace <global namespace>; | ||
|
|
||
| public static partial class Test | ||
| { | ||
| public static partial void Test(this StringBuilder builder, String product) | ||
| { | ||
| builder.Append(@"This is a test for tags ["); | ||
| for (var i = 0; i < product.Tags.Length; i++) | ||
| { | ||
| if (product.Tags[i] == "awesome") | ||
| { | ||
| continue; | ||
| } | ||
| else if (product.Tags[i] == "shoes") | ||
| { | ||
| break; | ||
| } | ||
|
bmazzarol marked this conversation as resolved.
|
||
| builder.Append(i + 1); | ||
| builder.Append(@". "); | ||
| builder.Append(product.Tags[i]); | ||
| } | ||
|
bmazzarol marked this conversation as resolved.
|
||
| builder.Append(@"] which is cool."); | ||
| } | ||
| } | ||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.