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 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("override public 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("override protected void LocalRender(TemplateContext Context) {");
Context.Indent(delegate()
{
ParserNode.OptimizeAndWrite(Context);
});
Context.WriteLine("}"); // Method
foreach (var BlockPair in TemplateHandler.Blocks)
{
Context.WriteLine("");
Context.WriteLine("public void Block_" + BlockPair.Key + "(TemplateContext Context) {");
Context.Indent(delegate()
{
BlockPair.Value.OptimizeAndWrite(Context);
});
Context.WriteLine("}"); // Method
}
});
Context.WriteLine("}"); // class
});
Context.WriteLine("}"); // namespace
}