Example #1
0
        public override void Load()
        {
            // Pooling
            Bind <ObjectPool <Stack <InternalEvaluatorValue> > >()
            .ToConstant(ObjectPool.Create <Stack <InternalEvaluatorValue> >())
            .InSingletonScope();

            Bind <ObjectPool <List <InternalEvaluatorValue> > >()
            .ToConstant(ObjectPool.Create <List <InternalEvaluatorValue> >())
            .InSingletonScope();

            Bind <ObjectPool <ExtraTypeIdContainer> >()
            .ToConstant(ObjectPool.Create <ExtraTypeIdContainer>())
            .InSingletonScope();

            // Parser
            Bind <IFormulaCache>().To <FormulaCache>().InSingletonScope();
            Bind <IFunctionReader>().To <FunctionReader>().InSingletonScope();
            Bind <IFormulaParser>().To <FormulaParser>().InSingletonScope();

            // Checker
            Bind <IFormulaChecker>().To <FormulaChecker>().InSingletonScope();

            // Evaluator
            Bind <INoStringEvaluator>().To <NoStringEvaluator>().InSingletonScope();

            // Options
            NoStringEvaluatorOptions opt = new NoStringEvaluatorOptions().SetWordQuotationMark("!");

            opt.UpdateConstants();

            // If needed
            InjectUserDefinedFunctions();
        }
Example #2
0
        /// <summary>
        /// Add NoString math evaluator
        /// </summary>
        public static IServiceCollection AddNoStringEvaluator(this IServiceCollection services, Action <NoStringEvaluatorOptions> options = null)
        {
            // Pooling
            services.TryAddSingleton(ObjectPool.Create <Stack <InternalEvaluatorValue> >());
            services.TryAddSingleton(ObjectPool.Create <List <InternalEvaluatorValue> >());
            services.TryAddSingleton(ObjectPool.Create <ExtraTypeIdContainer>());

            // Parser
            services.TryAddSingleton <IFormulaCache, FormulaCache>();
            services.TryAddSingleton <IFunctionReader, FunctionReader>();
            services.TryAddSingleton <IFormulaParser, FormulaParser>();

            // Checker
            services.TryAddSingleton <IFormulaChecker, FormulaChecker>();

            // Evaluator
            services.TryAddSingleton <INoStringEvaluator, NoStringEvaluator>();

            // Update constants
            if (options != null)
            {
                var opt = new NoStringEvaluatorOptions();
                options(opt);
                opt.UpdateConstants();
            }

            return(services);
        }