public Expressions.INode Parse(IExecutionContext executionContext, string condition) { ArgUtil.NotNull(executionContext, nameof(executionContext)); var expressionTrace = new TraceWriter(Trace, executionContext); var parser = new Expressions.Parser(); var namedValues = new Expressions.INamedValueInfo[] { new Expressions.NamedValueInfo <VariablesNode>(name: Constants.Expressions.Variables), }; var functions = new Expressions.IFunctionInfo[] { new Expressions.FunctionInfo <AlwaysNode>(name: Constants.Expressions.Always, minParameters: 0, maxParameters: 0), new Expressions.FunctionInfo <CanceledNode>(name: Constants.Expressions.Canceled, minParameters: 0, maxParameters: 0), new Expressions.FunctionInfo <FailedNode>(name: Constants.Expressions.Failed, minParameters: 0, maxParameters: 0), new Expressions.FunctionInfo <SucceededNode>(name: Constants.Expressions.Succeeded, minParameters: 0, maxParameters: 0), new Expressions.FunctionInfo <SucceededOrFailedNode>(name: Constants.Expressions.SucceededOrFailed, minParameters: 0, maxParameters: 0), }; return(parser.CreateTree(condition, expressionTrace, namedValues, functions) ?? new SucceededNode()); }
public bool Evaluate(IExecutionContext executionContext, string condition) { ArgUtil.NotNull(executionContext, nameof(executionContext)); // Parse the condition. var expressionTrace = new TraceWriter(executionContext); var parser = new DT.Parser(); var namedValues = new DT.INamedValueInfo[] { new DT.NamedValueInfo <VariablesNode>(name: Constants.Expressions.Variables), }; var functions = new DT.IFunctionInfo[] { new DT.FunctionInfo <SucceededNode>(name: Constants.Expressions.Succeeded, minParameters: 0, maxParameters: 0), new DT.FunctionInfo <SucceededOrFailedNode>(name: Constants.Expressions.SucceededOrFailed, minParameters: 0, maxParameters: 0), }; DT.INode tree = parser.CreateTree(condition, expressionTrace, namedValues, functions) ?? new SucceededNode(); // Evaluate the tree. return(tree.EvaluateBoolean(trace: expressionTrace, state: executionContext)); }