Beispiel #1
0
        /// <summary>
        /// Clones the <see cref="EvaluationContext"/> and returns a new one that contains the new variable
        /// </summary>
        private EvaluationContext GetScopeLocalContext(EvaluationContext ctx)
        {
            TemplateVariable variable;

            if (Value == null)
            {
                variable = new TemplateVariable(
                    value: null,
                    selectResolver: () => Value.ComputeSelect(ctx),
                    pathsResolver: () => Value.ComputePaths(ctx));
            }
            else
            {
                variable = new TemplateVariable(
                    evalAsync: () => Value.Evaluate(ctx),
                    selectResolver: () => Value.ComputeSelect(ctx),
                    pathsResolver: () => Value.ComputePaths(ctx));
            }

            var clone = ctx.Clone();

            clone.SetLocalVariable(VariableName, variable);

            return(clone);
        }
Beispiel #2
0
        /// <summary>
        /// Adds a local <see cref="TemplateVariable"/> to the context under the supplied name,
        /// overriding any existing <see cref="TemplateVariable"/> with the same name
        /// </summary>
        public void SetLocalVariable(string name, TemplateVariable variable)
        {
            if (_localVariables == null)
            {
                _localVariables = new VariablesDictionary();
            }

            _localVariables[name] = variable;
        }
Beispiel #3
0
 /// <summary>
 /// Retrieves the <see cref="TemplateVariable"/> from the context. Searches through the local variables first then falls back to the global
 /// </summary>
 /// <param name="variableName">The name to search for</param>
 /// <param name="variableEntry">The output result</param>
 /// <returns>True if the <see cref="TemplateVariable"/> was found, false otherwise</returns>
 public bool TryGetVariable(string variableName, out TemplateVariable variableEntry) =>
 (_localVariables != null && _localVariables.TryGetValue(variableName, out variableEntry)) || _globalVariables.TryGetValue(variableName, out variableEntry);