-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathutils.ts
72 lines (60 loc) · 1.66 KB
/
utils.ts
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import * as os from 'os';
export const platform = os.platform();
export const isWin32 = platform === 'win32';
export const isDarwin = platform === 'darwin';
export function formatBytes(data: number, fixedNumber = 0, customSize = 0) {
const KB = 1024;
const MB = 1024 * 1024;
const GB = 1024 * 1024 * 1024;
let formatRes: { data: number; unit: 'KB' | 'MB' | 'GB' | 'CUSTOM' };
if (customSize > 0) {
formatRes = formatRes = {
data: data / customSize,
unit: 'CUSTOM'
};
} else if (data < KB) {
formatRes = {
data: 0,
unit: 'KB'
};
} else if (data < MB) {
formatRes = {
data: data / KB,
unit: 'KB'
};
} else if (data < GB) {
formatRes = {
data: data / MB,
unit: 'MB'
};
} else {
formatRes = {
data: data / GB,
unit: 'GB'
};
}
return { ...formatRes, data: formatRes.data.toFixed(fixedNumber) };
}
export function formatTimes(data: number) {
const minute = 60;
const hour = 60 * 60;
const day = 24 * 60 * 60;
const formatRes: [number, number, number] = [0, 0, 0];
const curDays = Math.floor(data / day);
const curHours = Math.floor((data - curDays * day) / hour);
const curMinutes = Math.floor((data - curDays * day - curHours * hour) / minute);
formatRes[0] = curDays;
formatRes[1] = curHours;
formatRes[2] = curMinutes;
return formatRes;
}
export function formatByDict<T extends { [prop: string]: any }>(raw = '', dict: T): string {
let res = raw;
raw.match(/\$\{[^{}]*\}/g)?.forEach(item => {
const key = item.replace(/(\$\{)|(\})/g, '');
if (key in dict) {
res = res.replace(item, dict[key]);
}
});
return res.trim();
}