formula-functionizer
Version:
A tool for parsing formulas and create reusable functions
37 lines • 3.03 kB
JavaScript
;
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==