using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
using OfficeOpenXml.FormulaParsing.LexicalAnalysis;
using OfficeOpenXml.FormulaParsing.ExpressionGraph;
using OfficeOpenXml.FormulaParsing.Excel.Functions;
using OfficeOpenXml.FormulaParsing.Logging;
using OfficeOpenXml.FormulaParsing.Utilities;
namespace OfficeOpenXml.FormulaParsing
{
public class ParsingConfiguration
{
public virtual ILexer Lexer { get; private set; }
public IFormulaParserLogger Logger { get; private set; }
public IExpressionGraphBuilder GraphBuilder { get; private set; }
public IExpressionCompiler ExpressionCompiler{ get; private set; }
public FunctionRepository FunctionRepository{ get; private set; }
private ParsingConfiguration()
{
FunctionRepository = FunctionRepository.Create();
}
internal static ParsingConfiguration Create()
{
return new ParsingConfiguration();
}
public ParsingConfiguration SetLexer(ILexer lexer)
{
Lexer = lexer;
return this;
}
public ParsingConfiguration SetGraphBuilder(IExpressionGraphBuilder graphBuilder)
{
GraphBuilder = graphBuilder;
return this;
}
public ParsingConfiguration SetExpresionCompiler(IExpressionCompiler expressionCompiler)
{
ExpressionCompiler = expressionCompiler;
return this;
}
///
/// Attaches a logger, errors and log entries will be written to the logger during the parsing process.
///
///
///
public ParsingConfiguration AttachLogger(IFormulaParserLogger logger)
{
Require.That(logger).Named("logger").IsNotNull();
Logger = logger;
return this;
}
///
/// if a logger is attached it will be removed.
///
///
public ParsingConfiguration DetachLogger()
{
Logger = null;
return this;
}
}
}