using System;

namespace OfficeOpenXml.FormulaParsing.ExpressionGraph;

public static class ConstantExpressions {
  public static Expression Percent {
    get { return new ConstantExpression("Percent", () => new(0.01, DataType.Decimal)); }
  }
}

public class ConstantExpression : AtomicExpression {
  private readonly Func<CompileResult> _factoryMethod;

  public ConstantExpression(string title, Func<CompileResult> factoryMethod)
      : base(title) {
    _factoryMethod = factoryMethod;
  }

  public override CompileResult Compile() {
    return _factoryMethod();
  }
}
