n2words 1.13.0 → 1.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.json +2 -2
- package/README.md +1 -1
- package/bench.mjs +94 -0
- package/dist/n2words.js +1 -1
- package/examples/node.mjs +10 -0
- package/lib/classes/AbstractLanguage.mjs +151 -0
- package/lib/classes/BaseLanguage.mjs +174 -0
- package/lib/i18n/AR.mjs +62 -38
- package/lib/i18n/AZ.mjs +44 -38
- package/lib/i18n/CZ.mjs +79 -69
- package/lib/i18n/DE.mjs +56 -50
- package/lib/i18n/DK.mjs +62 -50
- package/lib/i18n/EN.mjs +66 -54
- package/lib/i18n/ES.mjs +67 -55
- package/lib/i18n/FA.mjs +75 -63
- package/lib/i18n/FR.mjs +54 -48
- package/lib/i18n/HE.mjs +81 -23
- package/lib/i18n/HR.mjs +81 -70
- package/lib/i18n/HU.mjs +82 -76
- package/lib/i18n/ID.mjs +55 -46
- package/lib/i18n/IT.mjs +39 -27
- package/lib/i18n/KO.mjs +38 -32
- package/lib/i18n/LT.mjs +79 -67
- package/lib/i18n/LV.mjs +69 -57
- package/lib/i18n/NL.mjs +70 -60
- package/lib/i18n/NO.mjs +58 -52
- package/lib/i18n/PL.mjs +78 -67
- package/lib/i18n/PT.mjs +63 -56
- package/lib/i18n/RU.mjs +159 -122
- package/lib/i18n/SR.mjs +81 -70
- package/lib/i18n/TR.mjs +45 -43
- package/lib/i18n/UK.mjs +87 -75
- package/lib/i18n/VI.mjs +89 -79
- package/lib/i18n/ZH.mjs +40 -33
- package/lib/n2words.mjs +33 -107
- package/package.json +17 -11
- package/webpack.config.js +1 -1
- package/lib/classes/N2WordsAbs.mjs +0 -72
- package/lib/classes/N2WordsBase.mjs +0 -105
package/lib/i18n/CZ.mjs
CHANGED
|
@@ -1,97 +1,100 @@
|
|
|
1
1
|
import {N2WordsRU} from './RU.mjs';
|
|
2
2
|
|
|
3
3
|
export class N2WordsCZ extends N2WordsRU {
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
ones = {
|
|
5
|
+
1: 'jedna',
|
|
6
|
+
2: 'dva',
|
|
7
|
+
3: 'tři',
|
|
8
|
+
4: 'čtyři',
|
|
9
|
+
5: 'pět',
|
|
10
|
+
6: 'šest',
|
|
11
|
+
7: 'sedm',
|
|
12
|
+
8: 'osm',
|
|
13
|
+
9: 'devět'
|
|
14
|
+
};
|
|
6
15
|
|
|
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
|
-
8: ['kvadrilion', 'kvadriliony', 'kvadrilionů'], // 10^ 24
|
|
62
|
-
9: ['kvadriliarda', 'kvadriliardy', 'kvadriliard'], // 10^ 27
|
|
63
|
-
10: ['quintillion', 'quintilliony', 'quintillionů'], // 10^ 30
|
|
64
|
-
};
|
|
16
|
+
tens = {
|
|
17
|
+
0: 'deset',
|
|
18
|
+
1: 'jedenáct',
|
|
19
|
+
2: 'dvanáct',
|
|
20
|
+
3: 'třináct',
|
|
21
|
+
4: 'čtrnáct',
|
|
22
|
+
5: 'patnáct',
|
|
23
|
+
6: 'šestnáct',
|
|
24
|
+
7: 'sedmnáct',
|
|
25
|
+
8: 'osmnáct',
|
|
26
|
+
9: 'devatenáct'
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
twenties = {
|
|
30
|
+
2: 'dvacet',
|
|
31
|
+
3: 'třicet',
|
|
32
|
+
4: 'čtyřicet',
|
|
33
|
+
5: 'padesát',
|
|
34
|
+
6: 'šedesát',
|
|
35
|
+
7: 'sedmdesát',
|
|
36
|
+
8: 'osmdesát',
|
|
37
|
+
9: 'devadesát'
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
hundreds = {
|
|
41
|
+
1: 'sto',
|
|
42
|
+
2: 'dvě stě',
|
|
43
|
+
3: 'tři sta',
|
|
44
|
+
4: 'čtyři sta',
|
|
45
|
+
5: 'pět set',
|
|
46
|
+
6: 'šest set',
|
|
47
|
+
7: 'sedm set',
|
|
48
|
+
8: 'osm set',
|
|
49
|
+
9: 'devět set'
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
thousands = {
|
|
53
|
+
1: ['tisíc', 'tisíce', 'tisíc'], // 10^ 3
|
|
54
|
+
2: ['milion', 'miliony', 'milionů'], // 10^ 6
|
|
55
|
+
3: ['miliarda', 'miliardy', 'miliard'], // 10^ 9
|
|
56
|
+
4: ['bilion', 'biliony', 'bilionů'], // 10^ 12
|
|
57
|
+
5: ['biliarda', 'biliardy', 'biliard'], // 10^ 15
|
|
58
|
+
6: ['trilion', 'triliony', 'trilionů'], // 10^ 18
|
|
59
|
+
7: ['triliarda', 'triliardy', 'triliard'], // 10^ 21
|
|
60
|
+
8: ['kvadrilion', 'kvadriliony', 'kvadrilionů'], // 10^ 24
|
|
61
|
+
9: ['kvadriliarda', 'kvadriliardy', 'kvadriliard'], // 10^ 27
|
|
62
|
+
10: ['quintillion', 'quintilliony', 'quintillionů'], // 10^ 30
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
constructor(options) {
|
|
66
|
+
super(Object.assign({
|
|
67
|
+
negativeWord: 'mínus',
|
|
68
|
+
zero: 'nula'
|
|
69
|
+
}, options));
|
|
65
70
|
}
|
|
66
71
|
|
|
67
72
|
get separatorWord() {
|
|
68
|
-
if (this.
|
|
73
|
+
if (this.wholeNumber == 0n || this.wholeNumber == 1n) {
|
|
69
74
|
return 'celá';
|
|
70
|
-
} else if (this.
|
|
75
|
+
} else if (this.wholeNumber >= 2n && this.wholeNumber <= 4n) {
|
|
71
76
|
return 'celé';
|
|
72
77
|
} else {
|
|
73
78
|
return 'celých';
|
|
74
79
|
}
|
|
75
80
|
}
|
|
76
81
|
|
|
77
|
-
set separatorWord(value) {}
|
|
78
|
-
|
|
79
82
|
pluralize(n, forms) {
|
|
80
83
|
let form = 2;
|
|
81
84
|
if (n == 1) {
|
|
82
85
|
form = 0;
|
|
83
|
-
} else if (((n %
|
|
86
|
+
} else if (((n % 10n < 5n) && (n % 10n > 1n)) && (n % 100n < 10n || n % 100n > 20n)) {
|
|
84
87
|
form = 1;
|
|
85
88
|
}
|
|
86
89
|
return forms[form];
|
|
87
90
|
}
|
|
88
91
|
|
|
89
92
|
toCardinal(number) {
|
|
90
|
-
if (
|
|
93
|
+
if (number == 0) {
|
|
91
94
|
return this.zero;
|
|
92
95
|
}
|
|
93
96
|
const words = [];
|
|
94
|
-
const chunks = this.splitByX(
|
|
97
|
+
const chunks = this.splitByX(number.toString(), 3);
|
|
95
98
|
let i = chunks.length;
|
|
96
99
|
for (let j = 0; j < chunks.length; j++) {
|
|
97
100
|
const x = chunks[j];
|
|
@@ -119,6 +122,13 @@ export class N2WordsCZ extends N2WordsRU {
|
|
|
119
122
|
}
|
|
120
123
|
}
|
|
121
124
|
|
|
122
|
-
|
|
123
|
-
|
|
125
|
+
/**
|
|
126
|
+
* Converts a value to cardinal (written) form.
|
|
127
|
+
* @param {number|string} value Number to be convert.
|
|
128
|
+
* @param {object} options Options for class.
|
|
129
|
+
* @throws {Error} Value cannot be invalid.
|
|
130
|
+
* @returns {string} Value in cardinal (written) format.
|
|
131
|
+
*/
|
|
132
|
+
export default function(value, options) {
|
|
133
|
+
return new N2WordsCZ(options).floatToCardinal(value);
|
|
124
134
|
}
|
package/lib/i18n/DE.mjs
CHANGED
|
@@ -1,52 +1,51 @@
|
|
|
1
|
-
import
|
|
1
|
+
import BaseLanguage from '../classes/BaseLanguage.mjs';
|
|
2
2
|
|
|
3
|
-
export class N2WordsDE extends
|
|
4
|
-
constructor() {
|
|
5
|
-
super(
|
|
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
|
-
];
|
|
3
|
+
export class N2WordsDE extends BaseLanguage {
|
|
4
|
+
constructor(options) {
|
|
5
|
+
super(Object.assign({
|
|
6
|
+
negativeWord: 'minus',
|
|
7
|
+
separatorWord: 'komma',
|
|
8
|
+
zero: 'null'
|
|
9
|
+
}, options), [
|
|
10
|
+
[1000000000000000000000000000n, 'Quadrilliarde'],
|
|
11
|
+
[1000000000000000000000000n, 'Quadrillion'],
|
|
12
|
+
[1000000000000000000000n, 'Trilliarde'],
|
|
13
|
+
[1000000000000000000n, 'Trillion'],
|
|
14
|
+
[1000000000000000n, 'Billiarde'],
|
|
15
|
+
[1000000000000n, 'Billion'],
|
|
16
|
+
[1000000000n, 'Milliarde'],
|
|
17
|
+
[1000000n, 'Million'],
|
|
18
|
+
[1000n, 'tausend'],
|
|
19
|
+
[100n, 'hundert'],
|
|
20
|
+
[90n, 'neunzig'],
|
|
21
|
+
[80n, 'achtzig'],
|
|
22
|
+
[70n, 'siebzig'],
|
|
23
|
+
[60n, 'sechzig'],
|
|
24
|
+
[50n, 'fünfzig'],
|
|
25
|
+
[40n, 'vierzig'],
|
|
26
|
+
[30n, 'dreißig'],
|
|
27
|
+
[20n, 'zwanzig'],
|
|
28
|
+
[19n, 'neunzehn'],
|
|
29
|
+
[18n, 'achtzehn'],
|
|
30
|
+
[17n, 'siebzehn'],
|
|
31
|
+
[16n, 'sechzehn'],
|
|
32
|
+
[15n, 'fünfzehn'],
|
|
33
|
+
[14n, 'vierzehn'],
|
|
34
|
+
[13n, 'dreizehn'],
|
|
35
|
+
[12n, 'zwölf'],
|
|
36
|
+
[11n, 'elf'],
|
|
37
|
+
[10n, 'zehn'],
|
|
38
|
+
[9n, 'neun'],
|
|
39
|
+
[8n, 'acht'],
|
|
40
|
+
[7n, 'sieben'],
|
|
41
|
+
[6n, 'sechs'],
|
|
42
|
+
[5n, 'fünf'],
|
|
43
|
+
[4n, 'vier'],
|
|
44
|
+
[3n, 'drei'],
|
|
45
|
+
[2n, 'zwei'],
|
|
46
|
+
[1n, 'eins'],
|
|
47
|
+
[0n, 'null']
|
|
48
|
+
]);
|
|
50
49
|
}
|
|
51
50
|
|
|
52
51
|
merge(curr, next) {
|
|
@@ -94,6 +93,13 @@ export class N2WordsDE extends N2WordsBase {
|
|
|
94
93
|
}
|
|
95
94
|
}
|
|
96
95
|
|
|
97
|
-
|
|
98
|
-
|
|
96
|
+
/**
|
|
97
|
+
* Converts a value to cardinal (written) form.
|
|
98
|
+
* @param {number|string} value Number to be convert.
|
|
99
|
+
* @param {object} options Options for class.
|
|
100
|
+
* @throws {Error} Value cannot be invalid.
|
|
101
|
+
* @returns {string} Value in cardinal (written) format.
|
|
102
|
+
*/
|
|
103
|
+
export default function(value, options) {
|
|
104
|
+
return new N2WordsDE(options).floatToCardinal(value);
|
|
99
105
|
}
|
package/lib/i18n/DK.mjs
CHANGED
|
@@ -1,53 +1,58 @@
|
|
|
1
|
-
import
|
|
1
|
+
import BaseLanguage from '../classes/BaseLanguage.mjs';
|
|
2
2
|
|
|
3
|
-
export class N2WordsDK extends
|
|
4
|
-
|
|
5
|
-
super();
|
|
3
|
+
export class N2WordsDK extends BaseLanguage {
|
|
4
|
+
ordFlag;
|
|
6
5
|
|
|
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
|
-
|
|
6
|
+
constructor(options) {
|
|
7
|
+
options = Object.assign({
|
|
8
|
+
negativeWord: 'minus',
|
|
9
|
+
separatorWord: 'komma',
|
|
10
|
+
zero: 'nul',
|
|
11
|
+
ordFlag: false
|
|
12
|
+
}, options);
|
|
13
|
+
|
|
14
|
+
super(options, [
|
|
15
|
+
[1000000000000000000000000000n, 'quadrillarder'],
|
|
16
|
+
[1000000000000000000000000n, 'quadrillioner'],
|
|
17
|
+
[1000000000000000000000n, 'trillarder'],
|
|
18
|
+
[1000000000000000000n, 'trillioner'],
|
|
19
|
+
[1000000000000000n, 'billarder'],
|
|
20
|
+
[1000000000000n, 'billioner'],
|
|
21
|
+
[1000000000n, 'millarder'],
|
|
22
|
+
[1000000n, 'millioner'],
|
|
23
|
+
[1000n, 'tusind'],
|
|
24
|
+
[100n, 'hundrede'],
|
|
25
|
+
[90n, 'halvfems'],
|
|
26
|
+
[80n, 'firs'],
|
|
27
|
+
[70n, 'halvfjerds'],
|
|
28
|
+
[60n, 'treds'],
|
|
29
|
+
[50n, 'halvtreds'],
|
|
30
|
+
[40n, 'fyrre'],
|
|
31
|
+
[30n, 'tredive'],
|
|
32
|
+
[20n, 'tyve'],
|
|
33
|
+
[19n, 'nitten'],
|
|
34
|
+
[18n, 'atten'],
|
|
35
|
+
[17n, 'sytten'],
|
|
36
|
+
[16n, 'seksten'],
|
|
37
|
+
[15n, 'femten'],
|
|
38
|
+
[14n, 'fjorten'],
|
|
39
|
+
[13n, 'tretten'],
|
|
40
|
+
[12n, 'tolv'],
|
|
41
|
+
[11n, 'elleve'],
|
|
42
|
+
[10n, 'ti'],
|
|
43
|
+
[9n, 'ni'],
|
|
44
|
+
[8n, 'otte'],
|
|
45
|
+
[7n, 'syv'],
|
|
46
|
+
[6n, 'seks'],
|
|
47
|
+
[5n, 'fem'],
|
|
48
|
+
[4n, 'fire'],
|
|
49
|
+
[3n, 'tre'],
|
|
50
|
+
[2n, 'to'],
|
|
51
|
+
[1n, 'et'],
|
|
52
|
+
[0n, 'nul']
|
|
53
|
+
]);
|
|
54
|
+
|
|
55
|
+
this.ordFlag = options.ordFlag;
|
|
51
56
|
}
|
|
52
57
|
|
|
53
58
|
merge(curr, next) {
|
|
@@ -93,6 +98,13 @@ export class N2WordsDK extends N2WordsBase {
|
|
|
93
98
|
}
|
|
94
99
|
}
|
|
95
100
|
|
|
96
|
-
|
|
97
|
-
|
|
101
|
+
/**
|
|
102
|
+
* Converts a value to cardinal (written) form.
|
|
103
|
+
* @param {number|string} value Number to be convert.
|
|
104
|
+
* @param {object} options Options for class.
|
|
105
|
+
* @throws {Error} Value cannot be invalid.
|
|
106
|
+
* @returns {string} Value in cardinal (written) format.
|
|
107
|
+
*/
|
|
108
|
+
export default function(value, options) {
|
|
109
|
+
return new N2WordsDK(options).floatToCardinal(value);
|
|
98
110
|
}
|
package/lib/i18n/EN.mjs
CHANGED
|
@@ -1,72 +1,84 @@
|
|
|
1
|
-
import
|
|
1
|
+
import BaseLanguage from '../classes/BaseLanguage.mjs';
|
|
2
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
|
-
|
|
3
|
+
/**
|
|
4
|
+
* This class is for converting numbers to english words.
|
|
5
|
+
*/
|
|
6
|
+
class English extends BaseLanguage {
|
|
7
|
+
constructor(options) {
|
|
8
|
+
super(Object.assign({
|
|
9
|
+
negativeWord: 'minus',
|
|
10
|
+
separatorWord: 'point',
|
|
11
|
+
zero: 'zero'
|
|
12
|
+
}, options), [
|
|
13
|
+
[1000000000000000000000000000n, 'octillion'],
|
|
14
|
+
[1000000000000000000000000n, 'septillion'],
|
|
15
|
+
[1000000000000000000000n, 'sextillion'],
|
|
16
|
+
[1000000000000000000n, 'quintillion'],
|
|
17
|
+
[1000000000000000n, 'quadrillion'],
|
|
18
|
+
[1000000000000n, 'trillion'],
|
|
19
|
+
[1000000000n, 'billion'],
|
|
20
|
+
[1000000n, 'million'],
|
|
21
|
+
[1000n, 'thousand'],
|
|
22
|
+
[100n, 'hundred'],
|
|
23
|
+
[90n, 'ninety'],
|
|
24
|
+
[80n, 'eighty'],
|
|
25
|
+
[70n, 'seventy'],
|
|
26
|
+
[60n, 'sixty'],
|
|
27
|
+
[50n, 'fifty'],
|
|
28
|
+
[40n, 'forty'],
|
|
29
|
+
[30n, 'thirty'],
|
|
30
|
+
[20n, 'twenty'],
|
|
31
|
+
[19n, 'nineteen'],
|
|
32
|
+
[18n, 'eighteen'],
|
|
33
|
+
[17n, 'seventeen'],
|
|
34
|
+
[16n, 'sixteen'],
|
|
35
|
+
[15n, 'fifteen'],
|
|
36
|
+
[14n, 'fourteen'],
|
|
37
|
+
[13n, 'thirteen'],
|
|
38
|
+
[12n, 'twelve'],
|
|
39
|
+
[11n, 'eleven'],
|
|
40
|
+
[10n, 'ten'],
|
|
41
|
+
[9n, 'nine'],
|
|
42
|
+
[8n, 'eight'],
|
|
43
|
+
[7n, 'seven'],
|
|
44
|
+
[6n, 'six'],
|
|
45
|
+
[5n, 'five'],
|
|
46
|
+
[4n, 'four'],
|
|
47
|
+
[3n, 'three'],
|
|
48
|
+
[2n, 'two'],
|
|
49
|
+
[1n, 'one'],
|
|
50
|
+
[0n, 'zero']
|
|
51
|
+
]);
|
|
50
52
|
}
|
|
51
53
|
|
|
52
54
|
/**
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
+
* Merge word set pairs
|
|
55
56
|
* @param {object} lPair {'one':1}
|
|
56
57
|
* @param {object} rPair {'hundred':100}
|
|
57
58
|
* @returns {object} {'one hundred': 100}
|
|
58
59
|
*/
|
|
59
60
|
merge(lPair, rPair) {
|
|
60
|
-
const lText = Object.keys(lPair)[0];
|
|
61
|
-
const
|
|
61
|
+
const lText = Object.keys(lPair)[0];
|
|
62
|
+
const lNum = parseInt(Object.values(lPair)[0]);
|
|
63
|
+
const rText = Object.keys(rPair)[0];
|
|
64
|
+
const rNum = parseInt(Object.values(rPair)[0]);
|
|
65
|
+
|
|
62
66
|
if (lNum == 1 && rNum < 100) return { [rText]: rNum };
|
|
63
67
|
else if (100 > lNum && lNum > rNum) return { [`${lText}-${rText}`]: lNum + rNum };
|
|
64
68
|
else if (lNum >= 100 && 100 > rNum) return { [`${lText} and ${rText}`]: lNum + rNum };
|
|
65
69
|
else if (rNum > lNum) return { [`${lText} ${rText}`]: lNum * rNum };
|
|
70
|
+
|
|
66
71
|
return { [`${lText} ${rText}`]: lNum + rNum };
|
|
67
72
|
}
|
|
68
73
|
}
|
|
69
74
|
|
|
70
|
-
|
|
71
|
-
|
|
75
|
+
/**
|
|
76
|
+
* Converts a value to cardinal (written) form.
|
|
77
|
+
* @param {number|string} value Number to be convert.
|
|
78
|
+
* @param {object} options Options for class.
|
|
79
|
+
* @throws {Error} Value cannot be invalid.
|
|
80
|
+
* @returns {string} Value in cardinal (written) format.
|
|
81
|
+
*/
|
|
82
|
+
export default function(value, options) {
|
|
83
|
+
return new English(options).floatToCardinal(value);
|
|
72
84
|
}
|