Esempio n. 1
0
        public override Statement Parse(ParseTreeNode node, ParserContext context)
        {
            var expression = DefaultFluidParser.BuildExpression(context.CurrentBlock.Tag.ChildNodes[0]);
            var statements = context.CurrentBlock.Statements;

            return(new DelegateStatement((writer, encoder, ctx) => WriteToAsync(writer, encoder, ctx, expression, statements)));
        }
        public Statement Parse(ParseTreeNode node, ParserContext context)
        {
            var expression = DefaultFluidParser.BuildExpression(node.ChildNodes[0].ChildNodes[0]);
            var arguments  = node.ChildNodes[0].ChildNodes[1].ChildNodes.Select(DefaultFluidParser.BuildFilterArgument).ToArray();

            return(new DelegateStatement((writer, encoder, ctx) => WriteToAsync(writer, encoder, ctx, expression, arguments)));
        }
Esempio n. 3
0
        public Statement Parse(ParseTreeNode node, ParserContext context)
        {
            var range = context.CurrentBlock.Tag.ChildNodes[0];

            return(new ForStatement(
                       context.CurrentBlock.Statements,
                       "i",
                       DefaultFluidParser.BuildRangeExpression(range),
                       null,
                       null,
                       false));
        }
Esempio n. 4
0
        public Statement Parse(ParseTreeNode node, ParserContext context)
        {
            var nodes     = node.ChildNodes[0].ChildNodes;
            var arguments = new FilterArgument[nodes.Count];

            for (var i = 0; i < nodes.Count; i++)
            {
                arguments[i] = DefaultFluidParser.BuildFilterArgument(nodes[i]);
            }

            return(new DelegateStatement((writer, encoder, ctx) => WriteToAsync(writer, encoder, ctx, arguments)));
        }
Esempio n. 5
0
        public Statement Parse(ParseTreeNode node, ParserContext context)
        {
            var identifier = node.ChildNodes[0].ChildNodes[0].Token.Text;
            var range      = node.ChildNodes[0].ChildNodes[1];

            return(new ForStatement(
                       new[] { new OutputStatement(new LiteralExpression(new StringValue(identifier))) },
                       identifier,
                       DefaultFluidParser.BuildRangeExpression(range),
                       null,
                       null,
                       false));
        }
Esempio n. 6
0
        public override Statement Parse(ParseTreeNode node, ParserContext context)
        {
            var e         = context.CurrentBlock.Tag.ChildNodes[0];
            var arguments = new FilterArgument[e.ChildNodes.Count];

            for (var i = 0; i < e.ChildNodes.Count; i++)
            {
                arguments[i] = DefaultFluidParser.BuildFilterArgument(e.ChildNodes[i]);
            }

            var statements = context.CurrentBlock.Statements;

            return(new DelegateStatement((writer, encoder, ctx) => WriteToAsync(writer, encoder, ctx, arguments, statements)));
        }
Esempio n. 7
0
        public static FilterArgument[] BuildArguments(ParseTreeNode node)
        {
            var arguments = node.ChildNodes[0].ChildNodes.Select(DefaultFluidParser.BuildFilterArgument).ToArray();

            var defaultArgument = node.ChildNodes[0].ChildNodes[0].ChildNodes[0];

            if (defaultArgument.Term.Name != "identifier")
            {
                if (DefaultArguments.TryGetValue(node.Term.Name, out var name))
                {
                    arguments[0] = new FilterArgument(name, DefaultFluidParser.BuildTermExpression(defaultArgument));
                }
            }

            return(arguments);
        }
Esempio n. 8
0
        public Statement Parse(ParseTreeNode node, ParserContext context)
        {
            var expression = DefaultFluidParser.BuildExpression(node.ChildNodes[0]);

            return(new DelegateStatement((writer, encoder, ctx) => WriteToAsync(writer, encoder, ctx, expression)));
        }