UNPKG

formula-functionizer

Version:

A tool for parsing formulas and create reusable functions

56 lines 3.9 kB
import { FormulaError } from './errors.enum'; export function trimEdges(text) { return text.substring(1, text.length - 1); } export function oppositeNumber(value) { return -1 * value; } export function throwFormulaError(type) { if (Object.values(FormulaError).includes(type)) { throw new Error(type); } else { throw new Error(FormulaError.ERROR); } } export function callFunction(functions, functionName, args) { return functions[functionName].apply(functions, args); } export function checkFunctionExistence(functions, functionName) { if (!functions[functionName]) { throwFormulaError(FormulaError.NAME); } } var excelComparisonTypePriority = { number: 1, string: 2, boolean: 3, undefined: 4, }; export function excelifyComparison(javascriptComparisonFunction) { return function (a, b) { var typeOfA = typeof a; var typeOfB = typeof b; // fallback to undefined if value type is object (handles null case) if (typeOfA === 'object' || typeOfA === 'undefined') { typeOfA = 'undefined'; a = null; } if (typeOfB === 'object' || typeOfB === 'undefined') { typeOfB = 'undefined'; b = null; } if (typeOfA === typeOfB) { if (typeOfA === 'string') { a = a.toLowerCase(); b = b.toLowerCase(); } return javascriptComparisonFunction(a, b); } else { return (excelComparisonTypePriority[typeOfA] < excelComparisonTypePriority[typeOfB]); } }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZnVuY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi91dGlscy5mdW5jdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3QyxNQUFNLFVBQVUsU0FBUyxDQUFDLElBQVk7SUFDcEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzVDLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFDLEtBQWE7SUFDMUMsT0FBTyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDcEIsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxJQUFrQjtJQUNsRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQzlDLE1BQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDdkI7U0FBTTtRQUNMLE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ3JDO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxZQUFZLENBQzFCLFNBQThELEVBQzlELFlBQW9CLEVBQ3BCLElBQVc7SUFFWCxPQUFPLFNBQVMsQ0FBQyxZQUFZLENBQUMsT0FBdkIsU0FBUyxFQUFrQixJQUFJLEVBQUU7QUFDMUMsQ0FBQztBQUVELE1BQU0sVUFBVSxzQkFBc0IsQ0FDcEMsU0FBOEQsRUFDOUQsWUFBb0I7SUFFcEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsRUFBRTtRQUM1QixpQkFBaUIsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDdEM7QUFDSCxDQUFDO0FBVUQsSUFBTSwyQkFBMkIsR0FBRztJQUNsQyxNQUFNLEVBQUUsQ0FBQztJQUNULE1BQU0sRUFBRSxDQUFDO0lBQ1QsT0FBTyxFQUFFLENBQUM7SUFDVixTQUFTLEVBQUUsQ0FBQztDQUNiLENBQUM7QUFFRixNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLDRCQUdZO0lBRVosT0FBTyxVQUFDLENBQUMsRUFBRSxDQUFDO1FBQ1YsSUFBSSxPQUFPLEdBQUcsT0FBTyxDQUE0QixDQUFDO1FBQ2xELElBQUksT0FBTyxHQUFHLE9BQU8sQ0FBNEIsQ0FBQztRQUVsRCxvRUFBb0U7UUFDcEUsSUFBSSxPQUFPLEtBQUssUUFBUSxJQUFJLE9BQU8sS0FBSyxXQUFXLEVBQUU7WUFDbkQsT0FBTyxHQUFHLFdBQVcsQ0FBQztZQUN0QixDQUFDLEdBQUcsSUFBSSxDQUFDO1NBQ1Y7UUFFRCxJQUFJLE9BQU8sS0FBSyxRQUFRLElBQUksT0FBTyxLQUFLLFdBQVcsRUFBRTtZQUNuRCxPQUFPLEdBQUcsV0FBVyxDQUFDO1lBQ3RCLENBQUMsR0FBRyxJQUFJLENBQUM7U0FDVjtRQUVELElBQUksT0FBTyxLQUFLLE9BQU8sRUFBRTtZQUN2QixJQUFJLE9BQU8sS0FBSyxRQUFRLEVBQUU7Z0JBQ3hCLENBQUMsR0FBSSxDQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ2hDLENBQUMsR0FBSSxDQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7YUFDakM7WUFDRCxPQUFPLDRCQUE0QixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUMzQzthQUFNO1lBQ0wsT0FBTyxDQUNMLDJCQUEyQixDQUFDLE9BQU8sQ0FBQztnQkFDcEMsMkJBQTJCLENBQUMsT0FBTyxDQUFDLENBQ3JDLENBQUM7U0FDSDtJQUNILENBQUMsQ0FBQztBQUNKLENBQUMifQ==