fxparser
Version:
Formula parser designed for Yotta Needs.
116 lines (80 loc) • 3.62 kB
JavaScript
;
exports.__esModule = true;
exports['default'] = evaluateByOperator;
exports.registerOperation = registerOperation;
var _add = require('./operator/add');
var _add2 = _interopRequireDefault(_add);
var _ampersand = require('./operator/ampersand');
var _ampersand2 = _interopRequireDefault(_ampersand);
var _divide = require('./operator/divide');
var _divide2 = _interopRequireDefault(_divide);
var _equal = require('./operator/equal');
var _equal2 = _interopRequireDefault(_equal);
var _formulaFunction = require('./operator/formula-function');
var _formulaFunction2 = _interopRequireDefault(_formulaFunction);
var _greaterThan = require('./operator/greater-than');
var _greaterThan2 = _interopRequireDefault(_greaterThan);
var _greaterThanOrEqual = require('./operator/greater-than-or-equal');
var _greaterThanOrEqual2 = _interopRequireDefault(_greaterThanOrEqual);
var _lessThan = require('./operator/less-than');
var _lessThan2 = _interopRequireDefault(_lessThan);
var _lessThanOrEqual = require('./operator/less-than-or-equal');
var _lessThanOrEqual2 = _interopRequireDefault(_lessThanOrEqual);
var _minus = require('./operator/minus');
var _minus2 = _interopRequireDefault(_minus);
var _multiply = require('./operator/multiply');
var _multiply2 = _interopRequireDefault(_multiply);
var _notEqual = require('./operator/not-equal');
var _notEqual2 = _interopRequireDefault(_notEqual);
var _power = require('./operator/power');
var _power2 = _interopRequireDefault(_power);
var _error = require('./../error');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
/* eslint-disable import/no-named-as-default-member */
var availableOperators = Object.create(null);
/**
* Evaluate values by operator id.git
*
* @param {String} operator Operator id.
* @param {Array} [params=[]] Arguments to evaluate.
* @returns {*}
*/
function evaluateByOperator(operator) {
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
operator = operator.toUpperCase();
if (!availableOperators[operator]) {
throw Error(_error.ERROR_NAME);
}
return availableOperators[operator].apply(availableOperators, params);
}
/**
* Register operator.
*
* @param {String|Array} symbol Symbol to register.
* @param {Function} func Logic to register for this symbol.
*/
function registerOperation(symbol, func) {
if (!Array.isArray(symbol)) {
symbol = [symbol.toUpperCase()];
}
symbol.forEach(function (s) {
if (func.isFactory) {
availableOperators[s] = func(s);
} else {
availableOperators[s] = func;
}
});
}
registerOperation(_add2['default'].SYMBOL, _add2['default']);
registerOperation(_ampersand2['default'].SYMBOL, _ampersand2['default']);
registerOperation(_divide2['default'].SYMBOL, _divide2['default']);
registerOperation(_equal2['default'].SYMBOL, _equal2['default']);
registerOperation(_power2['default'].SYMBOL, _power2['default']);
registerOperation(_formulaFunction2['default'].SYMBOL, _formulaFunction2['default']);
registerOperation(_greaterThan2['default'].SYMBOL, _greaterThan2['default']);
registerOperation(_greaterThanOrEqual2['default'].SYMBOL, _greaterThanOrEqual2['default']);
registerOperation(_lessThan2['default'].SYMBOL, _lessThan2['default']);
registerOperation(_lessThanOrEqual2['default'].SYMBOL, _lessThanOrEqual2['default']);
registerOperation(_multiply2['default'].SYMBOL, _multiply2['default']);
registerOperation(_notEqual2['default'].SYMBOL, _notEqual2['default']);
registerOperation(_minus2['default'].SYMBOL, _minus2['default']);