UNPKG

fxparser

Version:

Formula parser designed for Yotta Needs.

65 lines (48 loc) 1.74 kB
'use strict'; exports.__esModule = true; exports.SYMBOL = undefined; exports['default'] = func; var _fxjs = require('@cohacks/fxjs'); var fxjs = _interopRequireWildcard(_fxjs); var _supportedFormulas = require('./../../supported-formulas'); var _supportedFormulas2 = _interopRequireDefault(_supportedFormulas); var _error = require('./../../error'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } } var SYMBOL = exports.SYMBOL = _supportedFormulas2['default']; function func(symbol) { return function __formulaFunction() { symbol = symbol.toUpperCase(); var symbolParts = symbol.split('.'); var foundFormula = false; var result = void 0; if (symbolParts.length === 1) { if (fxjs[symbolParts[0]]) { foundFormula = true; result = fxjs[symbolParts[0]].apply(fxjs, arguments); } } else { var length = symbolParts.length; var index = 0; var nestedFormula = fxjs; while (index < length) { nestedFormula = nestedFormula[symbolParts[index]]; index++; if (!nestedFormula) { nestedFormula = null; break; } } if (nestedFormula) { foundFormula = true; result = nestedFormula.apply(undefined, arguments); } } if (!foundFormula) { throw Error(_error.ERROR_NAME); } return result; }; } func.isFactory = true; func.SYMBOL = SYMBOL;