Ejemplo n.º 1
0
        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);
                    }
                }
            }
Ejemplo n.º 2
0
 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);
 }
Ejemplo n.º 3
0
 public static FunctionEvaluator ForArgEvaluation(FunctionArg functionArgs)
 {
     return(new FunctionEvaluator(null, functionArgs));
 }