예제 #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 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
		}
        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
        }