override public void WriteTo(ParserNodeContext Context)
		{
			foreach (var Node in Nodes)
			{
				Node.WriteTo(Context);
			}
		}
 public override void WriteTo(ParserNodeContext Context)
 {
     Context.Write(Context._GetContextWriteAutoFilteredMethod() + "(");
     Parent.WriteTo(Context);
     Context.Write(");");
     Context.WriteLine("");
 }
Beispiel #3
0
 override public void WriteTo(ParserNodeContext Context)
 {
     Context.Write("Context.OutputWriteAutoFiltered(");
     Parent.WriteTo(Context);
     Context.Write(");");
     Context.WriteLine("");
 }
Beispiel #4
0
        override public void WriteTo(ParserNodeContext Context)
        {
            //DynamicUtils.CountArray

            //Foreach(TemplateContext Context, String VarName, dynamic Expression, Action Iteration, Action Else = null)

            Context.WriteLine("Context.NewScope(delegate() {");
            Context.Indent(delegate()
            {
                Context.Write("Foreach(Context, {0}, ", StringUtils.EscapeString(VarName));
                Context.Indent(delegate()
                {
                    LoopIterator.WriteTo(Context);
                });
                Context.Write(", ");
                Context.WriteLine("new EmptyDelegate(delegate() {");
                Context.Indent(delegate()
                {
                    BodyBlock.WriteTo(Context);
                });
                Context.Write("})");
                if (!(ElseBlock is DummyParserNode))
                {
                    Context.Write(", ");
                    Context.WriteLine("new EmptyDelegate(delegate() {");
                    ElseBlock.WriteTo(Context);
                    Context.Write("})");
                }
                Context.WriteLine(");");          // Foreach
            });
            Context.WriteLine("});");             // Context.NewScope
        }
        public override ParserNode Optimize(ParserNodeContext Context)
        {
            var That = CreateThisInstanceAs <ParserNodeParent>();

            That.Parent = Parent.Optimize(Context);
            return(That);
        }
Beispiel #6
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
		}
		public override void WriteTo(ParserNodeContext Context)
		{
			//DynamicUtils.CountArray

			//Foreach(TemplateContext Context, String VarName, dynamic Expression, Action Iteration, Action Else = null)

			Context.WriteLine("Context.NewScope(delegate() {");
			Context.Indent(delegate()
			{
				Context.Write("Foreach(Context, {0}, ", StringUtils.EscapeString(VarName));
				Context.Indent(delegate()
				{
					LoopIterator.WriteTo(Context);
				});
				Context.Write(", ");
				Context.WriteLine("new EmptyDelegate(async delegate() {");
				Context.Indent(delegate()
				{
					BodyBlock.WriteTo(Context);
				});
				Context.Write("})");
				if (!(ElseBlock is DummyParserNode))
				{
					Context.Write(", ");
					Context.WriteLine("new EmptyDelegate(async delegate() {");
					ElseBlock.WriteTo(Context);
					Context.Write("})");
				}
				Context.WriteLine(");");  // Foreach
			});
			Context.WriteLine("});"); // Context.NewScope
		}
        override public ParserNode Optimize(ParserNodeContext Context)
        {
            var LeftNodeOptimized  = LeftNode.Optimize(Context);
            var RightNodeOptimized = RightNode.Optimize(Context);

            if ((LeftNodeOptimized is ParserNodeNumericLiteral) && (RightNodeOptimized is ParserNodeNumericLiteral))
            {
                var LeftNodeLiteral  = (ParserNodeNumericLiteral)LeftNodeOptimized;
                var RightNodeLiteral = (ParserNodeNumericLiteral)RightNodeOptimized;
                switch (Operator)
                {
                case "+": return(new ParserNodeNumericLiteral()
                    {
                        Value = LeftNodeLiteral.Value + RightNodeLiteral.Value,
                    });

                case "-": return(new ParserNodeNumericLiteral()
                    {
                        Value = LeftNodeLiteral.Value - RightNodeLiteral.Value,
                    });

                case "*": return(new ParserNodeNumericLiteral()
                    {
                        Value = LeftNodeLiteral.Value * RightNodeLiteral.Value,
                    });

                case "/": return(new ParserNodeNumericLiteral()
                    {
                        Value = LeftNodeLiteral.Value / RightNodeLiteral.Value,
                    });
                }
            }
            return(this);
        }
 public override void WriteTo(ParserNodeContext Context)
 {
     Context.Write("SetAndRenderParentTemplate(");
     Parent.WriteTo(Context);
     Context.Write(", Context);");
     Context.WriteLine("");
 }
		override public void WriteTo(ParserNodeContext Context)
		{
			Context.Write(Context._GetContextWriteAutoFilteredMethod() + "(");
			Parent.WriteTo(Context);
			Context.Write(");");
			Context.WriteLine("");
		}
 public override void WriteTo(ParserNodeContext Context)
 {
     foreach (var Node in Nodes)
     {
         Node.WriteTo(Context);
     }
 }
		public override void WriteTo(ParserNodeContext Context)
		{
			Context.Write("Autoescape(Context, ");
			AutoescapeExpression.WriteTo(Context);
			Context.WriteLine(", new EmptyDelegate(async delegate() {");
			Body.WriteTo(Context);
			Context.WriteLine("}));");
		}
		override public void WriteTo(ParserNodeContext Context)
		{
			//Context.Write("await " + ((Func<string, TemplateContext, Task>)TemplateCode.Methods.SetAndRenderParentTemplateAsync).Method.Name + "(");
			Context.Write("await SetAndRenderParentTemplateAsync(");
			Parent.WriteTo(Context);
			Context.Write(", Context);");
			Context.WriteLine("");
		}
