UNPKG

formula-functionizer

Version:

A tool for parsing formulas and create reusable functions

51 lines 3.83 kB
var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; import { FormulaError } from './errors.enum'; import { Parser as GrammarParser } from './grammar-parser/grammar-parser'; import { operateExcely, operateJavascriptly } from './operate/operate'; import { defaultOptions } from './options'; import { callFunction, checkFunctionExistence, oppositeNumber, throwFormulaError, trimEdges, } from './utils.functions'; var Parser = /** @class */ (function () { function Parser(userOptions) { if (userOptions === void 0) { userOptions = {}; } var options = __assign(__assign({}, defaultOptions), userOptions); this.grammarParser = new GrammarParser(); this.grammarParser.yy = { oppositeNumber: oppositeNumber, trimEdges: trimEdges, operate: options.operators === 'excel' ? operateExcely : operateJavascriptly, throwFormulaError: throwFormulaError, callFunction: function (functionName, args) { return callFunction(options.functions, functionName, args); }, checkFunctionExistence: function (functionName) { return checkFunctionExistence(options.functions, functionName); }, }; } Parser.prototype.parse = function (formula) { try { return this.grammarParser.parse(formula); } catch (e) { if (Object.values(FormulaError).includes(e.message)) { return function () { return e.message; }; } else { return function () { return FormulaError.ERROR; }; } } }; return Parser; }()); export { Parser }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VyLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9wYXJzZXIuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxNQUFNLElBQUksYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxjQUFjLEVBQWlCLE1BQU0sV0FBVyxDQUFDO0FBQzFELE9BQU8sRUFDTCxZQUFZLEVBQ1osc0JBQXNCLEVBQ3RCLGNBQWMsRUFDZCxpQkFBaUIsRUFDakIsU0FBUyxHQUNWLE1BQU0sbUJBQW1CLENBQUM7QUFJM0I7SUFHRSxnQkFBWSxXQUF3QztRQUF4Qyw0QkFBQSxFQUFBLGdCQUF3QztRQUNsRCxJQUFNLE9BQU8seUJBQ1IsY0FBYyxHQUNkLFdBQVcsQ0FDZixDQUFDO1FBQ0YsSUFBSSxDQUFDLGFBQWEsR0FBSSxJQUFJLGFBQWEsRUFBd0MsQ0FBQztRQUNoRixJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsR0FBRztZQUN0QixjQUFjLGdCQUFBO1lBQ2QsU0FBUyxXQUFBO1lBQ1QsT0FBTyxFQUNMLE9BQU8sQ0FBQyxTQUFTLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLG1CQUFtQjtZQUNyRSxpQkFBaUIsbUJBQUE7WUFDakIsWUFBWSxFQUFFLFVBQUMsWUFBb0IsRUFBRSxJQUFXO2dCQUM5QyxPQUFBLFlBQVksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUM7WUFBbkQsQ0FBbUQ7WUFDckQsc0JBQXNCLEVBQUUsVUFBQyxZQUFvQjtnQkFDM0MsT0FBQSxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQztZQUF2RCxDQUF1RDtTQUMxRCxDQUFDO0lBQ0osQ0FBQztJQUVELHNCQUFLLEdBQUwsVUFBTSxPQUFlO1FBQ25CLElBQUk7WUFDRixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzFDO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDbkQsT0FBTyxjQUFNLE9BQUEsQ0FBQyxDQUFDLE9BQU8sRUFBVCxDQUFTLENBQUM7YUFDeEI7aUJBQU07Z0JBQ0wsT0FBTyxjQUFNLE9BQUEsWUFBWSxDQUFDLEtBQUssRUFBbEIsQ0FBa0IsQ0FBQzthQUNqQztTQUNGO0lBQ0gsQ0FBQztJQUNILGFBQUM7QUFBRCxDQUFDLEFBakNELElBaUNDIn0=