massive update, probably broken
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / core-js / modules / esnext.number.from-string.js
1 'use strict';
2 var $ = require('../internals/export');
3 var global = require('../internals/global');
4 var uncurryThis = require('../internals/function-uncurry-this');
5 var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
6 var parseInt = require('../internals/number-parse-int');
7
8 var INVALID_NUMBER_REPRESENTATION = 'Invalid number representation';
9 var INVALID_RADIX = 'Invalid radix';
10 var RangeError = global.RangeError;
11 var SyntaxError = global.SyntaxError;
12 var TypeError = global.TypeError;
13 var valid = /^[\da-z]+$/;
14 var charAt = uncurryThis(''.charAt);
15 var exec = uncurryThis(valid.exec);
16 var numberToString = uncurryThis(1.0.toString);
17 var stringSlice = uncurryThis(''.slice);
18
19 // `Number.fromString` method
20 // https://github.com/tc39/proposal-number-fromstring
21 $({ target: 'Number', stat: true }, {
22   fromString: function fromString(string, radix) {
23     var sign = 1;
24     var R, mathNum;
25     if (typeof string != 'string') throw TypeError(INVALID_NUMBER_REPRESENTATION);
26     if (!string.length) throw SyntaxError(INVALID_NUMBER_REPRESENTATION);
27     if (charAt(string, 0) == '-') {
28       sign = -1;
29       string = stringSlice(string, 1);
30       if (!string.length) throw SyntaxError(INVALID_NUMBER_REPRESENTATION);
31     }
32     R = radix === undefined ? 10 : toIntegerOrInfinity(radix);
33     if (R < 2 || R > 36) throw RangeError(INVALID_RADIX);
34     if (!exec(valid, string) || numberToString(mathNum = parseInt(string, R), R) !== string) {
35       throw SyntaxError(INVALID_NUMBER_REPRESENTATION);
36     }
37     return sign * mathNum;
38   }
39 });