public ModifierLeafSpec(string rawJsonKey, JToken rhsObj, OpMode opMode, IReadOnlyDictionary <string, IFunction> functionsMap) : base(rawJsonKey, opMode) { FunctionEvaluator functionEvaluator; // "key": "expression1" if (rhsObj.Type == JTokenType.String) { string s = rhsObj.ToString(); functionEvaluator = BuildFunctionEvaluator(s, functionsMap); _functionEvaluatorList.Add(functionEvaluator); } // "key": ["expression1", "expression2", "expression3"] else if (rhsObj is JArray rhsList && rhsList.Count > 0) { foreach (var rhs in rhsList) { if (rhs.Type == JTokenType.String) { functionEvaluator = BuildFunctionEvaluator(rhs.ToString(), functionsMap); _functionEvaluatorList.Add(functionEvaluator); } else { functionEvaluator = FunctionEvaluator.ForArgEvaluation(FunctionArg.ForLiteral(rhs, false)); _functionEvaluatorList.Add(functionEvaluator); } } }
private static JToken[] EvaluateArgsValue(FunctionArg[] functionArgs, JObject context, WalkedPath walkedPath) { JToken[] evaluatedArgs = new JToken[functionArgs.Length]; for (int i = 0; i < functionArgs.Length; i++) { FunctionArg arg = functionArgs[i]; evaluatedArgs[i] = arg.EvaluateArg(walkedPath, context); } return(evaluatedArgs); }
public static FunctionEvaluator ForArgEvaluation(FunctionArg functionArgs) { return(new FunctionEvaluator(null, functionArgs)); }