2b5060875da25d6b8ce85e7cbd3d7576d2052e1c
[yaffs-website] / node_modules / uncss / node_modules / lodash / toInteger.js
1 var toNumber = require('./toNumber');
2
3 /** Used as references for various `Number` constants. */
4 var INFINITY = 1 / 0,
5     MAX_INTEGER = 1.7976931348623157e+308;
6
7 /**
8  * Converts `value` to an integer.
9  *
10  * **Note:** This function is loosely based on [`ToInteger`](http://www.ecma-international.org/ecma-262/6.0/#sec-tointeger).
11  *
12  * @static
13  * @memberOf _
14  * @category Lang
15  * @param {*} value The value to convert.
16  * @returns {number} Returns the converted integer.
17  * @example
18  *
19  * _.toInteger(3);
20  * // => 3
21  *
22  * _.toInteger(Number.MIN_VALUE);
23  * // => 0
24  *
25  * _.toInteger(Infinity);
26  * // => 1.7976931348623157e+308
27  *
28  * _.toInteger('3');
29  * // => 3
30  */
31 function toInteger(value) {
32   if (!value) {
33     return value === 0 ? value : 0;
34   }
35   value = toNumber(value);
36   if (value === INFINITY || value === -INFINITY) {
37     var sign = (value < 0 ? -1 : 1);
38     return sign * MAX_INTEGER;
39   }
40   var remainder = value % 1;
41   return value === value ? (remainder ? value - remainder : value) : 0;
42 }
43
44 module.exports = toInteger;