.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / lodash / toNumber.js
1 var baseTrim = require('./_baseTrim'),
2     isObject = require('./isObject'),
3     isSymbol = require('./isSymbol');
4
5 /** Used as references for various `Number` constants. */
6 var NAN = 0 / 0;
7
8 /** Used to detect bad signed hexadecimal string values. */
9 var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
10
11 /** Used to detect binary string values. */
12 var reIsBinary = /^0b[01]+$/i;
13
14 /** Used to detect octal string values. */
15 var reIsOctal = /^0o[0-7]+$/i;
16
17 /** Built-in method references without a dependency on `root`. */
18 var freeParseInt = parseInt;
19
20 /**
21  * Converts `value` to a number.
22  *
23  * @static
24  * @memberOf _
25  * @since 4.0.0
26  * @category Lang
27  * @param {*} value The value to process.
28  * @returns {number} Returns the number.
29  * @example
30  *
31  * _.toNumber(3.2);
32  * // => 3.2
33  *
34  * _.toNumber(Number.MIN_VALUE);
35  * // => 5e-324
36  *
37  * _.toNumber(Infinity);
38  * // => Infinity
39  *
40  * _.toNumber('3.2');
41  * // => 3.2
42  */
43 function toNumber(value) {
44   if (typeof value == 'number') {
45     return value;
46   }
47   if (isSymbol(value)) {
48     return NAN;
49   }
50   if (isObject(value)) {
51     var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
52     value = isObject(other) ? (other + '') : other;
53   }
54   if (typeof value != 'string') {
55     return value === 0 ? value : +value;
56   }
57   value = baseTrim(value);
58   var isBinary = reIsBinary.test(value);
59   return (isBinary || reIsOctal.test(value))
60     ? freeParseInt(value.slice(2), isBinary ? 2 : 8)
61     : (reIsBadHex.test(value) ? NAN : +value);
62 }
63
64 module.exports = toNumber;