Functions/Logical/IfFunction.cs
using Expressive.Expressions;
using System;

namespace Expressive.Functions.Logical
{
    internal class IfFunction : FunctionBase
    {
        #region FunctionBase Members

        public override string Name { get { return "If"; } }

        public override object Evaluate(IExpression[] parameters, Context context)
        {
            this.ValidateParameterCount(parameters, 3, 3);

            bool condition = Convert.ToBoolean(parameters[0].Evaluate(Variables));

            return condition ? parameters[1].Evaluate(Variables) : parameters[2].Evaluate(Variables);
        }

        #endregion
    }
}