UNPKG

foop

Version:

interfaces that describe their intentions.

61 lines (55 loc) 4.1 kB
var MAX_INTEGER = require('../native/MAX_INTEGER') var INFINITY = require('../native/INFINITY') var toNumber = require('./toNumber') /** * Converts `value` to a finite number. * @since 5.0.0-beta.7 * @memberOf cast * * @param {*} value The value to convert. * @return {number} Returns the converted number. * * {@link https://github.com/lodash/lodash/blob/master/toFinite.js lodash-tofinite} * @see {@link lodash-tofinite} * @see is/finite * * @category Lang * @fork 4.12.0 * * @example * * toFinite(3.2) * // => 3.2 * * toFinite(Number.MIN_VALUE) * // => 5e-324 * * toFinite(Infinity) * // => 1.7976931348623157e+308 * * toFinite('3.2') * // => 3.2 * * toFinite(NaN) * // => 0 * */ function toFinite(value) { // silly check, since casting to number will return a nan at worst // and 0 ? 0 : 0 ? // AND NaN check is at the end anyway 0.0 // if (!value) return value === 0 ? value : 0 value = toNumber(value) // when it is infinity, // put it -1 * +Infinity, // or +1 * -Infinity if (value === INFINITY || value === -INFINITY) { var sign = (value < 0 ? -1 : 1) return sign * MAX_INTEGER } // @NOTE this just checks isNaN, should be gtg // eslint-disable-next-line return value === value ? value : 0 } module.exports = toFinite //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9GaW5pdGUuanMiLCJzb3VyY2VzIjpbInRvRmluaXRlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IE1BWF9JTlRFR0VSID0gcmVxdWlyZSgnLi4vbmF0aXZlL01BWF9JTlRFR0VSJylcbmNvbnN0IElORklOSVRZID0gcmVxdWlyZSgnLi4vbmF0aXZlL0lORklOSVRZJylcbmNvbnN0IHRvTnVtYmVyID0gcmVxdWlyZSgnLi90b051bWJlcicpXG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIGZpbml0ZSBudW1iZXIuXG4gKiBAc2luY2UgNS4wLjAtYmV0YS43XG4gKiBAbWVtYmVyT2YgY2FzdFxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBudW1iZXIuXG4gKlxuICoge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9sb2Rhc2gvbG9kYXNoL2Jsb2IvbWFzdGVyL3RvRmluaXRlLmpzIGxvZGFzaC10b2Zpbml0ZX1cbiAqIEBzZWUge0BsaW5rIGxvZGFzaC10b2Zpbml0ZX1cbiAqIEBzZWUgaXMvZmluaXRlXG4gKlxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBmb3JrIDQuMTIuMFxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogICAgIHRvRmluaXRlKDMuMilcbiAqICAgICAvLyA9PiAzLjJcbiAqXG4gKiAgICAgdG9GaW5pdGUoTnVtYmVyLk1JTl9WQUxVRSlcbiAqICAgICAvLyA9PiA1ZS0zMjRcbiAqXG4gKiAgICAgdG9GaW5pdGUoSW5maW5pdHkpXG4gKiAgICAgLy8gPT4gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDhcbiAqXG4gKiAgICAgdG9GaW5pdGUoJzMuMicpXG4gKiAgICAgLy8gPT4gMy4yXG4gKlxuICogICAgIHRvRmluaXRlKE5hTilcbiAqICAgICAvLyA9PiAwXG4gKlxuICovXG5mdW5jdGlvbiB0b0Zpbml0ZSh2YWx1ZSkge1xuICAvLyBzaWxseSBjaGVjaywgc2luY2UgY2FzdGluZyB0byBudW1iZXIgd2lsbCByZXR1cm4gYSBuYW4gYXQgd29yc3RcbiAgLy8gYW5kIDAgPyAwIDogMCA/XG4gIC8vIEFORCBOYU4gY2hlY2sgaXMgYXQgdGhlIGVuZCBhbnl3YXkgMC4wXG4gIC8vIGlmICghdmFsdWUpIHJldHVybiB2YWx1ZSA9PT0gMCA/IHZhbHVlIDogMFxuXG4gIHZhbHVlID0gdG9OdW1iZXIodmFsdWUpXG5cbiAgLy8gd2hlbiBpdCBpcyBpbmZpbml0eSxcbiAgLy8gcHV0IGl0IC0xICogK0luZmluaXR5LFxuICAvLyBvciArMSAqIC1JbmZpbml0eVxuICBpZiAodmFsdWUgPT09IElORklOSVRZIHx8IHZhbHVlID09PSAtSU5GSU5JVFkpIHtcbiAgICBjb25zdCBzaWduID0gKHZhbHVlIDwgMCA/IC0xIDogMSlcbiAgICByZXR1cm4gc2lnbiAqIE1BWF9JTlRFR0VSXG4gIH1cblxuICAvLyBATk9URSB0aGlzIGp1c3QgY2hlY2tzIGlzTmFOLCBzaG91bGQgYmUgZ3RnXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICByZXR1cm4gdmFsdWUgPT09IHZhbHVlID8gdmFsdWUgOiAwXG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9GaW5pdGVcbiJdLCJuYW1lcyI6WyJjb25zdCJdLCJtYXBwaW5ncyI6IkFBQUFBLEdBQUssQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLHVCQUF1QixDQUFDO0FBQ3BEQSxHQUFLLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQztBQUM5Q0EsR0FBSyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW1DdEMsU0FBUyxRQUFRLENBQUMsS0FBSyxFQUFFOzs7Ozs7RUFNdkIsS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUM7Ozs7O0VBS3ZCLElBQUksS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLEtBQUssQ0FBQyxRQUFRLEVBQUU7SUFDN0NBLEdBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqQyxPQUFPLElBQUksR0FBRyxXQUFXO0dBQzFCOzs7O0VBSUQsT0FBTyxLQUFLLEtBQUssS0FBSyxHQUFHLEtBQUssR0FBRyxDQUFDO0NBQ25DOztBQUVELE1BQU0sQ0FBQyxPQUFPLEdBQUcsUUFBUTsifQ==