private void Evaluate(ArgHook.HookContext context, string expressionText, bool not)
{
try
{
var newExpressionText = expressionText;
if(not)
{
newExpressionText = "!(" + expressionText + ")";
}
var expression = BooleanExpressionParser.Parse(newExpressionText);
var eval = expression.Evaluate(context.Definition.CreateVariableResolver());
if(not)
{
if (eval == true && context.CurrentArgument.RevivedValue == null)
{
if (TryPreventExceptionWithPrompt(context) == false)
{
throw new MissingArgException("The argument '" + context.CurrentArgument.DefaultAlias + "' is required if the following argument(s) are not specified: " + expressionText);
}
}
}
else
{
if (eval == true && context.CurrentArgument.RevivedValue == null)
{
if (TryPreventExceptionWithPrompt(context) == false)
{
throw new MissingArgException("The argument '" + context.CurrentArgument.DefaultAlias + "' is required if the following argument(s) are specified: " + expressionText);
}
}
}
}
catch(MissingArgException)
{
throw;
}
catch(REPLContinueException)
{
throw;
}
catch (Exception ex)
{
var targetText = context.CurrentArgument.DefaultAlias + " (" + expressionText + ")";
throw new InvalidArgDefinitionException("Failed to evaluate conditional ArgRequired clause on target '" + targetText + "'" + ex.Message);
}
}