UNPKG

fxparser

Version:

Formula parser designed for Yotta Needs.

49 lines (40 loc) 1.14 kB
import * as fxjs from '@cohacks/fxjs'; import SUPPORTED_FORMULAS from './../../supported-formulas'; import { ERROR_NAME } from './../../error'; export var SYMBOL = SUPPORTED_FORMULAS; export 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_NAME); } return result; }; } func.isFactory = true; func.SYMBOL = SYMBOL;