Ejemplo n.º 1
0
        public void Visit(PickStatement statement)
        {
            var selectInfo = new SelectArgsInfo()
            {
                IsPickStatement = true
            };

            VerifyCssSelector(statement.Selector, new Semantic.LineInfo(statement.Line.Line, statement.Line.CharacterPosition));

            var expression = new CodeMethodInvokeExpression(
                new CodeTypeReferenceExpression("node"),
                "Pick",
                new CodePrimitiveExpression(statement.Selector)
                );

            var takeDomArg     = VisitChild(statement.TakeStatement);
            var takeExpression = takeDomArg.CodeExpression as CodeMethodInvokeExpression;

            takeExpression.Method.TargetObject = expression;

            var aggExpression = takeExpression;

            foreach (var match in statement.Matches)
            {
                if (match.Replace != null)
                {
                    aggExpression = new CodeMethodInvokeExpression(aggExpression, "MatchReplace", new CodePrimitiveExpression(match.Value), new CodePrimitiveExpression(match.Replace.Value));
                }
                else // no replace
                {
                    aggExpression = new CodeMethodInvokeExpression(aggExpression, "Match", new CodePrimitiveExpression(match.Value));
                }
            }

            _codeStack.Peek().Tag            = selectInfo;
            _codeStack.Peek().CodeExpression = aggExpression;
            _codeStack.Peek().Scope          = new ScopeData <Type> {
                Type = typeof(string), CodeDomReference = new CodeTypeReference(typeof(string))
            };
        }
Ejemplo n.º 2
0
        public void Visit(PickStatement statement)
        {
            VerifyCssSelector(statement.Selector, new Semantic.LineInfo(statement.Line.Line, statement.Line.CharacterPosition));

            _codeStack.Peek()
            .ParentStatements.Add(new CodeMethodInvokeExpression(new CodeTypeReferenceExpression("result"),
                                                                 "AddColumn",
                                                                 new CodePrimitiveExpression(statement.Selector)));

            var expression = new CodeMethodInvokeExpression(
                new CodeTypeReferenceExpression("node"),
                "Pick",
                new CodePrimitiveExpression(statement.Selector)
                );


            var takeDomArg     = VisitChild(statement.TakeStatement);
            var takeExpression = takeDomArg.CodeExpression as CodeMethodInvokeExpression;

            takeExpression.Method.TargetObject = expression;

            if (statement.Match != null && statement.Match.Replace != null)
            {
                takeExpression = new CodeMethodInvokeExpression(takeExpression, "MatchReplace", new CodePrimitiveExpression(statement.Match.Value), new CodePrimitiveExpression(statement.Match.Replace.Value));
            }
            else if (statement.Match != null)
            {
                takeExpression = new CodeMethodInvokeExpression(takeExpression, "Match", new CodePrimitiveExpression(statement.Match.Value));
            }

            _codeStack.Peek().Tag            = true;
            _codeStack.Peek().CodeExpression = takeExpression;
            _codeStack.Peek().Scope          = new ScopeData <Type> {
                Type = typeof(string), CodeDomReference = new CodeTypeReference(typeof(string))
            };
        }
Ejemplo n.º 3
0
 public void Visit(PickStatement statement, CommonTree tree)
 {
     Parent(tree).Children.Add(statement);
     SetLine(statement, tree);
     VisitChildren(tree);
 }