コード例 #1
0
        public override JToken Execute(params JmesPathFunctionArgument[] args)
        {
            System.Diagnostics.Debug.Assert(args.Length == 3);
            System.Diagnostics.Debug.Assert(args[0].IsToken);
            System.Diagnostics.Debug.Assert(args[1].IsToken);
            System.Diagnostics.Debug.Assert(args[2].IsToken);

            var booleanResult = Evaluate(args[0]);

            var isFalse    = JTokens.IsFalse(booleanResult);
            var expression = JTokens.IsFalse(booleanResult)
                ? args[2]
                : args[1]
            ;

            return(Evaluate(expression));
        }
コード例 #2
0
        public override JmesPathArgument Project(JmesPathArgument argument)
        {
            if (argument.IsProjection)
            {
                argument = argument.AsJToken();
            }

            var items = new List <JmesPathArgument>();

            var array = argument.Token as JArray;

            if (array == null)
            {
                return(null);
            }

            foreach (var item in array)
            {
                if (JTokens.IsNull(item))
                {
                    continue;
                }

                var nested = item as JArray;
                if (nested == null)
                {
                    items.Add(item);
                }

                else
                {
                    items.AddRange(
                        nested
                        .Where(i => !JTokens.IsNull(i))
                        .Select(i => (JmesPathArgument)i)
                        );
                }
            }

            return(new JmesPathArgument(items));
        }
コード例 #3
0
        public static bool IsFalse(JmesPathArgument argument)
        {
            var token = argument.AsJToken();

            return(JTokens.IsFalse(token));
        }