| namespace AppsheetEpplus; | |
| 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; } = FunctionRepository.Create(); | |
| private ParsingConfiguration() {} | |
| internal static ParsingConfiguration Create() { | |
| return new(); | |
| } | |
| 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; | |
| } | |
| /// <summary> | |
| /// Attaches a logger, errors and log entries will be written to the logger during the parsing process. | |
| /// </summary> | |
| /// <param name="logger"></param> | |
| /// <returns></returns> | |
| public ParsingConfiguration AttachLogger(IFormulaParserLogger logger) { | |
| Require.That(logger).Named("logger").IsNotNull(); | |
| Logger = logger; | |
| return this; | |
| } | |
| /// <summary> | |
| /// if a logger is attached it will be removed. | |
| /// </summary> | |
| /// <returns></returns> | |
| public ParsingConfiguration DetachLogger() { | |
| Logger = null; | |
| return this; | |
| } | |
| } |