protected void RenderCodeTo(TextWriter TextWriter) { var TemplateHandler = new TemplateParser(Tokens, TextWriter); var Context = new ParserNodeContext(TextWriter, TemplateFactory); TemplateHandler.Reset(); var ParserNode = TemplateHandler.HandleLevel_Root(); //OptimizedParserNode.Dump(); Context.WriteLine("using System;"); Context.WriteLine("using System.Collections.Generic;"); Context.WriteLine("using System.Threading.Tasks;"); Context.WriteLine("using CSharpUtils.Templates;"); Context.WriteLine("using CSharpUtils.Templates.Runtime;"); Context.WriteLine("using CSharpUtils.Templates.TemplateProvider;"); Context.WriteLine(""); //Context.WriteLine("namespace CSharpUtils.Templates.CompiledTemplates {"); Context.Indent(delegate() { Context.WriteLine("class CompiledTemplate_TempTemplate : TemplateCode {"); Context.Indent(delegate() { Context.WriteLine("public CompiledTemplate_TempTemplate(TemplateFactory TemplateFactory = null) : base(TemplateFactory) { }"); Context.WriteLine(""); Context.WriteLine("public override void SetBlocks(Dictionary<String, RenderDelegate> Blocks) {"); Context.Indent(delegate() { foreach (var BlockPair in TemplateHandler.Blocks) { Context.WriteLine(String.Format("SetBlock(Blocks, {0}, Block_{1});", StringUtils.EscapeString(BlockPair.Key), BlockPair.Key)); } }); Context.WriteLine("}"); Context.WriteLine(""); Context.WriteLine("async protected override Task LocalRenderAsync(TemplateContext Context) {"); Context.Indent(delegate() { ParserNode.OptimizeAndWrite(Context); }); Context.WriteLine("}"); // Method foreach (var BlockPair in TemplateHandler.Blocks) { Context.WriteLine(""); Context.WriteLine("public async Task Block_" + BlockPair.Key + "(TemplateContext Context) {"); Context.Indent(delegate() { BlockPair.Value.OptimizeAndWrite(Context); }); Context.WriteLine("}"); // Method } }); Context.WriteLine("}"); // class }); //Context.WriteLine("}"); // namespace }