UNPKG

formula-functionizer

Version:

A tool for parsing formulas and create reusable functions

37 lines 3.03 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Parser = void 0; const errors_enum_1 = require("./errors.enum"); const grammar_parser_1 = require("./grammar-parser/grammar-parser"); const operate_1 = require("./operate/operate"); const options_1 = require("./options"); const utils_functions_1 = require("./utils.functions"); class Parser { constructor(userOptions = {}) { const options = Object.assign(Object.assign({}, options_1.defaultOptions), userOptions); this.grammarParser = new grammar_parser_1.Parser(); this.grammarParser.yy = { oppositeNumber: utils_functions_1.oppositeNumber, trimEdges: utils_functions_1.trimEdges, operate: options.operators === 'excel' ? operate_1.operateExcely : operate_1.operateJavascriptly, throwFormulaError: utils_functions_1.throwFormulaError, callFunction: (functionName, args) => utils_functions_1.callFunction(options.functions, functionName, args), checkFunctionExistence: (functionName) => utils_functions_1.checkFunctionExistence(options.functions, functionName), }; } parse(formula) { try { return this.grammarParser.parse(formula); } catch (e) { if (Object.values(errors_enum_1.FormulaError).includes(e.message)) { return () => e.message; } else { return () => errors_enum_1.FormulaError.ERROR; } } } } exports.Parser = Parser; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VyLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9wYXJzZXIuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0NBQTZDO0FBQzdDLG9FQUEwRTtBQUMxRSwrQ0FBdUU7QUFDdkUsdUNBQTBEO0FBQzFELHVEQU0yQjtBQUkzQixNQUFhLE1BQU07SUFHakIsWUFBWSxjQUFzQyxFQUFFO1FBQ2xELE1BQU0sT0FBTyxtQ0FDUix3QkFBYyxHQUNkLFdBQVcsQ0FDZixDQUFDO1FBQ0YsSUFBSSxDQUFDLGFBQWEsR0FBSSxJQUFJLHVCQUFhLEVBQXdDLENBQUM7UUFDaEYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLEdBQUc7WUFDdEIsY0FBYyxFQUFkLGdDQUFjO1lBQ2QsU0FBUyxFQUFULDJCQUFTO1lBQ1QsT0FBTyxFQUNMLE9BQU8sQ0FBQyxTQUFTLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyx1QkFBYSxDQUFDLENBQUMsQ0FBQyw2QkFBbUI7WUFDckUsaUJBQWlCLEVBQWpCLG1DQUFpQjtZQUNqQixZQUFZLEVBQUUsQ0FBQyxZQUFvQixFQUFFLElBQVcsRUFBRSxFQUFFLENBQ2xELDhCQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDO1lBQ3JELHNCQUFzQixFQUFFLENBQUMsWUFBb0IsRUFBRSxFQUFFLENBQy9DLHdDQUFzQixDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUFDO1NBQzFELENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQWU7UUFDbkIsSUFBSTtZQUNGLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDMUM7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQywwQkFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDbkQsT0FBTyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO2FBQ3hCO2lCQUFNO2dCQUNMLE9BQU8sR0FBRyxFQUFFLENBQUMsMEJBQVksQ0FBQyxLQUFLLENBQUM7YUFDakM7U0FDRjtJQUNILENBQUM7Q0FDRjtBQWpDRCx3QkFpQ0MifQ==