Beispiel #14
0
		override public void WriteTo(ParserNodeContext Context)
		{
			Context.Write("DynamicUtils.Access(");
			Parent.WriteTo(Context);
			Context.Write(",");
			Key.WriteTo(Context);
			Context.Write(")");
		}
 public override void WriteTo(ParserNodeContext Context)
 {
     Context.Write("DynamicUtils.Access(");
     Parent.WriteTo(Context);
     Context.Write(",");
     Key.WriteTo(Context);
     Context.Write(")");
 }
Beispiel #16
0
 public override void WriteTo(ParserNodeContext Context)
 {
     Context.Write("Autoescape(Context, ");
     AutoescapeExpression.WriteTo(Context);
     Context.WriteLine(", new EmptyDelegate(delegate() {");
     Body.WriteTo(Context);
     Context.WriteLine("}));");
 }
 override public void WriteTo(ParserNodeContext Context)
 {
     Context.Write("DynamicUtils.BinaryOperation_" + DynamicUtils.GetOpName(Operator) + "(");
     LeftNode.WriteTo(Context);
     Context.Write(",");
     RightNode.WriteTo(Context);
     Context.Write(")");
 }
		public override void WriteTo(ParserNodeContext Context)
		{
			Context.Write("DynamicUtils.BinaryOperation_" + DynamicUtils.GetOpName(Operator) + "(");
			LeftNode.WriteTo(Context);
			Context.Write(",");
			RightNode.WriteTo(Context);
			Context.Write(")");
		}
		override public ParserNode Optimize(ParserNodeContext Context)
		{
			ParserNodeContainer OptimizedNode = CreateThisInstanceAs<ParserNodeContainer>();
			foreach (var Node in Nodes)
			{
				OptimizedNode.Add(Node.Optimize(Context));
			}
			return OptimizedNode;
		}
Beispiel #20
0
		public override void WriteTo(ParserNodeContext Context)
		{
			Context.Write("Context.CallFilter({0}", StringUtils.EscapeString(FilterName));
			foreach (var Param in Params)
			{
				Context.Write(", ");
				Param.WriteTo(Context);
			}
			Context.Write(")");
		}
		override public void WriteTo(ParserNodeContext Context)
		{
			switch (Name)
			{
				case "true": Context.Write("true"); break;
				case "false": Context.Write("false"); break;
				case "none": Context.Write("null"); break;
				default: throw (new Exception(String.Format("Unknown constant '{0}'", Name)));
			}
		}
