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; } } }