1 | "use strict";
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.createBaseFormatterFactory = createBaseFormatterFactory;
|
7 |
|
8 | var _factory = require("../../utils/factory.js");
|
9 |
|
10 | var _number = require("../../utils/number.js");
|
11 |
|
12 | function baseFormatter(base) {
|
13 | var prefixes = {
|
14 | 2: '0b',
|
15 | 8: '0o',
|
16 | 16: '0x'
|
17 | };
|
18 | var prefix = prefixes[base];
|
19 | return function (n) {
|
20 | if (n > Math.pow(2, 31) - 1 || n < -Math.pow(2, 31)) {
|
21 | throw new Error('Value must be in range [-2^31, 2^31-1]');
|
22 | }
|
23 |
|
24 | if (!(0, _number.isInteger)(n)) {
|
25 | throw new Error('Value must be an integer');
|
26 | }
|
27 |
|
28 | if (n < 0) {
|
29 | n = n + Math.pow(2, 32);
|
30 | }
|
31 |
|
32 | return "".concat(prefix).concat(n.toString(base));
|
33 | };
|
34 | }
|
35 |
|
36 | var dependencies = ['typed'];
|
37 |
|
38 | function createBaseFormatterFactory(name, base) {
|
39 | return (0, _factory.factory)(name, dependencies, function (_ref) {
|
40 | var typed = _ref.typed;
|
41 | return typed(name, {
|
42 | number: baseFormatter(base)
|
43 | });
|
44 | });
|
45 | } |
\ | No newline at end of file |