From 9c4a6e901d5f7129f8623e5b9d48a8164b235e62 Mon Sep 17 00:00:00 2001 From: Pranav K Date: Mon, 31 Mar 2014 21:11:39 -0700 Subject: [PATCH] Modifying DefineSection to generate HelperResult types --- .../CSharp/Visitors/CSharpCodeVisitor.cs | 12 ++++++--- .../Generator/CSharpRazorCodeGeneratorTest.cs | 2 +- .../CodeGenerator/CS/Output/DesignTime.cs | 4 +-- .../CodeGenerator/CS/Output/ResolveUrl.cs | 26 +++++++++---------- .../CodeGenerator/CS/Output/Sections.cs | 12 ++++----- 5 files changed, 31 insertions(+), 25 deletions(-) diff --git a/src/Microsoft.AspNet.Razor/Generator/Compiler/CodeBuilder/CSharp/Visitors/CSharpCodeVisitor.cs b/src/Microsoft.AspNet.Razor/Generator/Compiler/CodeBuilder/CSharp/Visitors/CSharpCodeVisitor.cs index 6e4748ebca..330f8e7834 100644 --- a/src/Microsoft.AspNet.Razor/Generator/Compiler/CodeBuilder/CSharp/Visitors/CSharpCodeVisitor.cs +++ b/src/Microsoft.AspNet.Razor/Generator/Compiler/CodeBuilder/CSharp/Visitors/CSharpCodeVisitor.cs @@ -272,13 +272,19 @@ namespace Microsoft.AspNet.Razor.Generator.Compiler.CSharp { Writer.WriteStartMethodInvocation(Context.Host.GeneratedClassContext.DefineSectionMethodName) .WriteStringLiteral(chunk.Name) - .WriteParameterSeparator(); + .WriteParameterSeparator() + .WriteStartNewObject(Context.Host.GeneratedClassContext.TemplateTypeName); - using (Writer.BuildLambda(false)) + var currentTargetWriterName = Context.TargetWriterName; + Context.TargetWriterName = TemplateWriterName; + + using (Writer.BuildLambda(endLine: false, parameterNames: TemplateWriterName)) { Accept(chunk.Children); } - + Context.TargetWriterName = currentTargetWriterName; + + Writer.WriteEndMethodInvocation(endLine: false); Writer.WriteEndMethodInvocation(); } diff --git a/test/Microsoft.AspNet.Razor.Test/Generator/CSharpRazorCodeGeneratorTest.cs b/test/Microsoft.AspNet.Razor.Test/Generator/CSharpRazorCodeGeneratorTest.cs index 3b665ecc41..a129bfe43f 100644 --- a/test/Microsoft.AspNet.Razor.Test/Generator/CSharpRazorCodeGeneratorTest.cs +++ b/test/Microsoft.AspNet.Razor.Test/Generator/CSharpRazorCodeGeneratorTest.cs @@ -295,7 +295,7 @@ namespace Microsoft.AspNet.Razor.Test.Generator BuildLineMapping(129, 8, 1, 1380, 75, 6, 4), BuildLineMapping(142, 8, 1505, 77, 14, 3), BuildLineMapping(153, 8, 1602, 84, 25, 1), - BuildLineMapping(204, 13, 5, 1775, 94, 6, 3) + BuildLineMapping(204, 13, 5, 1811, 94, 6, 3) }); } diff --git a/test/Microsoft.AspNet.Razor.Test/TestFiles/CodeGenerator/CS/Output/DesignTime.cs b/test/Microsoft.AspNet.Razor.Test/TestFiles/CodeGenerator/CS/Output/DesignTime.cs index 1ecf5ac918..d9e070e00a 100644 --- a/test/Microsoft.AspNet.Razor.Test/TestFiles/CodeGenerator/CS/Output/DesignTime.cs +++ b/test/Microsoft.AspNet.Razor.Test/TestFiles/CodeGenerator/CS/Output/DesignTime.cs @@ -90,14 +90,14 @@ __o = Foo(item => new Template((__razor_template_writer) => { #line default #line hidden - DefineSection("Footer", () => { + DefineSection("Footer", new Template((__razor_template_writer) => { #line 1 "------------------------------------------" __o = bar; #line default #line hidden } - ); + )); } } } diff --git a/test/Microsoft.AspNet.Razor.Test/TestFiles/CodeGenerator/CS/Output/ResolveUrl.cs b/test/Microsoft.AspNet.Razor.Test/TestFiles/CodeGenerator/CS/Output/ResolveUrl.cs index 9fd1870745..a4eba779af 100644 --- a/test/Microsoft.AspNet.Razor.Test/TestFiles/CodeGenerator/CS/Output/ResolveUrl.cs +++ b/test/Microsoft.AspNet.Razor.Test/TestFiles/CodeGenerator/CS/Output/ResolveUrl.cs @@ -102,11 +102,11 @@ namespace TestOutput #line hidden WriteLiteral("\r\n\r\n"); - DefineSection("Foo", () => { - WriteLiteral("\r\n (Href("~/Foo"), 507), false)); - WriteLiteral(">Foo\r\n (Href("~/Products/"), 536), false), + DefineSection("Foo", new Template((__razor_template_writer) => { + WriteLiteralTo(__razor_template_writer, "\r\n (Href("~/Foo"), 507), false)); + WriteLiteralTo(__razor_template_writer, ">Foo\r\n (Href("~/Products/"), 536), false), Tuple.Create(Tuple.Create("", 547), Tuple.Create( #line 17 "ResolveUrl.cshtml" product.id @@ -114,8 +114,8 @@ namespace TestOutput #line default #line hidden , 547), false)); - WriteLiteral(">"); - Write( + WriteLiteralTo(__razor_template_writer, ">"); + WriteTo(__razor_template_writer, #line 17 "ResolveUrl.cshtml" product.Name @@ -123,8 +123,8 @@ namespace TestOutput #line hidden ); - WriteLiteral("\r\n (Href("~/Products/"), 592), false), + WriteLiteralTo(__razor_template_writer, "\r\n (Href("~/Products/"), 592), false), Tuple.Create(Tuple.Create("", 603), Tuple.Create( #line 18 "ResolveUrl.cshtml" product.id @@ -132,8 +132,8 @@ namespace TestOutput #line default #line hidden , 603), false), Tuple.Create(Tuple.Create("", 614), Tuple.Create("/Detail", 614), true)); - WriteLiteral(">Details\r\n (Href("~/A+Really(Crazy),Url.Is:This/"), 649), false), + WriteLiteralTo(__razor_template_writer, ">Details\r\n (Href("~/A+Really(Crazy),Url.Is:This/"), 649), false), Tuple.Create(Tuple.Create("", 679), Tuple.Create( #line 19 "ResolveUrl.cshtml" product.id @@ -141,9 +141,9 @@ namespace TestOutput #line default #line hidden , 679), false), Tuple.Create(Tuple.Create("", 690), Tuple.Create("/Detail", 690), true)); - WriteLiteral(">Crazy Url!\r\n"); + WriteLiteralTo(__razor_template_writer, ">Crazy Url!\r\n"); } - ); + )); } } } diff --git a/test/Microsoft.AspNet.Razor.Test/TestFiles/CodeGenerator/CS/Output/Sections.cs b/test/Microsoft.AspNet.Razor.Test/TestFiles/CodeGenerator/CS/Output/Sections.cs index 7ef2d0e5d1..b178249c93 100644 --- a/test/Microsoft.AspNet.Razor.Test/TestFiles/CodeGenerator/CS/Output/Sections.cs +++ b/test/Microsoft.AspNet.Razor.Test/TestFiles/CodeGenerator/CS/Output/Sections.cs @@ -20,15 +20,15 @@ namespace TestOutput #line hidden WriteLiteral("\r\n\r\n
This is in the Body>\r\n\r\n"); - DefineSection("Section2", () => { - WriteLiteral("\r\n
This is in Section 2
\r\n"); + DefineSection("Section2", new Template((__razor_template_writer) => { + WriteLiteralTo(__razor_template_writer, "\r\n
This is in Section 2
\r\n"); } - ); + )); WriteLiteral("\r\n"); - DefineSection("Section1", () => { - WriteLiteral("\r\n
This is in Section 1
\r\n"); + DefineSection("Section1", new Template((__razor_template_writer) => { + WriteLiteralTo(__razor_template_writer, "\r\n
This is in Section 1
\r\n"); } - ); + )); } } }