public override bool TryEvaluate(DynamicResources resources, IList <IValue> args, out IValue result) { Debug.Assert(this.Arity.HasValue && args.Count == this.Arity !.Value); var arg0 = args[0]; switch (arg0.Type) { case JmesPathType.Number: result = arg0; return(true); case JmesPathType.String: { var s = arg0.GetString(); Decimal dec; double dbl; if (Decimal.TryParse(s, out dec)) { result = new DecimalValue(dec); return(true); } else if (Double.TryParse(s, out dbl)) { result = new DoubleValue(dbl); return(true); } else { result = JsonConstants.Null; return(false); } } default: result = JsonConstants.Null; return(false); } }
public override bool TryEvaluate(DynamicResources resources, IList <IValue> args, out IValue result) { Debug.Assert(this.Arity.HasValue && args.Count == this.Arity !.Value); var arg0 = args[0]; if (arg0.Type != JmesPathType.Array || arg0.GetArrayLength() == 0) { result = JsonConstants.Null; return(false); } IValue sum; if (!SumFunction.Instance.TryEvaluate(resources, args, out sum)) { result = JsonConstants.Null; return(false); } Decimal decVal; double dblVal; if (sum.TryGetDecimal(out decVal)) { result = new DecimalValue(decVal / arg0.GetArrayLength()); return(true); } else if (sum.TryGetDouble(out dblVal)) { result = new DoubleValue(dblVal / arg0.GetArrayLength()); return(true); } else { result = JsonConstants.Null; return(false); } }