Beispiel #22
0
 public override void WriteTo(ParserNodeContext Context)
 {
     Context.Write("Context.CallFilter({0}", StringUtils.EscapeString(FilterName));
     foreach (var Param in Params)
     {
         Context.Write(", ");
         Param.WriteTo(Context);
     }
     Context.Write(")");
 }
        public override ParserNode Optimize(ParserNodeContext Context)
        {
            ParserNodeContainer OptimizedNode = CreateThisInstanceAs <ParserNodeContainer>();

            foreach (var Node in Nodes)
            {
                OptimizedNode.Add(Node.Optimize(Context));
            }
            return(OptimizedNode);
        }
        public override void WriteTo(ParserNodeContext Context)
        {
            switch (Name)
            {
            case "true": Context.Write("true"); break;

            case "false": Context.Write("false"); break;

            case "none": Context.Write("null"); break;

            default: throw(new Exception(String.Format("Unknown constant '{0}'", Name)));
            }
        }
 public override void WriteTo(ParserNodeContext Context)
 {
     Context.Write("if (DynamicUtils.ConvertToBool(");
     ConditionNode.WriteTo(Context);
     Context.Write(")) {");
     Context.WriteLine("");
     BodyIfNode.WriteTo(Context);
     Context.Write("}");
     if (!(BodyElseNode is DummyParserNode))
     {
         Context.Write(" else {");
         BodyElseNode.WriteTo(Context);
         Context.Write("}");
     }
     Context.WriteLine("");
 }
Beispiel #26
0
		override public void WriteTo(ParserNodeContext Context)
		{
			Context.Write("if (DynamicUtils.ConvertToBool(");
			ConditionNode.WriteTo(Context);
			Context.Write(")) {");
			Context.WriteLine("");
			BodyIfNode.WriteTo(Context);
			Context.Write("}");
			if (!(BodyElseNode is DummyParserNode))
			{
				Context.Write(" else {");
				BodyElseNode.WriteTo(Context);
				Context.Write("}");
			}
			Context.WriteLine("");
		}
		public override ParserNode Optimize(ParserNodeContext Context)
		{
			var LeftNodeOptimized = LeftNode.Optimize(Context);
			var RightNodeOptimized = RightNode.Optimize(Context);

			if ((LeftNodeOptimized is ParserNodeNumericLiteral) && (RightNodeOptimized is ParserNodeNumericLiteral))
			{
				var LeftNodeLiteral = (ParserNodeNumericLiteral)LeftNodeOptimized;
				var RightNodeLiteral = (ParserNodeNumericLiteral)RightNodeOptimized;
				switch (Operator)
				{
					case "+": return new ParserNodeNumericLiteral() { Value = LeftNodeLiteral.Value + RightNodeLiteral.Value, };
					case "-": return new ParserNodeNumericLiteral() { Value = LeftNodeLiteral.Value - RightNodeLiteral.Value, };
					case "*": return new ParserNodeNumericLiteral() { Value = LeftNodeLiteral.Value * RightNodeLiteral.Value, };
					case "/": return new ParserNodeNumericLiteral() { Value = LeftNodeLiteral.Value / RightNodeLiteral.Value, };
				}
			}
			return this;
		}
		override public void WriteTo(ParserNodeContext Context)
		{
			switch (Operator)
			{
				case "?":
					Context.Write("DynamicUtils.ConvertToBool(");
					ConditionNode.WriteTo(Context);
					Context.Write(")");
					Context.Write("?");
					Context.Write("(");
					TrueNode.WriteTo(Context);
					Context.Write(")");
					Context.Write(":");
					Context.Write("(");
					FalseNode.WriteTo(Context);
					Context.Write(")");
					break;
				default:
					throw (new Exception(String.Format("Unknown Operator '{0}'", Operator)));
			}
		}
        public override void WriteTo(ParserNodeContext Context)
        {
            switch (Operator)
            {
            case "?":
                Context.Write("DynamicUtils.ConvertToBool(");
                ConditionNode.WriteTo(Context);
                Context.Write(")");
                Context.Write("?");
                Context.Write("(");
                TrueNode.WriteTo(Context);
                Context.Write(")");
                Context.Write(":");
                Context.Write("(");
                FalseNode.WriteTo(Context);
                Context.Write(")");
                break;

            default:
                throw (new Exception(String.Format("Unknown Operator '{0}'", Operator)));
            }
        }
		override public void WriteTo(ParserNodeContext Context)
		{
			Context.Write("{0}(", Operator);
			Parent.WriteTo(Context);
			Context.Write(")");
		}
 public override void WriteTo(ParserNodeContext Context)
 {
     Context.WriteLine("CallParentBlock({0}, Context);", StringUtils.EscapeString(BlockName));
 }
 public override void WriteTo(ParserNodeContext Context)
 {
     Context.Write("{0}(", Operator);
     Parent.WriteTo(Context);
     Context.Write(")");
 }
		override public void WriteTo(ParserNodeContext Context)
		{
			Context.WriteLine("await CallBlockAsync({0}, Context);", StringUtils.EscapeString(this.BlockName));
			Context.WriteLine("");
		}
 public override void WriteTo(ParserNodeContext Context)
 {
     Context.Write("Context.GetVar({0})", StringUtils.EscapeString(Id));
 }
 public virtual ParserNode Optimize(ParserNodeContext Context)
 {
     return(this);
 }
