Example #1
0
        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
        }
 public override void WriteTo(ParserNodeContext Context)
 {
     Context.Write("Autoescape(Context, ");
     AutoescapeExpression.WriteTo(Context);
     Context.WriteLine(", new EmptyDelegate(async delegate() {");
     Body.WriteTo(Context);
     Context.WriteLine("}));");
 }