n2words 1.9.0 → 1.11.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 +64 -5
- package/CHANGELOG.md +34 -0
- package/README.md +33 -14
- package/dist/n2words.js +1 -1
- package/lib/classes/N2WordsAbs.mjs +55 -34
- package/lib/classes/N2WordsBase.mjs +25 -19
- package/lib/i18n/AR.mjs +91 -83
- package/lib/i18n/CZ.mjs +80 -74
- package/lib/i18n/DE.mjs +82 -73
- package/lib/i18n/DK.mjs +82 -73
- package/lib/i18n/EN.mjs +68 -54
- package/lib/i18n/ES.mjs +86 -77
- package/lib/i18n/FA.mjs +67 -62
- package/lib/i18n/FR.mjs +72 -63
- package/lib/i18n/HE.mjs +40 -33
- package/lib/i18n/HR.mjs +117 -0
- package/lib/i18n/HU.mjs +70 -64
- package/lib/i18n/ID.mjs +155 -0
- package/lib/i18n/IT.mjs +46 -40
- package/lib/i18n/KO.mjs +44 -35
- package/lib/i18n/LT.mjs +86 -80
- package/lib/i18n/LV.mjs +74 -67
- package/lib/i18n/NL.mjs +92 -87
- package/lib/i18n/NO.mjs +65 -56
- package/lib/i18n/PL.mjs +81 -75
- package/lib/i18n/PT.mjs +85 -77
- package/lib/i18n/RU.mjs +99 -93
- package/lib/i18n/SR.mjs +83 -77
- package/lib/i18n/TR.mjs +227 -218
- package/lib/i18n/UK.mjs +80 -74
- package/lib/i18n/ZH.mjs +52 -41
- package/lib/n2words.mjs +60 -54
- package/package.json +17 -20
- package/webpack.config.js +2 -5
- package/lib/n2words_EN.mjs +0 -11
package/lib/i18n/DE.mjs
CHANGED
|
@@ -1,90 +1,99 @@
|
|
|
1
1
|
import N2WordsBase from '../classes/N2WordsBase.mjs';
|
|
2
2
|
|
|
3
|
-
export
|
|
4
|
-
|
|
3
|
+
export class N2WordsDE extends N2WordsBase {
|
|
4
|
+
constructor() {
|
|
5
|
+
super();
|
|
5
6
|
|
|
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
|
-
|
|
7
|
+
this.negativeWord = 'minus';
|
|
8
|
+
this.separatorWord = 'komma';
|
|
9
|
+
this.zero = 'null';
|
|
10
|
+
this.cards = [
|
|
11
|
+
{ '1000000000000000000000000000': 'Quadrilliarde' },
|
|
12
|
+
{ '1000000000000000000000000': 'Quadrillion' },
|
|
13
|
+
{ '1000000000000000000000': 'Trilliarde' },
|
|
14
|
+
{ 1000000000000000000: 'Trillion' },
|
|
15
|
+
{ 1000000000000000: 'Billiarde' },
|
|
16
|
+
{ 1000000000000: 'Billion' },
|
|
17
|
+
{ 1000000000: 'Milliarde' },
|
|
18
|
+
{ 1000000: 'Million' },
|
|
19
|
+
{ 1000: 'tausend' },
|
|
20
|
+
{ 100: 'hundert' },
|
|
21
|
+
{ 90: 'neunzig' },
|
|
22
|
+
{ 80: 'achtzig' },
|
|
23
|
+
{ 70: 'siebzig' },
|
|
24
|
+
{ 60: 'sechzig' },
|
|
25
|
+
{ 50: 'fünfzig' },
|
|
26
|
+
{ 40: 'vierzig' },
|
|
27
|
+
{ 30: 'dreißig' },
|
|
28
|
+
{ 20: 'zwanzig' },
|
|
29
|
+
{ 19: 'neunzehn' },
|
|
30
|
+
{ 18: 'achtzehn' },
|
|
31
|
+
{ 17: 'siebzehn' },
|
|
32
|
+
{ 16: 'sechzehn' },
|
|
33
|
+
{ 15: 'fünfzehn' },
|
|
34
|
+
{ 14: 'vierzehn' },
|
|
35
|
+
{ 13: 'dreizehn' },
|
|
36
|
+
{ 12: 'zwölf' },
|
|
37
|
+
{ 11: 'elf' },
|
|
38
|
+
{ 10: 'zehn' },
|
|
39
|
+
{ 9: 'neun' },
|
|
40
|
+
{ 8: 'acht' },
|
|
41
|
+
{ 7: 'sieben' },
|
|
42
|
+
{ 6: 'sechs' },
|
|
43
|
+
{ 5: 'fünf' },
|
|
44
|
+
{ 4: 'vier' },
|
|
45
|
+
{ 3: 'drei' },
|
|
46
|
+
{ 2: 'zwei' },
|
|
47
|
+
{ 1: 'eins' },
|
|
48
|
+
{ 0: 'null' }
|
|
49
|
+
];
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
merge(curr, next) {
|
|
53
|
+
let cText = Object.keys(curr)[0];
|
|
54
|
+
let nText = Object.keys(next)[0];
|
|
55
|
+
const cNum = parseInt(Object.values(curr)[0]);
|
|
56
|
+
const nNum = parseInt(Object.values(next)[0]);
|
|
57
|
+
if (cNum == 1) {
|
|
58
|
+
if (nNum == 100 || nNum == 1000) {
|
|
59
|
+
return { [`ein${nText}`]: nNum };
|
|
60
|
+
} else if (nNum < 1000000) {
|
|
61
|
+
return { [nText]: nNum };
|
|
57
62
|
}
|
|
58
|
-
|
|
63
|
+
cText = 'eine';
|
|
59
64
|
}
|
|
60
65
|
|
|
61
66
|
let val = 0;
|
|
62
|
-
if (
|
|
63
|
-
if (
|
|
64
|
-
if (
|
|
65
|
-
if (
|
|
66
|
-
|
|
67
|
+
if (nNum > cNum) {
|
|
68
|
+
if (nNum >= 1000000) {
|
|
69
|
+
if (cNum > 1) {
|
|
70
|
+
if (nText[nText.length - 1] == 'e') {
|
|
71
|
+
nText += 'n';
|
|
67
72
|
} else {
|
|
68
|
-
|
|
73
|
+
nText += 'en';
|
|
69
74
|
}
|
|
70
75
|
}
|
|
71
|
-
|
|
76
|
+
cText += ' ';
|
|
72
77
|
}
|
|
73
|
-
val =
|
|
78
|
+
val = cNum * nNum;
|
|
74
79
|
} else {
|
|
75
|
-
if (
|
|
76
|
-
if (
|
|
77
|
-
|
|
80
|
+
if (nNum < 10 && cNum > 10 && cNum < 100) {
|
|
81
|
+
if (nNum == 1) {
|
|
82
|
+
nText = 'ein';
|
|
78
83
|
}
|
|
79
|
-
const temp =
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
} else if (
|
|
83
|
-
|
|
84
|
+
const temp = nText;
|
|
85
|
+
nText = cText;
|
|
86
|
+
cText = `${temp}und`;
|
|
87
|
+
} else if (cNum >= 1000000) {
|
|
88
|
+
cText += ' ';
|
|
84
89
|
}
|
|
85
|
-
val =
|
|
90
|
+
val = cNum + nNum;
|
|
86
91
|
}
|
|
87
92
|
|
|
88
|
-
return { [`${
|
|
89
|
-
}
|
|
93
|
+
return { [`${cText}${nText}`]: val };
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export default function(n) {
|
|
98
|
+
return new N2WordsDE().floatToCardinal(n);
|
|
90
99
|
}
|
package/lib/i18n/DK.mjs
CHANGED
|
@@ -1,89 +1,98 @@
|
|
|
1
1
|
import N2WordsBase from '../classes/N2WordsBase.mjs';
|
|
2
2
|
|
|
3
|
-
export
|
|
4
|
-
|
|
3
|
+
export class N2WordsDK extends N2WordsBase {
|
|
4
|
+
constructor() {
|
|
5
|
+
super();
|
|
5
6
|
|
|
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
|
-
|
|
7
|
+
this.negativeWord = 'minus';
|
|
8
|
+
this.separatorWord = 'komma';
|
|
9
|
+
this.zero = 'nul';
|
|
10
|
+
this.ordFlag = false;
|
|
11
|
+
this.cards = [
|
|
12
|
+
{ '1000000000000000000000000000': 'quadrillarder' },
|
|
13
|
+
{ '1000000000000000000000000': 'quadrillioner' },
|
|
14
|
+
{ '1000000000000000000000': 'trillarder' },
|
|
15
|
+
{ '1000000000000000000': 'trillioner' },
|
|
16
|
+
{ '1000000000000000': 'billarder' },
|
|
17
|
+
{ '1000000000000': 'billioner' },
|
|
18
|
+
{ '1000000000': 'millarder' },
|
|
19
|
+
{ '1000000': 'millioner' },
|
|
20
|
+
{ '1000': 'tusind' },
|
|
21
|
+
{ '100': 'hundrede' },
|
|
22
|
+
{ '90': 'halvfems' },
|
|
23
|
+
{ '80': 'firs' },
|
|
24
|
+
{ '70': 'halvfjerds' },
|
|
25
|
+
{ '60': 'treds' },
|
|
26
|
+
{ '50': 'halvtreds' },
|
|
27
|
+
{ '40': 'fyrre' },
|
|
28
|
+
{ '30': 'tredive' },
|
|
29
|
+
{ '20': 'tyve' },
|
|
30
|
+
{ '19': 'nitten' },
|
|
31
|
+
{ '18': 'atten' },
|
|
32
|
+
{ '17': 'sytten' },
|
|
33
|
+
{ '16': 'seksten' },
|
|
34
|
+
{ '15': 'femten' },
|
|
35
|
+
{ '14': 'fjorten' },
|
|
36
|
+
{ '13': 'tretten' },
|
|
37
|
+
{ '12': 'tolv' },
|
|
38
|
+
{ '11': 'elleve' },
|
|
39
|
+
{ '10': 'ti' },
|
|
40
|
+
{ '9': 'ni' },
|
|
41
|
+
{ '8': 'otte' },
|
|
42
|
+
{ '7': 'syv' },
|
|
43
|
+
{ '6': 'seks' },
|
|
44
|
+
{ '5': 'fem' },
|
|
45
|
+
{ '4': 'fire' },
|
|
46
|
+
{ '3': 'tre' },
|
|
47
|
+
{ '2': 'to' },
|
|
48
|
+
{ '1': 'et' },
|
|
49
|
+
{ '0': 'nul' }
|
|
50
|
+
];
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
merge(curr, next) {
|
|
54
|
+
let cText = Object.keys(curr)[0];
|
|
55
|
+
let nText = Object.keys(next)[0];
|
|
56
|
+
const cNum = parseInt(Object.values(curr)[0]);
|
|
57
|
+
const nNum = parseInt(Object.values(next)[0]);
|
|
53
58
|
let val = 1;
|
|
54
|
-
if (
|
|
55
|
-
next = { [`et${
|
|
59
|
+
if (nNum == 100 || nNum == 1000) {
|
|
60
|
+
next = { [`et${nText}`]: nNum };
|
|
56
61
|
}
|
|
57
|
-
if (
|
|
58
|
-
if (
|
|
62
|
+
if (cNum == 1) {
|
|
63
|
+
if (nNum < 1000000 || this.ordFlag) {
|
|
59
64
|
return next;
|
|
60
65
|
}
|
|
61
|
-
|
|
66
|
+
cText = 'en';
|
|
62
67
|
}
|
|
63
|
-
if (
|
|
64
|
-
if (
|
|
65
|
-
|
|
68
|
+
if (nNum > cNum) {
|
|
69
|
+
if (nNum >= 1000000) {
|
|
70
|
+
cText += ' ';
|
|
66
71
|
}
|
|
67
|
-
val =
|
|
72
|
+
val = cNum * nNum;
|
|
68
73
|
} else {
|
|
69
|
-
if (
|
|
70
|
-
|
|
71
|
-
} else if (
|
|
72
|
-
|
|
74
|
+
if (cNum >= 100 && cNum < 1000) {
|
|
75
|
+
cText += ' og ';
|
|
76
|
+
} else if (cNum >= 1000 && cNum <= 100000) {
|
|
77
|
+
cText += 'e og ';
|
|
73
78
|
}
|
|
74
|
-
if ((
|
|
75
|
-
if (
|
|
76
|
-
|
|
79
|
+
if ((nNum < 10) && (10 < cNum) && (cNum < 100)) {
|
|
80
|
+
if (nNum == 1) {
|
|
81
|
+
nText = 'en';
|
|
77
82
|
}
|
|
78
|
-
const temp =
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
} else if (
|
|
82
|
-
|
|
83
|
+
const temp = nText;
|
|
84
|
+
nText = cText;
|
|
85
|
+
cText = temp + 'og';
|
|
86
|
+
} else if (cNum >= 1000000) {
|
|
87
|
+
cText += ' ';
|
|
83
88
|
}
|
|
84
|
-
val =
|
|
89
|
+
val = cNum + nNum;
|
|
85
90
|
}
|
|
86
|
-
const word =
|
|
91
|
+
const word = cText + nText;
|
|
87
92
|
return { [`${word}`]: val };
|
|
88
|
-
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export default function(n) {
|
|
97
|
+
return new N2WordsDK().floatToCardinal(n);
|
|
89
98
|
}
|
package/lib/i18n/EN.mjs
CHANGED
|
@@ -1,58 +1,72 @@
|
|
|
1
1
|
import N2WordsBase from '../classes/N2WordsBase.mjs';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
class N2WordsEN extends N2WordsBase {
|
|
4
|
+
constructor() {
|
|
5
|
+
super();
|
|
5
6
|
|
|
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
|
-
|
|
7
|
+
this.negativeWord = 'minus';
|
|
8
|
+
this.separatorWord = 'point';
|
|
9
|
+
this.zero = 'zero';
|
|
10
|
+
this.cards = [
|
|
11
|
+
{ '1000000000000000000000000000': 'octillion' },
|
|
12
|
+
{ '1000000000000000000000000': 'septillion' },
|
|
13
|
+
{ '1000000000000000000000': 'sextillion' },
|
|
14
|
+
{ '1000000000000000000': 'quintillion' },
|
|
15
|
+
{ '1000000000000000': 'quadrillion' },
|
|
16
|
+
{ '1000000000000': 'trillion' },
|
|
17
|
+
{ '1000000000': 'billion' },
|
|
18
|
+
{ '1000000': 'million' },
|
|
19
|
+
{ '1000': 'thousand' },
|
|
20
|
+
{ '100': 'hundred' },
|
|
21
|
+
{ '90': 'ninety' },
|
|
22
|
+
{ '80': 'eighty' },
|
|
23
|
+
{ '70': 'seventy' },
|
|
24
|
+
{ '60': 'sixty' },
|
|
25
|
+
{ '50': 'fifty' },
|
|
26
|
+
{ '40': 'forty' },
|
|
27
|
+
{ '30': 'thirty' },
|
|
28
|
+
{ '20': 'twenty' },
|
|
29
|
+
{ '19': 'nineteen' },
|
|
30
|
+
{ '18': 'eighteen' },
|
|
31
|
+
{ '17': 'seventeen' },
|
|
32
|
+
{ '16': 'sixteen' },
|
|
33
|
+
{ '15': 'fifteen' },
|
|
34
|
+
{ '14': 'fourteen' },
|
|
35
|
+
{ '13': 'thirteen' },
|
|
36
|
+
{ '12': 'twelve' },
|
|
37
|
+
{ '11': 'eleven' },
|
|
38
|
+
{ '10': 'ten' },
|
|
39
|
+
{ '9': 'nine' },
|
|
40
|
+
{ '8': 'eight' },
|
|
41
|
+
{ '7': 'seven' },
|
|
42
|
+
{ '6': 'six' },
|
|
43
|
+
{ '5': 'five' },
|
|
44
|
+
{ '4': 'four' },
|
|
45
|
+
{ '3': 'three' },
|
|
46
|
+
{ '2': 'two' },
|
|
47
|
+
{ '1': 'one' },
|
|
48
|
+
{ '0': 'zero' }
|
|
49
|
+
];
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
*
|
|
54
|
+
*
|
|
55
|
+
* @param {object} lPair {'one':1}
|
|
56
|
+
* @param {object} rPair {'hundred':100}
|
|
57
|
+
* @returns {object} {'one hundred': 100}
|
|
58
|
+
*/
|
|
59
|
+
merge(lPair, rPair) {
|
|
60
|
+
const lText = Object.keys(lPair)[0]; const lNum = parseInt(Object.values(lPair)[0]);
|
|
61
|
+
const rText = Object.keys(rPair)[0]; const rNum = parseInt(Object.values(rPair)[0]);
|
|
62
|
+
if (lNum == 1 && rNum < 100) return { [rText]: rNum };
|
|
63
|
+
else if (100 > lNum && lNum > rNum) return { [`${lText}-${rText}`]: lNum + rNum };
|
|
64
|
+
else if (lNum >= 100 && 100 > rNum) return { [`${lText} and ${rText}`]: lNum + rNum };
|
|
65
|
+
else if (rNum > lNum) return { [`${lText} ${rText}`]: lNum * rNum };
|
|
66
|
+
return { [`${lText} ${rText}`]: lNum + rNum };
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export default function(n) {
|
|
71
|
+
return new N2WordsEN().floatToCardinal(n);
|
|
58
72
|
}
|
package/lib/i18n/ES.mjs
CHANGED
|
@@ -1,89 +1,98 @@
|
|
|
1
1
|
import N2WordsBase from '../classes/N2WordsBase.mjs';
|
|
2
2
|
|
|
3
|
-
export
|
|
4
|
-
|
|
3
|
+
export class N2WordsES extends N2WordsBase {
|
|
4
|
+
constructor() {
|
|
5
|
+
super();
|
|
5
6
|
|
|
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
|
-
|
|
7
|
+
this.genderStem = 'o';
|
|
8
|
+
this.negativeWord = 'menos';
|
|
9
|
+
this.separatorWord = 'punto';
|
|
10
|
+
this.zero = 'cero';
|
|
11
|
+
this.cards = [
|
|
12
|
+
{ '1000000000000000000000000': 'cuatrillón' },
|
|
13
|
+
{ '1000000000000000000': 'trillón' },
|
|
14
|
+
{ '1000000000000': 'billón' },
|
|
15
|
+
{ '1000000': 'millón' },
|
|
16
|
+
{ '1000': 'mil' },
|
|
17
|
+
{ '100': 'cien' },
|
|
18
|
+
{ '90': 'noventa' },
|
|
19
|
+
{ '80': 'ochenta' },
|
|
20
|
+
{ '70': 'setenta' },
|
|
21
|
+
{ '60': 'sesenta' },
|
|
22
|
+
{ '50': 'cincuenta' },
|
|
23
|
+
{ '40': 'cuarenta' },
|
|
24
|
+
{ '30': 'treinta' },
|
|
25
|
+
{ '29': 'veintinueve' },
|
|
26
|
+
{ '28': 'veintiocho' },
|
|
27
|
+
{ '27': 'veintisiete' },
|
|
28
|
+
{ '26': 'veintiséis' },
|
|
29
|
+
{ '25': 'veinticinco' },
|
|
30
|
+
{ '24': 'veinticuatro' },
|
|
31
|
+
{ '23': 'veintitrés' },
|
|
32
|
+
{ '22': 'veintidós' },
|
|
33
|
+
{ '21': 'veintiuno' },
|
|
34
|
+
{ '20': 'veinte' },
|
|
35
|
+
{ '19': 'diecinueve' },
|
|
36
|
+
{ '18': 'dieciocho' },
|
|
37
|
+
{ '17': 'diecisiete' },
|
|
38
|
+
{ '16': 'dieciseis' },
|
|
39
|
+
{ '15': 'quince' },
|
|
40
|
+
{ '14': 'catorce' },
|
|
41
|
+
{ '13': 'trece' },
|
|
42
|
+
{ '12': 'doce' },
|
|
43
|
+
{ '11': 'once' },
|
|
44
|
+
{ '10': 'diez' },
|
|
45
|
+
{ '9': 'nueve' },
|
|
46
|
+
{ '8': 'ocho' },
|
|
47
|
+
{ '7': 'siete' },
|
|
48
|
+
{ '6': 'seis' },
|
|
49
|
+
{ '5': 'cinco' },
|
|
50
|
+
{ '4': 'cuatro' },
|
|
51
|
+
{ '3': 'tres' },
|
|
52
|
+
{ '2': 'dos' },
|
|
53
|
+
{ '1': 'uno' },
|
|
54
|
+
{ '0': 'cero' }
|
|
55
|
+
];
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
merge(curr, next) {
|
|
59
|
+
let cText = Object.keys(curr)[0];
|
|
60
|
+
let nText = Object.keys(next)[0];
|
|
61
|
+
const cNum = parseInt(Object.values(curr)[0]);
|
|
62
|
+
const nNum = parseInt(Object.values(next)[0]);
|
|
63
|
+
if (cNum == 1) {
|
|
64
|
+
if (nNum < 1000000) return { [nText]: nNum };
|
|
65
|
+
cText = 'un';
|
|
66
|
+
} else if (cNum == 100 && nNum % 1000 != 0) {
|
|
67
|
+
cText += 't' + this.genderStem;
|
|
63
68
|
}
|
|
64
69
|
|
|
65
|
-
if (
|
|
66
|
-
if (
|
|
67
|
-
return { [`${
|
|
70
|
+
if (nNum < cNum) {
|
|
71
|
+
if (cNum < 100) {
|
|
72
|
+
return { [`${cText} y ${nText}`]: cNum + nNum };
|
|
68
73
|
}
|
|
69
|
-
return { [`${
|
|
70
|
-
} else if (
|
|
71
|
-
|
|
74
|
+
return { [`${cText} ${nText}`]: cNum + nNum };
|
|
75
|
+
} else if (nNum % 1000000 == 0 && cNum > 1) {
|
|
76
|
+
nText = nText.slice(0, -3) + 'lones';
|
|
72
77
|
}
|
|
73
78
|
|
|
74
|
-
if (
|
|
75
|
-
if (
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
} else if (
|
|
79
|
-
|
|
80
|
-
} else if (
|
|
81
|
-
|
|
79
|
+
if (nNum == 100) {
|
|
80
|
+
if (cNum == 5) {
|
|
81
|
+
cText = 'quinien';
|
|
82
|
+
nText = '';
|
|
83
|
+
} else if (cNum == 7) {
|
|
84
|
+
cText = 'sete';
|
|
85
|
+
} else if (cNum == 9) {
|
|
86
|
+
cText = 'nove';
|
|
82
87
|
}
|
|
83
|
-
|
|
88
|
+
nText += 't' + this.genderStem + 's';
|
|
84
89
|
} else {
|
|
85
|
-
|
|
90
|
+
nText = ' ' + nText;
|
|
86
91
|
}
|
|
87
|
-
return { [`${
|
|
88
|
-
}
|
|
92
|
+
return { [`${cText}${nText}`]: cNum * nNum };
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export default function(n) {
|
|
97
|
+
return new N2WordsES().floatToCardinal(n);
|
|
89
98
|
}
|