/// <summary> /// Evaluate the specified expression, for the given element and model. /// </summary> /// <param name="expression">The expression to evaluate.</param> /// <param name="context">The rendering context for the expression being evaluated.</param> /// <param name="model">The ZPT model, providing the context for evaluation.</param> public override ExpressionResult Evaluate(Expression expression, IRenderingContext context, ITalesModel model) { if(expression == null) { throw new ArgumentNullException(nameof(expression)); } if(context == null) { throw new ArgumentNullException(nameof(context)); } if(model == null) { throw new ArgumentNullException(nameof(model)); } var trimmedContent = expression.Content.TrimStart(); var result = model.Evaluate(ExpressionCreator.Create(trimmedContent), context); bool booleanResult = this.CoerceToBoolean(result); return new ExpressionResult(!booleanResult); }