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