Moved CreateTagHelperIRNode from renderer to writer
This commit is contained in:
parent
1a05359d12
commit
6fea6454f0
|
|
@ -206,6 +206,11 @@ namespace Microsoft.AspNetCore.Razor.Evolution.CodeGeneration
|
|||
Context.TagHelperWriter.WriteInitializeTagHelperStructure(Context, node);
|
||||
}
|
||||
|
||||
public override void VisitCreateTagHelper(CreateTagHelperIRNode node)
|
||||
{
|
||||
Context.TagHelperWriter.WriteCreateTagHelper(Context, node);
|
||||
}
|
||||
|
||||
public override void VisitDefault(RazorIRNode node)
|
||||
{
|
||||
// This is a temporary bridge to the renderer, which allows us to move functionality piecemeal
|
||||
|
|
|
|||
|
|
@ -204,18 +204,6 @@ namespace Microsoft.AspNetCore.Razor.Evolution.CodeGeneration
|
|||
Context.Writer.WriteLine("))();");
|
||||
}
|
||||
|
||||
public override void VisitCreateTagHelper(CreateTagHelperIRNode node)
|
||||
{
|
||||
var tagHelperVariableName = GetTagHelperVariableName(node.TagHelperTypeName);
|
||||
|
||||
Context.Writer
|
||||
.WriteStartAssignment(tagHelperVariableName)
|
||||
.WriteStartMethodInvocation(
|
||||
"CreateTagHelper" /* ORIGINAL: CreateTagHelperMethodName */,
|
||||
"global::" + node.TagHelperTypeName)
|
||||
.WriteEndMethodInvocation();
|
||||
}
|
||||
|
||||
public override void VisitSetTagHelperProperty(SetTagHelperPropertyIRNode node)
|
||||
{
|
||||
var tagHelperVariableName = GetTagHelperVariableName(node.TagHelperTypeName);
|
||||
|
|
|
|||
|
|
@ -8,6 +8,8 @@ namespace Microsoft.AspNetCore.Razor.Evolution.CodeGeneration
|
|||
{
|
||||
public class DesignTimeTagHelperWriter : TagHelperWriter
|
||||
{
|
||||
public string CreateTagHelperMethodName { get; set; } = "CreateTagHelper";
|
||||
|
||||
public override void WriteDeclareTagHelperFields(CSharpRenderingContext context, DeclareTagHelperFieldsIRNode node)
|
||||
{
|
||||
foreach (var tagHelperTypeName in node.UsedTagHelperTypeNames)
|
||||
|
|
@ -29,7 +31,14 @@ namespace Microsoft.AspNetCore.Razor.Evolution.CodeGeneration
|
|||
|
||||
public override void WriteCreateTagHelper(CSharpRenderingContext context, CreateTagHelperIRNode node)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
var tagHelperVariableName = GetTagHelperVariableName(node.TagHelperTypeName);
|
||||
|
||||
context.Writer
|
||||
.WriteStartAssignment(tagHelperVariableName)
|
||||
.WriteStartMethodInvocation(
|
||||
CreateTagHelperMethodName,
|
||||
"global::" + node.TagHelperTypeName)
|
||||
.WriteEndMethodInvocation();
|
||||
}
|
||||
|
||||
public override void WriteExecuteTagHelpers(CSharpRenderingContext context, ExecuteTagHelpersIRNode node)
|
||||
|
|
|
|||
|
|
@ -255,23 +255,6 @@ namespace Microsoft.AspNetCore.Razor.Evolution.CodeGeneration
|
|||
linePragmaScope?.Dispose();
|
||||
}
|
||||
|
||||
public override void VisitCreateTagHelper(CreateTagHelperIRNode node)
|
||||
{
|
||||
var tagHelperVariableName = GetTagHelperVariableName(node.TagHelperTypeName);
|
||||
|
||||
Context.Writer
|
||||
.WriteStartAssignment(tagHelperVariableName)
|
||||
.WriteStartMethodInvocation(
|
||||
"CreateTagHelper" /* ORIGINAL: CreateTagHelperMethodName */,
|
||||
"global::" + node.TagHelperTypeName)
|
||||
.WriteEndMethodInvocation();
|
||||
|
||||
Context.Writer.WriteInstanceMethodInvocation(
|
||||
"__tagHelperExecutionContext" /* ORIGINAL: ExecutionContextVariableName */,
|
||||
"Add" /* ORIGINAL: ExecutionContextAddMethodName */,
|
||||
tagHelperVariableName);
|
||||
}
|
||||
|
||||
public override void VisitAddPreallocatedTagHelperHtmlAttribute(AddPreallocatedTagHelperHtmlAttributeIRNode node)
|
||||
{
|
||||
Context.Writer
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@ namespace Microsoft.AspNetCore.Razor.Evolution.CodeGeneration
|
|||
|
||||
public string ExecutionContextVariableName { get; set; } = "__tagHelperExecutionContext";
|
||||
|
||||
public string ExecutionContextAddMethodName { get; set; } = "Add";
|
||||
|
||||
public string RunnerTypeName { get; set; } = "global::Microsoft.AspNetCore.Razor.Runtime.TagHelpers.TagHelperRunner";
|
||||
|
||||
public string RunnerVariableName { get; set; } = "__tagHelperRunner";
|
||||
|
|
@ -30,6 +32,8 @@ namespace Microsoft.AspNetCore.Razor.Evolution.CodeGeneration
|
|||
|
||||
public string TagModeTypeName { get; set; } = "global::Microsoft.AspNetCore.Razor.TagHelpers.TagMode";
|
||||
|
||||
public string CreateTagHelperMethodName { get; set; } = "CreateTagHelper";
|
||||
|
||||
public override void WriteDeclareTagHelperFields(CSharpRenderingContext context, DeclareTagHelperFieldsIRNode node)
|
||||
{
|
||||
context.Writer.WriteLineHiddenDirective();
|
||||
|
|
@ -116,7 +120,19 @@ namespace Microsoft.AspNetCore.Razor.Evolution.CodeGeneration
|
|||
|
||||
public override void WriteCreateTagHelper(CSharpRenderingContext context, CreateTagHelperIRNode node)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
var tagHelperVariableName = GetTagHelperVariableName(node.TagHelperTypeName);
|
||||
|
||||
context.Writer
|
||||
.WriteStartAssignment(tagHelperVariableName)
|
||||
.WriteStartMethodInvocation(
|
||||
CreateTagHelperMethodName,
|
||||
"global::" + node.TagHelperTypeName)
|
||||
.WriteEndMethodInvocation();
|
||||
|
||||
context.Writer.WriteInstanceMethodInvocation(
|
||||
ExecutionContextVariableName,
|
||||
ExecutionContextAddMethodName,
|
||||
tagHelperVariableName);
|
||||
}
|
||||
|
||||
public override void WriteExecuteTagHelpers(CSharpRenderingContext context, ExecuteTagHelpersIRNode node)
|
||||
|
|
|
|||
|
|
@ -29,6 +29,32 @@ namespace Microsoft.AspNetCore.Razor.Evolution.CodeGeneration
|
|||
Assert.Equal(
|
||||
@"private global::PTagHelper __PTagHelper = null;
|
||||
private global::MyTagHelper __MyTagHelper = null;
|
||||
",
|
||||
csharp,
|
||||
ignoreLineEndingDifferences: true);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void WriteCreateTagHelper_RendersCorrectly_UsesSpecifiedTagHelperType()
|
||||
{
|
||||
// Arrange
|
||||
var writer = new DesignTimeTagHelperWriter();
|
||||
var context = new CSharpRenderingContext()
|
||||
{
|
||||
Writer = new Legacy.CSharpCodeWriter(),
|
||||
};
|
||||
var node = new CreateTagHelperIRNode()
|
||||
{
|
||||
TagHelperTypeName = "TestNamespace.MyTagHelper"
|
||||
};
|
||||
|
||||
// Act
|
||||
writer.WriteCreateTagHelper(context, node);
|
||||
|
||||
// Assert
|
||||
var csharp = context.Writer.Builder.ToString();
|
||||
Assert.Equal(
|
||||
@"__TestNamespace_MyTagHelper = CreateTagHelper<global::TestNamespace.MyTagHelper>();
|
||||
",
|
||||
csharp,
|
||||
ignoreLineEndingDifferences: true);
|
||||
|
|
|
|||
|
|
@ -119,6 +119,33 @@ private global::MyTagHelper __MyTagHelper = null;
|
|||
@"__tagHelperExecutionContext = __tagHelperScopeManager.Begin(""p"", global::Microsoft.AspNetCore.Razor.TagHelpers.TagMode.SelfClosing, ""test"", async() => {
|
||||
}
|
||||
);
|
||||
",
|
||||
csharp,
|
||||
ignoreLineEndingDifferences: true);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void WriteCreateTagHelper_RendersCorrectly_UsesSpecifiedTagHelperType()
|
||||
{
|
||||
// Arrange
|
||||
var writer = new RuntimeTagHelperWriter();
|
||||
var context = new CSharpRenderingContext()
|
||||
{
|
||||
Writer = new Legacy.CSharpCodeWriter(),
|
||||
};
|
||||
var node = new CreateTagHelperIRNode()
|
||||
{
|
||||
TagHelperTypeName = "TestNamespace.MyTagHelper"
|
||||
};
|
||||
|
||||
// Act
|
||||
writer.WriteCreateTagHelper(context, node);
|
||||
|
||||
// Assert
|
||||
var csharp = context.Writer.Builder.ToString();
|
||||
Assert.Equal(
|
||||
@"__TestNamespace_MyTagHelper = CreateTagHelper<global::TestNamespace.MyTagHelper>();
|
||||
__tagHelperExecutionContext.Add(__TestNamespace_MyTagHelper);
|
||||
",
|
||||
csharp,
|
||||
ignoreLineEndingDifferences: true);
|
||||
|
|
|
|||
Loading…
Reference in New Issue