Beispiel #36
0
 override public void WriteTo(ParserNodeContext Context)
 {
     //Context.Write("Context.Output.Write(Context.AutoFilter({0}));", StringUtils.EscapeString(Text));
     Context.Write("Context.Output.Write({0});", StringUtils.EscapeString(Text));
     Context.WriteLine("");
 }
		override public void WriteTo(ParserNodeContext Context)
		{
			Context.Write("Context.GetVar({0})", StringUtils.EscapeString(Id));
		}
 public override void GenerateIL(ILGenerator ILGenerator, ParserNodeContext Context)
 {
     ILGenerator.Emit(OpCodes.Ldstr, Value);
 }
 public override void WriteTo(ParserNodeContext Context)
 {
     Context.Write(StringUtils.EscapeString(Value));
 }
 public virtual void WriteTo(ParserNodeContext Context)
 {
 }
 public override void WriteTo(ParserNodeContext Context)
 {
     Context.Write("{0}", Value);
 }
		override public void GenerateIL(ILGenerator ILGenerator, ParserNodeContext Context)
		{
			ILGenerator.Emit(OpCodes.Ldstr, Value);
		}
 internal void OptimizeAndWrite(ParserNodeContext Context)
 {
     Optimize(Context).WriteTo(Context);
 }
		override public void WriteTo(ParserNodeContext Context)
		{
			//Context.Write("Context.Output.Write(Context.AutoFilter({0}));", StringUtils.EscapeString(Text));
			Context.Write("{0}({1});", Context._GetContextWriteMethod(), StringUtils.EscapeString(Text));
			Context.WriteLine("");
		}
		override public void WriteTo(ParserNodeContext Context)
		{
			Context.Write("{0}", Value);
		}
 public virtual void GenerateIL(ILGenerator ILGenerator, ParserNodeContext Context)
 {
     throw(new NotImplementedException());
 }
		override public void WriteTo(ParserNodeContext Context)
		{
			Context.Write(StringUtils.EscapeString(Value));
		}
 public override void WriteTo(ParserNodeContext Context)
 {
     //Context.Write("Context.Output.Write(Context.AutoFilter({0}));", StringUtils.EscapeString(Text));
     Context.Write("{0}({1});", Context._GetContextWriteMethod(), StringUtils.EscapeString(Text));
     Context.WriteLine("");
 }
Beispiel #49
0
		override public ParserNode Optimize(ParserNodeContext Context)
		{
			var That = CreateThisInstanceAs<ParserNodeParent>();
			That.Parent = Parent.Optimize(Context);
			return That;
		}
Beispiel #50
0
 override public void WriteTo(ParserNodeContext Context)
 {
     Context.WriteLine("CallBlock({0}, Context);", StringUtils.EscapeString(this.BlockName));
     Context.WriteLine("");
 }
		override public void WriteTo(ParserNodeContext Context)
		{
			Context.WriteLine("CallParentBlock({0}, Context);", StringUtils.EscapeString(BlockName));
		}