n2words 1.13.0 → 1.14.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 +19 -9
- package/lib/i18n/AZ.mjs +42 -37
- package/lib/i18n/CZ.mjs +78 -69
- package/lib/i18n/DE.mjs +54 -49
- package/lib/i18n/DK.mjs +56 -50
- package/lib/i18n/EN.mjs +64 -53
- package/lib/i18n/ES.mjs +61 -55
- package/lib/i18n/FA.mjs +74 -63
- package/lib/i18n/FR.mjs +52 -47
- package/lib/i18n/HE.mjs +75 -23
- package/lib/i18n/HR.mjs +82 -70
- package/lib/i18n/HU.mjs +80 -75
- package/lib/i18n/ID.mjs +27 -20
- package/lib/i18n/IT.mjs +26 -17
- package/lib/i18n/KO.mjs +36 -31
- package/lib/i18n/LT.mjs +80 -67
- package/lib/i18n/LV.mjs +68 -57
- package/lib/i18n/NL.mjs +72 -61
- package/lib/i18n/NO.mjs +56 -51
- package/lib/i18n/PL.mjs +79 -67
- package/lib/i18n/PT.mjs +50 -44
- package/lib/i18n/RU.mjs +152 -122
- package/lib/i18n/SR.mjs +82 -70
- package/lib/i18n/TR.mjs +44 -42
- package/lib/i18n/UK.mjs +13 -6
- package/lib/i18n/VI.mjs +31 -24
- package/lib/i18n/ZH.mjs +38 -32
- package/lib/n2words.mjs +32 -106
- package/package.json +16 -10
- package/webpack.config.js +1 -1
- package/lib/classes/N2WordsAbs.mjs +0 -72
- package/lib/classes/N2WordsBase.mjs +0 -105
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
|
|
3
|
+
export class N2WordsDE extends BaseLanguage {
|
|
4
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
|
-
];
|
|
5
|
+
super({
|
|
6
|
+
negativeWord: 'minus',
|
|
7
|
+
separatorWord: 'komma',
|
|
8
|
+
zero: 'null'
|
|
9
|
+
},[
|
|
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,12 @@ 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
|
+
* @throws {Error} Value cannot be invalid.
|
|
100
|
+
* @returns {string} Value in cardinal (written) format.
|
|
101
|
+
*/
|
|
102
|
+
export default function(value) {
|
|
103
|
+
return new N2WordsDE().floatToCardinal(value);
|
|
99
104
|
}
|
package/lib/i18n/DK.mjs
CHANGED
|
@@ -1,53 +1,53 @@
|
|
|
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 = false;
|
|
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() {
|
|
7
|
+
super({
|
|
8
|
+
negativeWord: 'minus',
|
|
9
|
+
separatorWord: 'komma',
|
|
10
|
+
zero: 'nul',
|
|
11
|
+
},[
|
|
12
|
+
[1000000000000000000000000000n, 'quadrillarder'],
|
|
13
|
+
[1000000000000000000000000n, 'quadrillioner'],
|
|
14
|
+
[1000000000000000000000n, 'trillarder'],
|
|
15
|
+
[1000000000000000000n, 'trillioner'],
|
|
16
|
+
[1000000000000000n, 'billarder'],
|
|
17
|
+
[1000000000000n, 'billioner'],
|
|
18
|
+
[1000000000n, 'millarder'],
|
|
19
|
+
[1000000n, 'millioner'],
|
|
20
|
+
[1000n, 'tusind'],
|
|
21
|
+
[100n, 'hundrede'],
|
|
22
|
+
[90n, 'halvfems'],
|
|
23
|
+
[80n, 'firs'],
|
|
24
|
+
[70n, 'halvfjerds'],
|
|
25
|
+
[60n, 'treds'],
|
|
26
|
+
[50n, 'halvtreds'],
|
|
27
|
+
[40n, 'fyrre'],
|
|
28
|
+
[30n, 'tredive'],
|
|
29
|
+
[20n, 'tyve'],
|
|
30
|
+
[19n, 'nitten'],
|
|
31
|
+
[18n, 'atten'],
|
|
32
|
+
[17n, 'sytten'],
|
|
33
|
+
[16n, 'seksten'],
|
|
34
|
+
[15n, 'femten'],
|
|
35
|
+
[14n, 'fjorten'],
|
|
36
|
+
[13n, 'tretten'],
|
|
37
|
+
[12n, 'tolv'],
|
|
38
|
+
[11n, 'elleve'],
|
|
39
|
+
[10n, 'ti'],
|
|
40
|
+
[9n, 'ni'],
|
|
41
|
+
[8n, 'otte'],
|
|
42
|
+
[7n, 'syv'],
|
|
43
|
+
[6n, 'seks'],
|
|
44
|
+
[5n, 'fem'],
|
|
45
|
+
[4n, 'fire'],
|
|
46
|
+
[3n, 'tre'],
|
|
47
|
+
[2n, 'to'],
|
|
48
|
+
[1n, 'et'],
|
|
49
|
+
[0n, 'nul']
|
|
50
|
+
]);
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
merge(curr, next) {
|
|
@@ -93,6 +93,12 @@ export class N2WordsDK extends N2WordsBase {
|
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
95
|
|
|
96
|
-
|
|
97
|
-
|
|
96
|
+
/**
|
|
97
|
+
* Converts a value to cardinal (written) form.
|
|
98
|
+
* @param {number|string} value Number to be convert.
|
|
99
|
+
* @throws {Error} Value cannot be invalid.
|
|
100
|
+
* @returns {string} Value in cardinal (written) format.
|
|
101
|
+
*/
|
|
102
|
+
export default function(value) {
|
|
103
|
+
return new N2WordsDK().floatToCardinal(value);
|
|
98
104
|
}
|
package/lib/i18n/EN.mjs
CHANGED
|
@@ -1,72 +1,83 @@
|
|
|
1
|
-
import
|
|
1
|
+
import BaseLanguage from '../classes/BaseLanguage.mjs';
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
/**
|
|
4
|
+
* This class is for converting numbers to english words.
|
|
5
|
+
*/
|
|
6
|
+
class English extends BaseLanguage {
|
|
4
7
|
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
|
-
];
|
|
8
|
+
super({
|
|
9
|
+
negativeWord: 'minus',
|
|
10
|
+
separatorWord: 'point',
|
|
11
|
+
zero: 'zero'
|
|
12
|
+
},[
|
|
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
|
+
* @throws {Error} Value cannot be invalid.
|
|
79
|
+
* @returns {string} Value in cardinal (written) format.
|
|
80
|
+
*/
|
|
81
|
+
export default function(value) {
|
|
82
|
+
return new English().floatToCardinal(value);
|
|
72
83
|
}
|
package/lib/i18n/ES.mjs
CHANGED
|
@@ -1,58 +1,58 @@
|
|
|
1
|
-
import
|
|
1
|
+
import BaseLanguage from '../classes/BaseLanguage.mjs';
|
|
2
2
|
|
|
3
|
-
export class N2WordsES extends
|
|
4
|
-
|
|
5
|
-
super();
|
|
3
|
+
export class N2WordsES extends BaseLanguage {
|
|
4
|
+
genderStem = 'o';
|
|
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
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
6
|
+
constructor() {
|
|
7
|
+
super({
|
|
8
|
+
negativeWord: 'menos',
|
|
9
|
+
separatorWord: 'punto',
|
|
10
|
+
zero: 'cero'
|
|
11
|
+
},[
|
|
12
|
+
[1000000000000000000000000n, 'cuatrillón'],
|
|
13
|
+
[1000000000000000000n, 'trillón'],
|
|
14
|
+
[1000000000000n, 'billón'],
|
|
15
|
+
[1000000n, 'millón'],
|
|
16
|
+
[1000n, 'mil'],
|
|
17
|
+
[100n, 'cien'],
|
|
18
|
+
[90n, 'noventa'],
|
|
19
|
+
[80n, 'ochenta'],
|
|
20
|
+
[70n, 'setenta'],
|
|
21
|
+
[60n, 'sesenta'],
|
|
22
|
+
[50n, 'cincuenta'],
|
|
23
|
+
[40n, 'cuarenta'],
|
|
24
|
+
[30n, 'treinta'],
|
|
25
|
+
[29n, 'veintinueve'],
|
|
26
|
+
[28n, 'veintiocho'],
|
|
27
|
+
[27n, 'veintisiete'],
|
|
28
|
+
[26n, 'veintiséis'],
|
|
29
|
+
[25n, 'veinticinco'],
|
|
30
|
+
[24n, 'veinticuatro'],
|
|
31
|
+
[23n, 'veintitrés'],
|
|
32
|
+
[22n, 'veintidós'],
|
|
33
|
+
[21n, 'veintiuno'],
|
|
34
|
+
[20n, 'veinte'],
|
|
35
|
+
[19n, 'diecinueve'],
|
|
36
|
+
[18n, 'dieciocho'],
|
|
37
|
+
[17n, 'diecisiete'],
|
|
38
|
+
[16n, 'dieciseis'],
|
|
39
|
+
[15n, 'quince'],
|
|
40
|
+
[14n, 'catorce'],
|
|
41
|
+
[13n, 'trece'],
|
|
42
|
+
[12n, 'doce'],
|
|
43
|
+
[11n, 'once'],
|
|
44
|
+
[10n, 'diez'],
|
|
45
|
+
[9n, 'nueve'],
|
|
46
|
+
[8n, 'ocho'],
|
|
47
|
+
[7n, 'siete'],
|
|
48
|
+
[6n, 'seis'],
|
|
49
|
+
[5n, 'cinco'],
|
|
50
|
+
[4n, 'cuatro'],
|
|
51
|
+
[3n, 'tres'],
|
|
52
|
+
[2n, 'dos'],
|
|
53
|
+
[1n, 'uno'],
|
|
54
|
+
[0n, 'cero']
|
|
55
|
+
]);
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
merge(curr, next) {
|
|
@@ -93,6 +93,12 @@ export class N2WordsES extends N2WordsBase {
|
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
95
|
|
|
96
|
-
|
|
97
|
-
|
|
96
|
+
/**
|
|
97
|
+
* Converts a value to cardinal (written) form.
|
|
98
|
+
* @param {number|string} value Number to be convert.
|
|
99
|
+
* @throws {Error} Value cannot be invalid.
|
|
100
|
+
* @returns {string} Value in cardinal (written) format.
|
|
101
|
+
*/
|
|
102
|
+
export default function(value) {
|
|
103
|
+
return new N2WordsES().floatToCardinal(value);
|
|
98
104
|
}
|