Ejemplo n.º 1
0
        public override JmesPathExpression Accept(ITransformVisitor visitor)
        {
            JmesPathExpression[] visitedExpressionsStorage = expressions_;
            JmesPathExpression[] visitedExpressions        = null;

            for (int i = 0, n = expressions_.Length; i < n; i++)
            {
                var expression        = expressions_[i];
                var visitedExpression = expression.Accept(visitor);

                // the first time we visited a transformed argument, allocate new
                // argument storage and copy any preceding untransformed arguments
                if (expression != visitedExpression && visitedExpressions == null)
                {
                    visitedExpressions        = new JmesPathExpression[n];
                    visitedExpressionsStorage = visitedExpressions;
                    if (i > 0)
                    {
                        Array.Copy(expressions_, visitedExpressions, i - 1);
                    }
                }

                visitedExpressionsStorage[i] = visitedExpression;
            }

            // if our visited argument storage array and the one backing this
            // instance are the same, then no arguments were transformed
            if (visitedExpressionsStorage == expressions_)
            {
                return(visitor.Visit(this));
            }

            return(visitor.Visit(new JmesPathFunctionExpression(name_, visitedExpressionsStorage, function_)));
        }
        public override JmesPathExpression Accept(ITransformVisitor visitor)
        {
            var visitedExpression = expression_.Accept(visitor);

            return(visitedExpression == expression_
                ? this
                : new JmesPathFilterProjection(visitedExpression));
        }
Ejemplo n.º 3
0
            public override JmesPathExpression Accept(ITransformVisitor visitor)
            {
                var visitedExpression = InnerExpression.Accept(visitor);

                return(visitor.Visit(visitedExpression == InnerExpression
                    ? this
                    : new Expression(visitedExpression)));
            }
        public sealed override JmesPathExpression Accept(ITransformVisitor visitor)
        {
            var left  = left_.Accept(visitor);
            var right = right_.Accept(visitor);

            return(visitor.Visit(left == left_ && right == right_
                ? this
                : CreateWith(left, right)));
        }
        public override JmesPathExpression Accept(ITransformVisitor visitor)
        {
            var anyChanged = false;
            var visited    = new Dictionary <string, JmesPathExpression>();

            foreach (var item in dictionary_)
            {
                var visitedItem = item.Value.Accept(visitor);
                visited[item.Key] = visitedItem;
                anyChanged       |= visitedItem != item.Value;
            }

            return(visitor.Visit(anyChanged
                ? new JmesPathMultiSelectHash(visited)
                : this));
        }
        public override JmesPathExpression Accept(ITransformVisitor visitor)
        {
            var anyChanged = false;
            var visited    = new List <JmesPathExpression>();

            foreach (var expression in expressions_)
            {
                var visitedExpression = expression.Accept(visitor);
                visited.Add(visitedExpression);
                anyChanged |= visitedExpression != expression;
            }

            return(visitor.Visit(anyChanged
                ? new JmesPathMultiSelectList(visited)
                : this));
        }
Ejemplo n.º 7
0
 public override void Transform(ITransformVisitor visitor)
 {
     visitor.Transform(this);
 }
Ejemplo n.º 8
0
 public override TOutput Transform <TOutput>(ITransformVisitor <TOutput> visitor)
 {
     return(visitor.Transform(this));
 }
 /// <summary>
 /// Perform a traversal and possible update of the abstract syntax tree.
 /// </summary>
 public virtual JmesPathExpression Accept(ITransformVisitor visitor)
 => visitor.Visit(this);
Ejemplo n.º 10
0
 public abstract void Transform(ITransformVisitor visitor);
Ejemplo n.º 11
0
 public abstract TOutput Transform <TOutput>(ITransformVisitor <TOutput> visitor);