Modifying DefineSection to generate HelperResult types

This commit is contained in:
Pranav K 2014-03-31 21:11:39 -07:00
parent 3ce198249d
commit 9c4a6e901d
5 changed files with 31 additions and 25 deletions

View File

@ -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();
}

View File

@ -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)
});
}

View File

@ -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
}
);
));
}
}
}

View File

@ -102,11 +102,11 @@ namespace TestOutput
#line hidden
WriteLiteral("\r\n\r\n");
DefineSection("Foo", () => {
WriteLiteral("\r\n <a");
WriteAttribute("href", Tuple.Create(" href=\"", 500), Tuple.Create("\"", 512), Tuple.Create(Tuple.Create("", 507), Tuple.Create<System.Object, System.Int32>(Href("~/Foo"), 507), false));
WriteLiteral(">Foo</a>\r\n <a");
WriteAttribute("href", Tuple.Create(" href=\"", 529), Tuple.Create("\"", 558), Tuple.Create(Tuple.Create("", 536), Tuple.Create<System.Object, System.Int32>(Href("~/Products/"), 536), false),
DefineSection("Foo", new Template((__razor_template_writer) => {
WriteLiteralTo(__razor_template_writer, "\r\n <a");
WriteAttributeTo(__razor_template_writer, "href", Tuple.Create(" href=\"", 500), Tuple.Create("\"", 512), Tuple.Create(Tuple.Create("", 507), Tuple.Create<System.Object, System.Int32>(Href("~/Foo"), 507), false));
WriteLiteralTo(__razor_template_writer, ">Foo</a>\r\n <a");
WriteAttributeTo(__razor_template_writer, "href", Tuple.Create(" href=\"", 529), Tuple.Create("\"", 558), Tuple.Create(Tuple.Create("", 536), Tuple.Create<System.Object, System.Int32>(Href("~/Products/"), 536), false),
Tuple.Create(Tuple.Create("", 547), Tuple.Create<System.Object, System.Int32>(
#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("</a>\r\n <a");
WriteAttribute("href", Tuple.Create(" href=\"", 585), Tuple.Create("\"", 621), Tuple.Create(Tuple.Create("", 592), Tuple.Create<System.Object, System.Int32>(Href("~/Products/"), 592), false),
WriteLiteralTo(__razor_template_writer, "</a>\r\n <a");
WriteAttributeTo(__razor_template_writer, "href", Tuple.Create(" href=\"", 585), Tuple.Create("\"", 621), Tuple.Create(Tuple.Create("", 592), Tuple.Create<System.Object, System.Int32>(Href("~/Products/"), 592), false),
Tuple.Create(Tuple.Create("", 603), Tuple.Create<System.Object, System.Int32>(
#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</a>\r\n <a");
WriteAttribute("href", Tuple.Create(" href=\"", 642), Tuple.Create("\"", 697), Tuple.Create(Tuple.Create("", 649), Tuple.Create<System.Object, System.Int32>(Href("~/A+Really(Crazy),Url.Is:This/"), 649), false),
WriteLiteralTo(__razor_template_writer, ">Details</a>\r\n <a");
WriteAttributeTo(__razor_template_writer, "href", Tuple.Create(" href=\"", 642), Tuple.Create("\"", 697), Tuple.Create(Tuple.Create("", 649), Tuple.Create<System.Object, System.Int32>(Href("~/A+Really(Crazy),Url.Is:This/"), 649), false),
Tuple.Create(Tuple.Create("", 679), Tuple.Create<System.Object, System.Int32>(
#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!</a>\r\n");
WriteLiteralTo(__razor_template_writer, ">Crazy Url!</a>\r\n");
}
);
));
}
}
}

View File

@ -20,15 +20,15 @@ namespace TestOutput
#line hidden
WriteLiteral("\r\n\r\n<div>This is in the Body>\r\n\r\n");
DefineSection("Section2", () => {
WriteLiteral("\r\n <div>This is in Section 2</div>\r\n");
DefineSection("Section2", new Template((__razor_template_writer) => {
WriteLiteralTo(__razor_template_writer, "\r\n <div>This is in Section 2</div>\r\n");
}
);
));
WriteLiteral("\r\n");
DefineSection("Section1", () => {
WriteLiteral("\r\n <div>This is in Section 1</div>\r\n");
DefineSection("Section1", new Template((__razor_template_writer) => {
WriteLiteralTo(__razor_template_writer, "\r\n <div>This is in Section 1</div>\r\n");
}
);
));
}
}
}