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)); }
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)); }
public static bool IsFalse(JmesPathArgument argument) { var token = argument.AsJToken(); return(JTokens.IsFalse(token)); }