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/KO.mjs
CHANGED
|
@@ -1,34 +1,33 @@
|
|
|
1
|
-
import
|
|
1
|
+
import BaseLanguage from '../classes/BaseLanguage.mjs';
|
|
2
2
|
|
|
3
|
-
export class N2WordsKO 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
|
-
];
|
|
3
|
+
export class N2WordsKO extends BaseLanguage {
|
|
4
|
+
constructor(options) {
|
|
5
|
+
super(Object.assign({
|
|
6
|
+
negativeWord: '마이너스',
|
|
7
|
+
separatorWord: '점',
|
|
8
|
+
zero: '영'
|
|
9
|
+
}, options), [
|
|
10
|
+
[10000000000000000000000000000n, '양'],
|
|
11
|
+
[1000000000000000000000000n, '자'],
|
|
12
|
+
[100000000000000000000n, '해'],
|
|
13
|
+
[10000000000000000n, '경'],
|
|
14
|
+
[1000000000000n, '조'],
|
|
15
|
+
[100000000n, '억'],
|
|
16
|
+
[10000n, '만'],
|
|
17
|
+
[1000n, '천'],
|
|
18
|
+
[100n, '백'],
|
|
19
|
+
[10n, '십'],
|
|
20
|
+
[9n, '구'],
|
|
21
|
+
[8n, '팔'],
|
|
22
|
+
[7n, '칠'],
|
|
23
|
+
[6n, '육'],
|
|
24
|
+
[5n, '오'],
|
|
25
|
+
[4n, '사'],
|
|
26
|
+
[3n, '삼'],
|
|
27
|
+
[2n, '이'],
|
|
28
|
+
[1n, '일'],
|
|
29
|
+
[0n, '영']
|
|
30
|
+
]);
|
|
32
31
|
}
|
|
33
32
|
|
|
34
33
|
merge(lPair, rPair) {
|
|
@@ -43,6 +42,13 @@ export class N2WordsKO extends N2WordsBase {
|
|
|
43
42
|
}
|
|
44
43
|
}
|
|
45
44
|
|
|
46
|
-
|
|
47
|
-
|
|
45
|
+
/**
|
|
46
|
+
* Converts a value to cardinal (written) form.
|
|
47
|
+
* @param {number|string} value Number to be convert.
|
|
48
|
+
* @param {object} options Options for class.
|
|
49
|
+
* @throws {Error} Value cannot be invalid.
|
|
50
|
+
* @returns {string} Value in cardinal (written) format.
|
|
51
|
+
*/
|
|
52
|
+
export default function(value, options) {
|
|
53
|
+
return new N2WordsKO(options).floatToCardinal(value);
|
|
48
54
|
}
|
package/lib/i18n/LT.mjs
CHANGED
|
@@ -1,70 +1,75 @@
|
|
|
1
1
|
import {N2WordsRU} from './RU.mjs';
|
|
2
2
|
|
|
3
3
|
export class N2WordsLT extends N2WordsRU {
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
ones = {
|
|
5
|
+
1: 'vienas',
|
|
6
|
+
2: 'du',
|
|
7
|
+
3: 'trys',
|
|
8
|
+
4: 'keturi',
|
|
9
|
+
5: 'penki',
|
|
10
|
+
6: 'šeši',
|
|
11
|
+
7: 'septyni',
|
|
12
|
+
8: 'aštuoni',
|
|
13
|
+
9: 'devyni'
|
|
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
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
8: ['septilijonas', 'septilijonai', 'septilijonų'],
|
|
65
|
-
9: ['oktilijonas', 'oktilijonai', 'oktilijonų'],
|
|
66
|
-
10: ['naintilijonas', 'naintilijonai', 'naintilijonų'],
|
|
67
|
-
};
|
|
16
|
+
onesFeminine = {
|
|
17
|
+
1: 'viena',
|
|
18
|
+
2: 'dvi',
|
|
19
|
+
3: 'trys',
|
|
20
|
+
4: 'keturios',
|
|
21
|
+
5: 'penkios',
|
|
22
|
+
6: 'šešios',
|
|
23
|
+
7: 'septynios',
|
|
24
|
+
8: 'aštuonios',
|
|
25
|
+
9: 'devynios'
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
tens = {
|
|
29
|
+
0: 'dešimt',
|
|
30
|
+
1: 'vienuolika',
|
|
31
|
+
2: 'dvylika',
|
|
32
|
+
3: 'trylika',
|
|
33
|
+
4: 'keturiolika',
|
|
34
|
+
5: 'penkiolika',
|
|
35
|
+
6: 'šešiolika',
|
|
36
|
+
7: 'septyniolika',
|
|
37
|
+
8: 'aštuoniolika',
|
|
38
|
+
9: 'devyniolika'
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
twenties = {
|
|
42
|
+
2: 'dvidešimt',
|
|
43
|
+
3: 'trisdešimt',
|
|
44
|
+
4: 'keturiasdešimt',
|
|
45
|
+
5: 'penkiasdešimt',
|
|
46
|
+
6: 'šešiasdešimt',
|
|
47
|
+
7: 'septyniasdešimt',
|
|
48
|
+
8: 'aštuoniasdešimt',
|
|
49
|
+
9: 'devyniasdešimt'
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
hundreds = ['šimtas', 'šimtai'];
|
|
53
|
+
|
|
54
|
+
thousands = {
|
|
55
|
+
1: ['tūkstantis', 'tūkstančiai', 'tūkstančių'],
|
|
56
|
+
2: ['milijonas', 'milijonai', 'milijonų'],
|
|
57
|
+
3: ['milijardas', 'milijardai', 'milijardų'],
|
|
58
|
+
4: ['trilijonas', 'trilijonai', 'trilijonų'],
|
|
59
|
+
5: ['kvadrilijonas', 'kvadrilijonai', 'kvadrilijonų'],
|
|
60
|
+
6: ['kvintilijonas', 'kvintilijonai', 'kvintilijonų'],
|
|
61
|
+
7: ['sikstilijonas', 'sikstilijonai', 'sikstilijonų'],
|
|
62
|
+
8: ['septilijonas', 'septilijonai', 'septilijonų'],
|
|
63
|
+
9: ['oktilijonas', 'oktilijonai', 'oktilijonų'],
|
|
64
|
+
10: ['naintilijonas', 'naintilijonai', 'naintilijonų'],
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
constructor(options) {
|
|
68
|
+
super(Object.assign({
|
|
69
|
+
negativeWord: 'minus',
|
|
70
|
+
separatorWord: 'kablelis',
|
|
71
|
+
zero: 'nulis'
|
|
72
|
+
}, options));
|
|
68
73
|
}
|
|
69
74
|
|
|
70
75
|
pluralize(n, forms) {
|
|
@@ -79,11 +84,11 @@ export class N2WordsLT extends N2WordsRU {
|
|
|
79
84
|
}
|
|
80
85
|
|
|
81
86
|
toCardinal(number) {
|
|
82
|
-
if (
|
|
87
|
+
if (number == 0) {
|
|
83
88
|
return this.zero;
|
|
84
89
|
}
|
|
85
90
|
const words = [];
|
|
86
|
-
const chunks = this.splitByX(
|
|
91
|
+
const chunks = this.splitByX(number.toString(), 3);
|
|
87
92
|
let i = chunks.length;
|
|
88
93
|
for (let j = 0; j < chunks.length; j++) {
|
|
89
94
|
const x = chunks[j];
|
|
@@ -120,6 +125,13 @@ export class N2WordsLT extends N2WordsRU {
|
|
|
120
125
|
}
|
|
121
126
|
}
|
|
122
127
|
|
|
123
|
-
|
|
124
|
-
|
|
128
|
+
/**
|
|
129
|
+
* Converts a value to cardinal (written) form.
|
|
130
|
+
* @param {number|string} value Number to be convert.
|
|
131
|
+
* @param {object} options Options for class.
|
|
132
|
+
* @throws {Error} Value cannot be invalid.
|
|
133
|
+
* @returns {string} Value in cardinal (written) format.
|
|
134
|
+
*/
|
|
135
|
+
export default function(value, options) {
|
|
136
|
+
return new N2WordsLT(options).floatToCardinal(value);
|
|
125
137
|
}
|
package/lib/i18n/LV.mjs
CHANGED
|
@@ -1,64 +1,69 @@
|
|
|
1
1
|
import {N2WordsRU} from './RU.mjs';
|
|
2
2
|
|
|
3
3
|
export class N2WordsLV extends N2WordsRU{
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
ones = {
|
|
5
|
+
1: 'viens',
|
|
6
|
+
2: 'divi',
|
|
7
|
+
3: 'trīs',
|
|
8
|
+
4: 'četri',
|
|
9
|
+
5: 'pieci',
|
|
10
|
+
6: 'seši',
|
|
11
|
+
7: 'septiņi',
|
|
12
|
+
8: 'astoņi',
|
|
13
|
+
9: 'deviņi'
|
|
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
|
-
8: ['septiljons', 'septiljoni', 'septiljonu'],
|
|
53
|
-
9: ['oktiljons', 'oktiljoni', 'oktiljonu'],
|
|
54
|
-
10: ['nontiljons', 'nontiljoni', 'nontiljonu'],
|
|
55
|
-
};
|
|
16
|
+
tens = {
|
|
17
|
+
0: 'desmit',
|
|
18
|
+
1: 'vienpadsmit',
|
|
19
|
+
2: 'divpadsmit',
|
|
20
|
+
3: 'trīspadsmit',
|
|
21
|
+
4: 'četrpadsmit',
|
|
22
|
+
5: 'piecpadsmit',
|
|
23
|
+
6: 'sešpadsmit',
|
|
24
|
+
7: 'septiņpadsmit',
|
|
25
|
+
8: 'astoņpadsmit',
|
|
26
|
+
9: 'deviņpadsmit'
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
twenties = {
|
|
30
|
+
2: 'divdesmit',
|
|
31
|
+
3: 'trīsdesmit',
|
|
32
|
+
4: 'četrdesmit',
|
|
33
|
+
5: 'piecdesmit',
|
|
34
|
+
6: 'sešdesmit',
|
|
35
|
+
7: 'septiņdesmit',
|
|
36
|
+
8: 'astoņdesmit',
|
|
37
|
+
9: 'deviņdesmit'
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
hundreds = ['simts', 'simti', 'simtu'];
|
|
41
|
+
|
|
42
|
+
thousands = {
|
|
43
|
+
1: ['tūkstotis', 'tūkstoši', 'tūkstošu'],
|
|
44
|
+
2: ['miljons', 'miljoni', 'miljonu'],
|
|
45
|
+
3: ['miljards', 'miljardi', 'miljardu'],
|
|
46
|
+
4: ['triljons', 'triljoni', 'triljonu'],
|
|
47
|
+
5: ['kvadriljons', 'kvadriljoni', 'kvadriljonu'],
|
|
48
|
+
6: ['kvintiljons', 'kvintiljoni', 'kvintiljonu'],
|
|
49
|
+
7: ['sikstiljons', 'sikstiljoni', 'sikstiljonu'],
|
|
50
|
+
8: ['septiljons', 'septiljoni', 'septiljonu'],
|
|
51
|
+
9: ['oktiljons', 'oktiljoni', 'oktiljonu'],
|
|
52
|
+
10: ['nontiljons', 'nontiljoni', 'nontiljonu'],
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
constructor(options) {
|
|
56
|
+
super(Object.assign({
|
|
57
|
+
negativeWord: 'mīnus',
|
|
58
|
+
separatorWord: 'komats',
|
|
59
|
+
zero: 'nulle'
|
|
60
|
+
}, options));
|
|
56
61
|
}
|
|
57
62
|
|
|
58
63
|
pluralize(n, forms) {
|
|
59
64
|
let form = 2;
|
|
60
|
-
if (n !=
|
|
61
|
-
if (n %
|
|
65
|
+
if (n != 0n) {
|
|
66
|
+
if (n % 10n == 1n && n % 100n != 11n) {
|
|
62
67
|
form = 0;
|
|
63
68
|
} else {
|
|
64
69
|
form = 1;
|
|
@@ -68,11 +73,11 @@ export class N2WordsLV extends N2WordsRU{
|
|
|
68
73
|
}
|
|
69
74
|
|
|
70
75
|
toCardinal(number) {
|
|
71
|
-
if (
|
|
76
|
+
if (number == 0) {
|
|
72
77
|
return this.zero;
|
|
73
78
|
}
|
|
74
79
|
const words = [];
|
|
75
|
-
const chunks = this.splitByX(
|
|
80
|
+
const chunks = this.splitByX(number.toString(), 3);
|
|
76
81
|
let i = chunks.length;
|
|
77
82
|
for (let j = 0; j < chunks.length; j++) {
|
|
78
83
|
const x = chunks[j];
|
|
@@ -107,6 +112,13 @@ export class N2WordsLV extends N2WordsRU{
|
|
|
107
112
|
}
|
|
108
113
|
}
|
|
109
114
|
|
|
110
|
-
|
|
111
|
-
|
|
115
|
+
/**
|
|
116
|
+
* Converts a value to cardinal (written) form.
|
|
117
|
+
* @param {number|string} value Number to be convert.
|
|
118
|
+
* @param {object} options Options for class.
|
|
119
|
+
* @throws {Error} Value cannot be invalid.
|
|
120
|
+
* @returns {string} Value in cardinal (written) format.
|
|
121
|
+
*/
|
|
122
|
+
export default function(value, options) {
|
|
123
|
+
return new N2WordsLV(options).floatToCardinal(value);
|
|
112
124
|
}
|
package/lib/i18n/NL.mjs
CHANGED
|
@@ -1,58 +1,61 @@
|
|
|
1
|
-
import
|
|
1
|
+
import BaseLanguage from '../classes/BaseLanguage.mjs';
|
|
2
2
|
|
|
3
|
-
export class N2WordsNL extends
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
this.negativeWord = 'min';
|
|
8
|
-
this.separatorWord = 'komma';
|
|
9
|
-
this.zero = 'nul';
|
|
3
|
+
export class N2WordsNL extends BaseLanguage {
|
|
4
|
+
includeOptionalAnd;
|
|
5
|
+
noHundredPairs;
|
|
10
6
|
|
|
11
|
-
|
|
7
|
+
constructor(options) {
|
|
8
|
+
options = Object.assign({
|
|
9
|
+
negativeWord: 'min',
|
|
10
|
+
separatorWord: 'komma',
|
|
11
|
+
zero: 'nul',
|
|
12
12
|
includeOptionalAnd: false,
|
|
13
|
-
noHundredPairs: false
|
|
13
|
+
noHundredPairs: false
|
|
14
14
|
}, options);
|
|
15
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
|
-
];
|
|
16
|
+
super(options, [
|
|
17
|
+
[1000000000000000000000000000n, 'quadriljard'],
|
|
18
|
+
[1000000000000000000000000n, 'quadriljoen'],
|
|
19
|
+
[1000000000000000000000n, 'triljard'],
|
|
20
|
+
[1000000000000000000n, 'triljoen'],
|
|
21
|
+
[1000000000000000n, 'biljard'],
|
|
22
|
+
[1000000000000n, 'biljoen'],
|
|
23
|
+
[1000000000n, 'miljard'],
|
|
24
|
+
[1000000n, 'miljoen'],
|
|
25
|
+
[1000n, 'duizend'],
|
|
26
|
+
[100n, 'honderd'],
|
|
27
|
+
[90n, 'negentig'],
|
|
28
|
+
[80n, 'tachtig'],
|
|
29
|
+
[70n, 'zeventig'],
|
|
30
|
+
[60n, 'zestig'],
|
|
31
|
+
[50n, 'vijftig'],
|
|
32
|
+
[40n, 'veertig'],
|
|
33
|
+
[30n, 'dertig'],
|
|
34
|
+
[20n, 'twintig'],
|
|
35
|
+
[19n, 'negentien'],
|
|
36
|
+
[18n, 'achttien'],
|
|
37
|
+
[17n, 'zeventien'],
|
|
38
|
+
[16n, 'zestien'],
|
|
39
|
+
[15n, 'vijftien'],
|
|
40
|
+
[14n, 'veertien'],
|
|
41
|
+
[13n, 'dertien'],
|
|
42
|
+
[12n, 'twaalf'],
|
|
43
|
+
[11n, 'elf'],
|
|
44
|
+
[10n, 'tien'],
|
|
45
|
+
[9n, 'negen'],
|
|
46
|
+
[8n, 'acht'],
|
|
47
|
+
[7n, 'zeven'],
|
|
48
|
+
[6n, 'zes'],
|
|
49
|
+
[5n, 'vijf'],
|
|
50
|
+
[4n, 'vier'],
|
|
51
|
+
[3n, 'drie'],
|
|
52
|
+
[2n, 'twee'],
|
|
53
|
+
[1n, 'een'],
|
|
54
|
+
[0n, 'nul'],
|
|
55
|
+
]);
|
|
56
|
+
|
|
57
|
+
this.includeOptionalAnd = options.includeOptionalAnd;
|
|
58
|
+
this.noHundredPairs = options.noHundredPairs;
|
|
56
59
|
}
|
|
57
60
|
|
|
58
61
|
merge(curr, next) {
|
|
@@ -81,14 +84,14 @@ export class N2WordsNL extends N2WordsBase {
|
|
|
81
84
|
nText = cText;
|
|
82
85
|
const andTxt = temp.endsWith('e') ? 'ën' : 'en';
|
|
83
86
|
cText = `${temp}${andTxt}`;
|
|
84
|
-
} else if (nNum < 13 && cNum < 1000 && this.
|
|
87
|
+
} else if (nNum < 13 && cNum < 1000 && this.includeOptionalAnd) {
|
|
85
88
|
cText = `${cText}en`;
|
|
86
|
-
} else if (nNum < 13 && cNum >= 1000 && this.
|
|
89
|
+
} else if (nNum < 13 && cNum >= 1000 && this.includeOptionalAnd) {
|
|
87
90
|
nText = ` en ${nText}`;
|
|
88
91
|
} else if (cNum >= 1000000) {
|
|
89
92
|
cText += ' ';
|
|
90
93
|
} else {
|
|
91
|
-
if (cNum
|
|
94
|
+
if (cNum == 1000) {
|
|
92
95
|
cText += ' ';
|
|
93
96
|
}
|
|
94
97
|
}
|
|
@@ -98,18 +101,25 @@ export class N2WordsNL extends N2WordsBase {
|
|
|
98
101
|
}
|
|
99
102
|
|
|
100
103
|
toCardinal(value) {
|
|
101
|
-
if (value >=
|
|
102
|
-
const high =
|
|
103
|
-
const low = value %
|
|
104
|
-
if (high %
|
|
104
|
+
if (value >= 1100n && value < 10000n && !this.noHundredPairs) {
|
|
105
|
+
const high = value / 100n;
|
|
106
|
+
const low = value % 100n;
|
|
107
|
+
if (high % 10n !== 0n) {
|
|
105
108
|
return super.toCardinal(high) + 'honderd' +
|
|
106
|
-
(low ? (this.
|
|
109
|
+
(low ? (this.includeOptionalAnd ? ' en ' : ' ') + super.toCardinal(low) : '');
|
|
107
110
|
}
|
|
108
111
|
}
|
|
109
112
|
return super.toCardinal(value);
|
|
110
113
|
}
|
|
111
114
|
}
|
|
112
115
|
|
|
113
|
-
|
|
114
|
-
|
|
116
|
+
/**
|
|
117
|
+
* Converts a value to cardinal (written) form.
|
|
118
|
+
* @param {number|string} value Number to be convert.
|
|
119
|
+
* @param {object} options Options for class.
|
|
120
|
+
* @throws {Error} Value cannot be invalid.
|
|
121
|
+
* @returns {string} Value in cardinal (written) format.
|
|
122
|
+
*/
|
|
123
|
+
export default function(value, options) {
|
|
124
|
+
return new N2WordsNL(options).floatToCardinal(value);
|
|
115
125
|
}
|