numeric.js (2743B)
1 "use strict"; 2 3 Object.defineProperty(exports, "__esModule", { 4 value: true 5 }); 6 exports.createNumeric = void 0; 7 8 var _is = require("../../utils/is.js"); 9 10 var _factory = require("../../utils/factory.js"); 11 12 var _noop = require("../../utils/noop.js"); 13 14 var name = 'numeric'; 15 var dependencies = ['number', '?bignumber', '?fraction']; 16 var createNumeric = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) { 17 var _number = _ref.number, 18 bignumber = _ref.bignumber, 19 fraction = _ref.fraction; 20 var validInputTypes = { 21 string: true, 22 number: true, 23 BigNumber: true, 24 Fraction: true 25 }; // Load the conversion functions for each output type 26 27 var validOutputTypes = { 28 number: function number(x) { 29 return _number(x); 30 }, 31 BigNumber: bignumber ? function (x) { 32 return bignumber(x); 33 } : _noop.noBignumber, 34 Fraction: fraction ? function (x) { 35 return fraction(x); 36 } : _noop.noFraction 37 }; 38 /** 39 * Convert a numeric input to a specific numeric type: number, BigNumber, or Fraction. 40 * 41 * Syntax: 42 * 43 * math.numeric(x) 44 * 45 * Examples: 46 * 47 * math.numeric('4') // returns number 4 48 * math.numeric('4', 'number') // returns number 4 49 * math.numeric('4', 'BigNumber') // returns BigNumber 4 50 * math.numeric('4', 'Fraction') // returns Fraction 4 51 * math.numeric(4, 'Fraction') // returns Fraction 4 52 * math.numeric(math.fraction(2, 5), 'number') // returns number 0.4 53 * 54 * See also: 55 * 56 * number, fraction, bignumber, string, format 57 * 58 * @param {string | number | BigNumber | Fraction } value 59 * A numeric value or a string containing a numeric value 60 * @param {string} outputType 61 * Desired numeric output type. 62 * Available values: 'number', 'BigNumber', or 'Fraction' 63 * @return {number | BigNumber | Fraction} 64 * Returns an instance of the numeric in the requested type 65 */ 66 67 return function numeric(value, outputType) { 68 var inputType = (0, _is.typeOf)(value); 69 70 if (!(inputType in validInputTypes)) { 71 throw new TypeError('Cannot convert ' + value + ' of type "' + inputType + '"; valid input types are ' + Object.keys(validInputTypes).join(', ')); 72 } 73 74 if (!(outputType in validOutputTypes)) { 75 throw new TypeError('Cannot convert ' + value + ' to type "' + outputType + '"; valid output types are ' + Object.keys(validOutputTypes).join(', ')); 76 } 77 78 if (outputType === inputType) { 79 return value; 80 } else { 81 return validOutputTypes[outputType](value); 82 } 83 }; 84 }); 85 exports.createNumeric = createNumeric;