/
UnitPrefix.ts
68 lines (62 loc) · 2.31 KB
/
UnitPrefix.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
/**
* @category Unit
*/
export class UnitPrefix {
static readonly DECA = new UnitPrefix('deca', 'da', 1e1);
static readonly HECTO = new UnitPrefix('hecto', 'h', 1e2);
static readonly KILO = new UnitPrefix('kilo', 'k', 1e3);
static readonly MEGA = new UnitPrefix('mega', 'M', 1e6);
static readonly GIGA = new UnitPrefix('giga', 'G', 1e9);
static readonly TERA = new UnitPrefix('tera', 'T', 1e12);
static readonly PETA = new UnitPrefix('peta', 'P', 1e15);
static readonly EXA = new UnitPrefix('exa', 'E', 1e18);
static readonly ZETTA = new UnitPrefix('zetta', 'Z', 1e21);
static readonly YOTTA = new UnitPrefix('yotta', 'Y', 1e24);
static readonly DECI = new UnitPrefix('deci', 'd', 1e-1);
static readonly CENTI = new UnitPrefix('centi', 'c', 1e-2);
static readonly MILLI = new UnitPrefix('milli', 'm', 1e-3);
static readonly MICRO = new UnitPrefix('micro', 'u', 1e-6);
static readonly NANO = new UnitPrefix('nano', 'n', 1e-9);
static readonly PICO = new UnitPrefix('pico', 'p', 1e-12);
static readonly FEMTO = new UnitPrefix('femto', 'f', 1e-15);
static readonly ATTO = new UnitPrefix('atto', 'a', 1e-18);
static readonly ZEPTO = new UnitPrefix('zepto', 'z', 1e-21);
static readonly YOCTO = new UnitPrefix('yocto', 'y', 1e-24);
static readonly DECIMAL: UnitPrefix[] = [
UnitPrefix.DECA,
UnitPrefix.HECTO,
UnitPrefix.KILO,
UnitPrefix.MEGA,
UnitPrefix.GIGA,
UnitPrefix.TERA,
UnitPrefix.PETA,
UnitPrefix.EXA,
UnitPrefix.ZETTA,
UnitPrefix.YOTTA,
UnitPrefix.DECI,
UnitPrefix.CENTI,
UnitPrefix.MILLI,
UnitPrefix.MICRO,
UnitPrefix.NANO,
UnitPrefix.PICO,
UnitPrefix.FEMTO,
UnitPrefix.ATTO,
UnitPrefix.ZEPTO,
UnitPrefix.YOCTO,
];
name: string;
abbrevation: string;
magnitude: number;
private constructor(name: string, abbrevation: string, magnitude: number) {
this.name = name;
this.abbrevation = abbrevation;
this.magnitude = magnitude;
}
get namePattern(): RegExp {
return new RegExp(`/^${this.name}/g`);
}
get abbrevationPattern(): RegExp {
return new RegExp(`/^${this.abbrevation}/g`);
}
}
export type UnitPrefixType = 'decimal' | 'none';