blob: 6f87dfd77f493863b548540b1b6e16a98d1e9339 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
export const inspect = arg => {
if (arg === null || typeof arg !== 'object') return arg;
try {
return JSON.stringify(arg, undefined, 2);
} catch (error) {
return '[Circular]';
}
};
const placeholderRegExp = /%[sdo%]/g;
const placeholderHandlers = {
'%s': arg => String(arg),
'%d': arg => Number(arg),
'%o': arg => inspect(arg),
};
export const format = (fmt, ...args) => {
if (typeof fmt !== 'string') return args.map(inspect).join(' ');
const str = String(fmt).replace(placeholderRegExp, placeholder => {
if (placeholder === '%%') return '%';
if (!args.length) return placeholder;
const [arg] = args.splice(0, 1);
const handler = placeholderHandlers[placeholder];
return handler ? handler(arg) : placeholder;
});
return [str, ...args.map(inspect)].join(' ');
};
export const range = (start, end) => {
const size = end - start;
return new Array(size).map((v, i) => start + i);
};
|