italian-numbers 1.3.0 → 1.3.4
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/README.md +1 -1
- package/dist/index.d.mts +168 -0
- package/dist/index.d.ts +168 -0
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +5 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -36,6 +36,7 @@ yarn add --save italian-numbers
|
|
|
36
36
|
import {
|
|
37
37
|
cardinalConverter,
|
|
38
38
|
ordinalConverter,
|
|
39
|
+
italianConverter,
|
|
39
40
|
romanConverter,
|
|
40
41
|
arabicConverter,
|
|
41
42
|
} from 'italian-numbers';
|
|
@@ -71,7 +72,6 @@ italianConverter('prima'); // 1
|
|
|
71
72
|
italianConverter('quattrocentotredicesime'); // 413
|
|
72
73
|
italianConverter('infinitesimi'); // Infinity
|
|
73
74
|
|
|
74
|
-
|
|
75
75
|
// Arabic to Roman
|
|
76
76
|
romanConverter(1); // 'I'
|
|
77
77
|
romanConverter(79); // 'LXXIX'
|
package/dist/index.d.mts
CHANGED
|
@@ -1,15 +1,183 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @name cardinalConverter
|
|
3
|
+
* @summary Converts a number to an italian word representation (cardinal number)
|
|
4
|
+
*
|
|
5
|
+
* @param {number} number - Any number
|
|
6
|
+
* @returns {string} Italian word representation (cardinal number)
|
|
7
|
+
* @throws Error if number is NaN or greater than 999999999999 or lower than 999999999999
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* cardinalConverter(1);
|
|
11
|
+
* //=> 'uno'
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* cardinalConverter(90);
|
|
15
|
+
* //=> 'novanta'
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* cardinalConverter(709);
|
|
19
|
+
* //=> 'settecentonove'
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* cardinalConverter(-1);
|
|
23
|
+
* //=> 'meno uno'
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* cardinalConverter(Infinity);
|
|
27
|
+
* //=> 'infinito'
|
|
28
|
+
*/
|
|
1
29
|
declare const cardinalConverter: (number: number) => string;
|
|
2
30
|
|
|
3
31
|
type Options = {
|
|
4
32
|
female?: boolean;
|
|
5
33
|
plural?: boolean;
|
|
6
34
|
};
|
|
35
|
+
/**
|
|
36
|
+
* @name ordinalConverter
|
|
37
|
+
* @summary Converts a number to an italian word representation (ordinal number)
|
|
38
|
+
*
|
|
39
|
+
* @param {number} number - Any number
|
|
40
|
+
* @param {Options} options
|
|
41
|
+
* If `options.female` is true return representation in feminine style.
|
|
42
|
+
* If `options.plural` is true return representation in plural style.
|
|
43
|
+
* Female and plural can be used together
|
|
44
|
+
* @returns {string} Italian word representation (ordinal number)
|
|
45
|
+
* @throws Error if number is NaN or greater than 999999999999 or negative
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ordinalConverter(1);
|
|
49
|
+
* //=> 'primo'
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ordinalConverter(10);
|
|
53
|
+
* //=> 'decimo'
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* ordinalConverter(63);
|
|
57
|
+
* //=> 'sessantatreesimo'
|
|
58
|
+
*
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ordinalConverter(Infinity);
|
|
62
|
+
* //=> 'infinitesimo'
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ordinalConverter(1, { female: true });
|
|
66
|
+
* //=> 'prima'
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* ordinalConverter(15, { female: true });
|
|
70
|
+
* //=> 'quindicesima'
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* ordinalConverter(109, { female: true });
|
|
74
|
+
* //=> 'centonovesima'
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* ordinalConverter(1, { plural: true });
|
|
78
|
+
* //=> 'primi'
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* ordinalConverter(18, { plural: true });
|
|
82
|
+
* //=> 'diciottesimi'
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* ordinalConverter(89, { plural: true });
|
|
86
|
+
* //=> 'ottantanovesimi'
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ordinalConverter(1, { plural: true, female: true });
|
|
90
|
+
* //=> 'prime'
|
|
91
|
+
*
|
|
92
|
+
* @example
|
|
93
|
+
* ordinalConverter(70, { plural: true, female: true });
|
|
94
|
+
* //=> 'settantesime'
|
|
95
|
+
*
|
|
96
|
+
* @example
|
|
97
|
+
* ordinalConverter(110, { plural: true, female: true });
|
|
98
|
+
* //=> 'centodecime'
|
|
99
|
+
*/
|
|
7
100
|
declare const ordinalConverter: (number: number, options?: Options) => string;
|
|
8
101
|
|
|
102
|
+
/**
|
|
103
|
+
* @name romanConverter
|
|
104
|
+
* @summary Converts an Arabic number to a Roman number
|
|
105
|
+
*
|
|
106
|
+
* @param {number} number - Arabic number
|
|
107
|
+
* @returns {string} Roman string representation
|
|
108
|
+
* @throws Error if number is NaN or greater than 3999 or lower than 1
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* romanConverter(1);
|
|
112
|
+
* //=> 'I'
|
|
113
|
+
*
|
|
114
|
+
* @example
|
|
115
|
+
* romanConverter(79);
|
|
116
|
+
* //=> 'LXXIX'
|
|
117
|
+
*
|
|
118
|
+
* @example
|
|
119
|
+
* romanConverter(2317);
|
|
120
|
+
* //=> 'MMCCCXVII'
|
|
121
|
+
*/
|
|
9
122
|
declare const romanConverter: (number: number) => string;
|
|
10
123
|
|
|
124
|
+
/**
|
|
125
|
+
* @name arabicConverter
|
|
126
|
+
* @summary Converts a Roman number to an Arabic number
|
|
127
|
+
*
|
|
128
|
+
* @param {string} romanNumber - Roman number
|
|
129
|
+
* @returns {number} Arabic number representation
|
|
130
|
+
* @throws Error if parameter is not a valid roman number
|
|
131
|
+
*
|
|
132
|
+
* @example
|
|
133
|
+
* arabicConverter('MD');
|
|
134
|
+
* //=> 1500
|
|
135
|
+
*
|
|
136
|
+
* @example
|
|
137
|
+
* arabicConverter('CDXC');
|
|
138
|
+
* //=> 490
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
* arabicConverter('MCMXC');
|
|
142
|
+
* //=> 1900
|
|
143
|
+
*/
|
|
11
144
|
declare const arabicConverter: (romanNumber: string) => number;
|
|
12
145
|
|
|
146
|
+
/**
|
|
147
|
+
* @name italianConverter
|
|
148
|
+
* @summary Converts an italian word representation to a number
|
|
149
|
+
*
|
|
150
|
+
* @param {string} word - Number italian word representation
|
|
151
|
+
* @returns {number} Converted number or NaN
|
|
152
|
+
*
|
|
153
|
+
* @example
|
|
154
|
+
* italianConverter('uno');
|
|
155
|
+
* //=> 1
|
|
156
|
+
*
|
|
157
|
+
* @example
|
|
158
|
+
* italianConverter('novantasette');
|
|
159
|
+
* //=> 97
|
|
160
|
+
*
|
|
161
|
+
* @example
|
|
162
|
+
* italianConverter('un milione tredicimila');
|
|
163
|
+
* //=> 101
|
|
164
|
+
* 3000
|
|
165
|
+
* @example
|
|
166
|
+
* italianConverter('zeresimo');
|
|
167
|
+
* //=> 0
|
|
168
|
+
*
|
|
169
|
+
* @example
|
|
170
|
+
* italianConverter('prima');
|
|
171
|
+
* //=> 1
|
|
172
|
+
*
|
|
173
|
+
* @example
|
|
174
|
+
* italianConverter('quattrocentotredicesime');
|
|
175
|
+
* //=> 413
|
|
176
|
+
*
|
|
177
|
+
* @example
|
|
178
|
+
* italianConverter('infinitesimi');
|
|
179
|
+
* //=> Infinity
|
|
180
|
+
*/
|
|
13
181
|
declare const italianConverter: (word: string) => number;
|
|
14
182
|
|
|
15
183
|
export { arabicConverter, cardinalConverter, italianConverter, ordinalConverter, romanConverter };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,15 +1,183 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @name cardinalConverter
|
|
3
|
+
* @summary Converts a number to an italian word representation (cardinal number)
|
|
4
|
+
*
|
|
5
|
+
* @param {number} number - Any number
|
|
6
|
+
* @returns {string} Italian word representation (cardinal number)
|
|
7
|
+
* @throws Error if number is NaN or greater than 999999999999 or lower than 999999999999
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* cardinalConverter(1);
|
|
11
|
+
* //=> 'uno'
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* cardinalConverter(90);
|
|
15
|
+
* //=> 'novanta'
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* cardinalConverter(709);
|
|
19
|
+
* //=> 'settecentonove'
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* cardinalConverter(-1);
|
|
23
|
+
* //=> 'meno uno'
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* cardinalConverter(Infinity);
|
|
27
|
+
* //=> 'infinito'
|
|
28
|
+
*/
|
|
1
29
|
declare const cardinalConverter: (number: number) => string;
|
|
2
30
|
|
|
3
31
|
type Options = {
|
|
4
32
|
female?: boolean;
|
|
5
33
|
plural?: boolean;
|
|
6
34
|
};
|
|
35
|
+
/**
|
|
36
|
+
* @name ordinalConverter
|
|
37
|
+
* @summary Converts a number to an italian word representation (ordinal number)
|
|
38
|
+
*
|
|
39
|
+
* @param {number} number - Any number
|
|
40
|
+
* @param {Options} options
|
|
41
|
+
* If `options.female` is true return representation in feminine style.
|
|
42
|
+
* If `options.plural` is true return representation in plural style.
|
|
43
|
+
* Female and plural can be used together
|
|
44
|
+
* @returns {string} Italian word representation (ordinal number)
|
|
45
|
+
* @throws Error if number is NaN or greater than 999999999999 or negative
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ordinalConverter(1);
|
|
49
|
+
* //=> 'primo'
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ordinalConverter(10);
|
|
53
|
+
* //=> 'decimo'
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* ordinalConverter(63);
|
|
57
|
+
* //=> 'sessantatreesimo'
|
|
58
|
+
*
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ordinalConverter(Infinity);
|
|
62
|
+
* //=> 'infinitesimo'
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ordinalConverter(1, { female: true });
|
|
66
|
+
* //=> 'prima'
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* ordinalConverter(15, { female: true });
|
|
70
|
+
* //=> 'quindicesima'
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* ordinalConverter(109, { female: true });
|
|
74
|
+
* //=> 'centonovesima'
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* ordinalConverter(1, { plural: true });
|
|
78
|
+
* //=> 'primi'
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* ordinalConverter(18, { plural: true });
|
|
82
|
+
* //=> 'diciottesimi'
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* ordinalConverter(89, { plural: true });
|
|
86
|
+
* //=> 'ottantanovesimi'
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ordinalConverter(1, { plural: true, female: true });
|
|
90
|
+
* //=> 'prime'
|
|
91
|
+
*
|
|
92
|
+
* @example
|
|
93
|
+
* ordinalConverter(70, { plural: true, female: true });
|
|
94
|
+
* //=> 'settantesime'
|
|
95
|
+
*
|
|
96
|
+
* @example
|
|
97
|
+
* ordinalConverter(110, { plural: true, female: true });
|
|
98
|
+
* //=> 'centodecime'
|
|
99
|
+
*/
|
|
7
100
|
declare const ordinalConverter: (number: number, options?: Options) => string;
|
|
8
101
|
|
|
102
|
+
/**
|
|
103
|
+
* @name romanConverter
|
|
104
|
+
* @summary Converts an Arabic number to a Roman number
|
|
105
|
+
*
|
|
106
|
+
* @param {number} number - Arabic number
|
|
107
|
+
* @returns {string} Roman string representation
|
|
108
|
+
* @throws Error if number is NaN or greater than 3999 or lower than 1
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* romanConverter(1);
|
|
112
|
+
* //=> 'I'
|
|
113
|
+
*
|
|
114
|
+
* @example
|
|
115
|
+
* romanConverter(79);
|
|
116
|
+
* //=> 'LXXIX'
|
|
117
|
+
*
|
|
118
|
+
* @example
|
|
119
|
+
* romanConverter(2317);
|
|
120
|
+
* //=> 'MMCCCXVII'
|
|
121
|
+
*/
|
|
9
122
|
declare const romanConverter: (number: number) => string;
|
|
10
123
|
|
|
124
|
+
/**
|
|
125
|
+
* @name arabicConverter
|
|
126
|
+
* @summary Converts a Roman number to an Arabic number
|
|
127
|
+
*
|
|
128
|
+
* @param {string} romanNumber - Roman number
|
|
129
|
+
* @returns {number} Arabic number representation
|
|
130
|
+
* @throws Error if parameter is not a valid roman number
|
|
131
|
+
*
|
|
132
|
+
* @example
|
|
133
|
+
* arabicConverter('MD');
|
|
134
|
+
* //=> 1500
|
|
135
|
+
*
|
|
136
|
+
* @example
|
|
137
|
+
* arabicConverter('CDXC');
|
|
138
|
+
* //=> 490
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
* arabicConverter('MCMXC');
|
|
142
|
+
* //=> 1900
|
|
143
|
+
*/
|
|
11
144
|
declare const arabicConverter: (romanNumber: string) => number;
|
|
12
145
|
|
|
146
|
+
/**
|
|
147
|
+
* @name italianConverter
|
|
148
|
+
* @summary Converts an italian word representation to a number
|
|
149
|
+
*
|
|
150
|
+
* @param {string} word - Number italian word representation
|
|
151
|
+
* @returns {number} Converted number or NaN
|
|
152
|
+
*
|
|
153
|
+
* @example
|
|
154
|
+
* italianConverter('uno');
|
|
155
|
+
* //=> 1
|
|
156
|
+
*
|
|
157
|
+
* @example
|
|
158
|
+
* italianConverter('novantasette');
|
|
159
|
+
* //=> 97
|
|
160
|
+
*
|
|
161
|
+
* @example
|
|
162
|
+
* italianConverter('un milione tredicimila');
|
|
163
|
+
* //=> 101
|
|
164
|
+
* 3000
|
|
165
|
+
* @example
|
|
166
|
+
* italianConverter('zeresimo');
|
|
167
|
+
* //=> 0
|
|
168
|
+
*
|
|
169
|
+
* @example
|
|
170
|
+
* italianConverter('prima');
|
|
171
|
+
* //=> 1
|
|
172
|
+
*
|
|
173
|
+
* @example
|
|
174
|
+
* italianConverter('quattrocentotredicesime');
|
|
175
|
+
* //=> 413
|
|
176
|
+
*
|
|
177
|
+
* @example
|
|
178
|
+
* italianConverter('infinitesimi');
|
|
179
|
+
* //=> Infinity
|
|
180
|
+
*/
|
|
13
181
|
declare const italianConverter: (word: string) => number;
|
|
14
182
|
|
|
15
183
|
export { arabicConverter, cardinalConverter, italianConverter, ordinalConverter, romanConverter };
|
package/dist/index.js
CHANGED
|
@@ -253,6 +253,9 @@ var cardinalConverter = (number) => {
|
|
|
253
253
|
if (number > 999999999999) {
|
|
254
254
|
throw new Error("greater than 999999999999");
|
|
255
255
|
}
|
|
256
|
+
if (number < -999999999999) {
|
|
257
|
+
throw new Error("lower than 999999999999");
|
|
258
|
+
}
|
|
256
259
|
let prepend = "";
|
|
257
260
|
if (number < 0) {
|
|
258
261
|
prepend = "meno ";
|
|
@@ -470,7 +473,8 @@ var getNumberFromOrdinal = (ordinal) => {
|
|
|
470
473
|
cardinal = cardinal.replace(/milionesim\w$/, "milioni");
|
|
471
474
|
cardinal = cardinal.replace(/^miliardesim\w$/, "unmiliardo");
|
|
472
475
|
cardinal = cardinal.replace(/miliardesim\w$/, "miliardi");
|
|
473
|
-
cardinal = cardinal.replace(/
|
|
476
|
+
cardinal = cardinal.replace(/ventesim\w$/, "venti");
|
|
477
|
+
cardinal = cardinal.replace(/ntesim\w$/, "nta");
|
|
474
478
|
cardinal = cardinal.replace(/unesim\w$/, "uno");
|
|
475
479
|
cardinal = cardinal.replace(/quattresim\w$/, "quattro");
|
|
476
480
|
cardinal = cardinal.replace(/ottesim\w$/, "otto");
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/constants/constants.ts","../src/functions/cardinalConverter.ts","../src/functions/ordinalConverter.ts","../src/functions/romanConverter.ts","../src/functions/arabicConverter.ts","../src/functions/italianConverter.ts"],"sourcesContent":["export { default as cardinalConverter } from './functions/cardinalConverter';\nexport { default as ordinalConverter } from './functions/ordinalConverter';\nexport { default as romanConverter } from './functions/romanConverter';\nexport { default as arabicConverter } from './functions/arabicConverter';\nexport { default as italianConverter } from './functions/italianConverter';\n","export const zeroNineteen = [\n 'zero',\n 'uno',\n 'due',\n 'tre',\n 'quattro',\n 'cinque',\n 'sei',\n 'sette',\n 'otto',\n 'nove',\n 'dieci',\n 'undici',\n 'dodici',\n 'tredici',\n 'quattordici',\n 'quindici',\n 'sedici',\n 'diciassette',\n 'diciotto',\n 'diciannove',\n];\n\nexport const zeroTenOrdinals = [\n 'zeresimo',\n 'primo',\n 'secondo',\n 'terzo',\n 'quarto',\n 'quinto',\n 'sesto',\n 'settimo',\n 'ottavo',\n 'nono',\n 'decimo',\n];\n\nexport const tens = [\n 'venti',\n 'trenta',\n 'quaranta',\n 'cinquanta',\n 'sessanta',\n 'settanta',\n 'ottanta',\n 'novanta',\n];\n\nexport const hundred = 'cento';\nexport const thousands = ['mille', 'mila'];\nexport const millions = ['un milione', ' milioni'];\nexport const billions = ['un miliardo', ' miliardi'];\n\nexport const and = ' e ';\n\nexport const romanNumerals: { [key: string]: number } = {\n I: 1,\n V: 5,\n X: 10,\n L: 50,\n C: 100,\n D: 500,\n M: 1000,\n};\n\nexport const romanUnits = [\n '',\n 'I',\n 'II',\n 'III',\n 'IV',\n 'V',\n 'VI',\n 'VII',\n 'VIII',\n 'IX',\n];\n\nexport const romanTens = [\n '',\n 'X',\n 'XX',\n 'XXX',\n 'XL',\n 'L',\n 'LX',\n 'LXX',\n 'LXXX',\n 'XC',\n];\n\nexport const romanHundreds = [\n '',\n 'C',\n 'CC',\n 'CCC',\n 'CD',\n 'D',\n 'DC',\n 'DCC',\n 'DCCC',\n 'CM',\n];\n\nexport const romanThousands = [\n '',\n 'M',\n 'MM',\n 'MMM',\n];\n\nexport const unitsDict : { [unit: string] : number } = {\n un: 1,\n uno: 1,\n due: 2,\n tre: 3,\n tré: 3,\n quattro: 4,\n cinque: 5,\n sei: 6,\n sette: 7,\n otto: 8,\n nove: 9,\n dieci: 10,\n undici: 11,\n dodici: 12,\n tredici: 13,\n quattordici: 14,\n quindici: 15,\n sedici: 16,\n diciassette: 17,\n diciotto: 18,\n diciannove: 19,\n};\n\nexport const tensDict : { [ten: string] : number } = {\n venti: 20,\n trenta: 30,\n quaranta: 40,\n cinquanta: 50,\n sessanta: 60,\n settanta: 70,\n ottanta: 80,\n novanta: 90,\n};\n","import {\n zeroNineteen,\n tens,\n hundred,\n thousands,\n millions,\n billions,\n and,\n} from '../constants/constants';\n\nconst tensConverter = (n: number): string => {\n if (n < 20) {\n return zeroNineteen[n];\n }\n\n const firstDigit = Math.floor(n / 10) - 2;\n const secondDigit = n % 10;\n const word = tens[firstDigit];\n\n if (secondDigit === 0) {\n return word;\n }\n\n if (secondDigit === 1 || secondDigit === 8) {\n return word.slice(0, word.length - 1) + zeroNineteen[secondDigit];\n }\n\n return word + zeroNineteen[secondDigit];\n};\n\nconst hundredsConverter = (n: number): string => {\n const firstDigit = Math.floor(n / 100);\n if (firstDigit === 1) {\n return hundred;\n }\n\n return zeroNineteen[firstDigit] + hundred;\n};\n\nconst wordCalculator = (n: number): string => {\n const digitsNumber = Math.log(n) * Math.LOG10E + 1 | 0;\n\n if (digitsNumber < 3) {\n return tensConverter(n);\n }\n if (digitsNumber < 4) {\n if (n % 100 === 0) {\n return hundredsConverter(n);\n }\n\n if (n % 100 > 79 && n % 100 < 90) {\n const word = hundredsConverter(n);\n return word.slice(0, word.length - 1) + wordCalculator(n % 100);\n }\n\n return hundredsConverter(n) + wordCalculator(n % 100);\n }\n // thousands\n if (digitsNumber < 7) {\n const firstDigits = Math.floor(n / 1000);\n if (firstDigits === 1) {\n if (n % 1000 === 0) {\n return thousands[0];\n }\n return thousands[0] + wordCalculator(n % 1000);\n }\n if (n % 1000 === 0) {\n return wordCalculator(firstDigits) + thousands[1];\n }\n return (\n wordCalculator(firstDigits) + thousands[1] + wordCalculator(n % 1000)\n );\n }\n // millions\n if (digitsNumber < 10) {\n const firstDigits = Math.floor(n / 1000000);\n if (firstDigits === 1) {\n if (n % 1000000 === 0) {\n return millions[0];\n }\n return millions[0] + and + wordCalculator(n % 1000000);\n }\n if (n % 1000000 === 0) {\n return wordCalculator(firstDigits) + millions[1];\n }\n return (\n wordCalculator(firstDigits) + millions[1] + and + wordCalculator(n % 1000000)\n );\n }\n // billions\n if (digitsNumber < 13) {\n const firstDigits = Math.floor(n / 1000000000);\n if (firstDigits === 1) {\n if (n % 1000000000 === 0) {\n return billions[0];\n }\n return billions[0] + and + wordCalculator(n % 1000000000);\n }\n if (n % 1000000000 === 0) {\n return wordCalculator(firstDigits) + billions[1];\n }\n return (\n wordCalculator(firstDigits) + billions[1] + and + wordCalculator(n % 1000000000)\n );\n }\n\n return 'oh my zsh';\n};\n\nconst cardinalConverter = (number: number): string => {\n if (Number.isNaN(number)) {\n throw new Error('not a number');\n }\n if (number === Infinity) {\n return 'infinito';\n }\n\n if (number > 999999999999) {\n throw new Error('greater than 999999999999');\n }\n\n let prepend = '';\n if (number < 0) {\n prepend = 'meno ';\n }\n const n = Math.abs(number);\n\n let result = prepend + wordCalculator(n);\n if (result.endsWith('tre') && result !== 'tre') {\n result = result.replace(/.$/, 'é');\n }\n\n result = result.replaceAll(/(?<=\\w+)tre\\s/g, 'tré ');\n return result;\n};\n\nexport default cardinalConverter;\n","import { zeroTenOrdinals } from '../constants/constants';\nimport cardinalConverter from './cardinalConverter';\n\ntype Options = {\n female?: boolean;\n plural?: boolean;\n}\n\nconst converter = (n: number): string => {\n if (n < 11) {\n return zeroTenOrdinals[n];\n }\n\n let word = cardinalConverter(n);\n\n word = word.replaceAll(' e ', ' ');\n word = word.replace(/([io])\\s([ou])/g, (_match, p1, p2) => {\n if (p2 === 'o') {\n return p1;\n }\n if (p2 === 'u') {\n return p2;\n }\n return '';\n });\n word = word.replaceAll(/un\\s/g, '');\n word = word.replaceAll(/ouno$/g, 'uno');\n word = word.replaceAll(/ootto$/g, 'otto');\n word = word.replaceAll(' ', '');\n\n const lastDigit = n % 10;\n\n if (n % 100 !== 13 && lastDigit === 3) {\n return `${word.replace(/.$/, 'e')}esimo`;\n }\n if (n % 100 !== 16 && lastDigit === 6) {\n return `${word}esimo`;\n }\n if (n % 100 === 10) {\n return word.replace(/dieci$/g, 'decimo');\n }\n if (word.endsWith('mila')) {\n return word.replace(/mila/, 'millesimo');\n }\n\n return `${word.replace(/.$/, '')}esimo`;\n};\n\nconst ordinalConverter = (\n number: number,\n options: Options = { female: false, plural: false },\n): string => {\n if (number < 0) {\n throw new Error('negative number not allowed');\n }\n\n const result = converter(number);\n\n const { female, plural } = options;\n\n if (female && plural) {\n return result.replace(/.$/, 'e');\n }\n\n if (female) {\n return result.replace(/.$/, 'a');\n }\n\n if (plural) {\n return result.replace(/.$/, 'i');\n }\n\n return result;\n};\n\nexport default ordinalConverter;\n","import {\n romanHundreds,\n romanTens,\n romanThousands,\n romanUnits,\n} from '../constants/constants';\n\nconst romanConverter = (number: number): string => {\n if (Number.isNaN(number)) {\n throw new Error('not a number');\n }\n if (number === Infinity) {\n return 'infinitum';\n }\n\n if (number > 3999) {\n throw new Error('greater than 3999');\n }\n\n if (number < 1) {\n throw new Error('lower than 1');\n }\n\n const unit = number % 10;\n const ten = Math.floor(number / 10) % 10;\n const hundred = Math.floor(number / 100) % 10;\n const thousand = Math.floor(number / 1000) % 10;\n\n const result = `${romanThousands[thousand]}${romanHundreds[hundred]}${romanTens[ten]}${romanUnits[unit]}`;\n return result;\n};\n\nexport default romanConverter;\n","import { romanNumerals } from '../constants/constants';\nimport romanConverter from './romanConverter';\n\nexport const arabicConverter = (romanNumber: string): number => {\n if (romanNumber === 'infinitum') {\n return Infinity;\n }\n\n const romanLetters = Object.keys(romanNumerals);\n if (Array.from(romanNumber).some((letter) => !romanLetters.includes(letter))) {\n throw new Error('invalid roman number');\n }\n\n let number = 0;\n\n for (let i = 0; i < romanNumber.length; i++) {\n let arabicNumber = romanNumerals[romanNumber.charAt(i)];\n\n if (i + 1 < romanNumber.length) {\n const nextArabicNumber = romanNumerals[romanNumber.charAt(i + 1)];\n if (arabicNumber < nextArabicNumber) {\n arabicNumber *= -1;\n }\n }\n\n number += arabicNumber;\n }\n\n let isValid: boolean;\n try {\n isValid = romanNumber === romanConverter(number);\n } catch {\n throw new Error('invalid roman number');\n }\n\n if (!isValid) {\n throw new Error('invalid roman number');\n }\n\n return number;\n};\n\nexport default arabicConverter;\n","import { unitsDict, tensDict, zeroTenOrdinals } from '../constants/constants';\n\nconst tensConverter = (word: string): number => {\n if (unitsDict[word]) {\n return unitsDict[word];\n }\n\n const ten = Object.keys(tensDict).find((w) => word.startsWith(w.slice(0, -1)));\n if (!ten) {\n return NaN;\n }\n\n const result = tensDict[ten];\n if (word === ten) {\n return result;\n }\n\n let [, unit] = word.split(ten);\n if (!unit) {\n [, unit] = word.split(ten.slice(0, -1));\n }\n if (!unitsDict[unit]) {\n return NaN;\n }\n return result + unitsDict[unit];\n};\n\nconst hundredsConverter = (word: string): number => {\n const [hundred, ten] = word.split('cento');\n if (ten === undefined) {\n return tensConverter(hundred);\n }\n let result = -1;\n if (hundred === '') {\n result = 100;\n } else {\n if (!unitsDict[hundred]) {\n return NaN;\n }\n result = unitsDict[hundred] * 100;\n }\n if (ten !== '') {\n if (ten.startsWith('tt')) {\n result += tensConverter(`o${ten}`);\n } else {\n result += tensConverter(ten);\n }\n }\n\n return result;\n};\n\nconst numberCalculator = (word: string): number => {\n // billions\n let index = word.indexOf('miliard');\n if (index > -1) {\n const sub = word.slice(index + 8);\n let rest = 0;\n if (sub) {\n rest = numberCalculator(sub);\n }\n return hundredsConverter(word.slice(0, index)) * 1000000000 + rest;\n }\n\n // millions\n index = word.indexOf('milion');\n if (index > -1) {\n const sub = word.slice(index + 7);\n let rest = 0;\n if (sub) {\n rest = numberCalculator(sub);\n }\n return hundredsConverter(word.slice(0, index)) * 1000000 + rest;\n }\n\n // thousands\n index = word.indexOf('mila');\n if (index > -1) {\n const sub = word.slice(index + 4);\n let rest = 0;\n if (sub) {\n rest = numberCalculator(sub);\n }\n return hundredsConverter(word.slice(0, index)) * 1000 + rest;\n }\n\n index = word.indexOf('mille');\n if (index > -1) {\n const sub = word.slice(index + 5);\n if (!sub) {\n return 1000;\n }\n return 1000 + hundredsConverter(sub);\n }\n\n return hundredsConverter(word);\n};\n\nconst getNumberFromOrdinal = (ordinal: string): string => {\n let cardinal = ordinal;\n cardinal = cardinal.replace(/decim\\w$/, 'dieci');\n cardinal = cardinal.replace(/centesim\\w$/, 'cento');\n cardinal = cardinal.replace(/^millesim\\w$/, 'mille');\n cardinal = cardinal.replace(/millesim\\w$/, 'mila');\n cardinal = cardinal.replace(/^milionesim\\w$/, 'unmilione');\n cardinal = cardinal.replace(/milionesim\\w$/, 'milioni');\n cardinal = cardinal.replace(/^miliardesim\\w$/, 'unmiliardo');\n cardinal = cardinal.replace(/miliardesim\\w$/, 'miliardi');\n cardinal = cardinal.replace(/ntesim\\w$/, 'nti');\n cardinal = cardinal.replace(/unesim\\w$/, 'uno');\n cardinal = cardinal.replace(/quattresim\\w$/, 'quattro');\n cardinal = cardinal.replace(/ottesim\\w$/, 'otto');\n cardinal = cardinal.replace(/duesim\\w$/, 'due');\n cardinal = cardinal.replace(/cinquesim\\w$/, 'cinque');\n cardinal = cardinal.replace(/settesim\\w$/, 'sette');\n cardinal = cardinal.replace(/novesim\\w$/, 'nove');\n cardinal = cardinal.replace(/undicesim\\w$/, 'undici');\n cardinal = cardinal.replace(/dodicesim\\w$/, 'dodici');\n cardinal = cardinal.replace(/tredicesim\\w$/, 'tredici');\n cardinal = cardinal.replace(/quattordicesim\\w$/, 'quattordici');\n cardinal = cardinal.replace(/quindicesim\\w$/, 'quindici');\n cardinal = cardinal.replace(/sedicesim\\w$/, 'sedici');\n cardinal = cardinal.replace(/esim\\w$/, '');\n cardinal = cardinal.replace(/^milione/, 'unmilione');\n cardinal = cardinal.replace(/^miliard/, 'unmiliardo');\n cardinal = cardinal.replace(/centuno/, 'centouno');\n cardinal = cardinal.replace(/centotto/, 'centootto');\n cardinal = cardinal.replace(/miliarduno/, 'miliardouno');\n cardinal = cardinal.replace(/miliardotto/, 'miliardootto');\n return cardinal;\n};\n\nconst italianConverter = (word: string): number => {\n let escapedWord = word.toLowerCase();\n escapedWord = escapedWord.replaceAll(' e ', '');\n escapedWord = escapedWord.replaceAll(' ', '');\n\n let multiplier = 1;\n if (escapedWord.startsWith('meno')) {\n multiplier = -1;\n escapedWord = escapedWord.replace('meno', '');\n }\n\n if (word === 'infinito') {\n return Infinity;\n }\n\n if (word === 'zero') {\n return 0;\n }\n\n if (escapedWord.match(/\\w*(a|o|e|i)$/)) {\n const index = zeroTenOrdinals.findIndex((ord) => escapedWord.startsWith(ord.slice(0, -1)));\n if (index !== -1) {\n return index;\n }\n if (escapedWord.match(/infinitesim(a|o|e|i)$/)) {\n return Infinity;\n }\n if (escapedWord.match(/\\w*(esim|decim)(a|o|e|i)$/)) {\n escapedWord = getNumberFromOrdinal(escapedWord);\n }\n }\n\n return numberCalculator(escapedWord) * multiplier;\n};\n\nexport default italianConverter;\n"],"mappings":"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","names":["hundred","tensConverter","hundredsConverter","hundred"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/constants/constants.ts","../src/functions/cardinalConverter.ts","../src/functions/ordinalConverter.ts","../src/functions/romanConverter.ts","../src/functions/arabicConverter.ts","../src/functions/italianConverter.ts"],"sourcesContent":["export { default as cardinalConverter } from './functions/cardinalConverter';\nexport { default as ordinalConverter } from './functions/ordinalConverter';\nexport { default as romanConverter } from './functions/romanConverter';\nexport { default as arabicConverter } from './functions/arabicConverter';\nexport { default as italianConverter } from './functions/italianConverter';\n","export const zeroNineteen = [\n 'zero',\n 'uno',\n 'due',\n 'tre',\n 'quattro',\n 'cinque',\n 'sei',\n 'sette',\n 'otto',\n 'nove',\n 'dieci',\n 'undici',\n 'dodici',\n 'tredici',\n 'quattordici',\n 'quindici',\n 'sedici',\n 'diciassette',\n 'diciotto',\n 'diciannove',\n];\n\nexport const zeroTenOrdinals = [\n 'zeresimo',\n 'primo',\n 'secondo',\n 'terzo',\n 'quarto',\n 'quinto',\n 'sesto',\n 'settimo',\n 'ottavo',\n 'nono',\n 'decimo',\n];\n\nexport const tens = [\n 'venti',\n 'trenta',\n 'quaranta',\n 'cinquanta',\n 'sessanta',\n 'settanta',\n 'ottanta',\n 'novanta',\n];\n\nexport const hundred = 'cento';\nexport const thousands = ['mille', 'mila'];\nexport const millions = ['un milione', ' milioni'];\nexport const billions = ['un miliardo', ' miliardi'];\n\nexport const and = ' e ';\n\nexport const romanNumerals: { [key: string]: number } = {\n I: 1,\n V: 5,\n X: 10,\n L: 50,\n C: 100,\n D: 500,\n M: 1000,\n};\n\nexport const romanUnits = [\n '',\n 'I',\n 'II',\n 'III',\n 'IV',\n 'V',\n 'VI',\n 'VII',\n 'VIII',\n 'IX',\n];\n\nexport const romanTens = [\n '',\n 'X',\n 'XX',\n 'XXX',\n 'XL',\n 'L',\n 'LX',\n 'LXX',\n 'LXXX',\n 'XC',\n];\n\nexport const romanHundreds = [\n '',\n 'C',\n 'CC',\n 'CCC',\n 'CD',\n 'D',\n 'DC',\n 'DCC',\n 'DCCC',\n 'CM',\n];\n\nexport const romanThousands = [\n '',\n 'M',\n 'MM',\n 'MMM',\n];\n\nexport const unitsDict : { [unit: string] : number } = {\n un: 1,\n uno: 1,\n due: 2,\n tre: 3,\n tré: 3,\n quattro: 4,\n cinque: 5,\n sei: 6,\n sette: 7,\n otto: 8,\n nove: 9,\n dieci: 10,\n undici: 11,\n dodici: 12,\n tredici: 13,\n quattordici: 14,\n quindici: 15,\n sedici: 16,\n diciassette: 17,\n diciotto: 18,\n diciannove: 19,\n};\n\nexport const tensDict : { [ten: string] : number } = {\n venti: 20,\n trenta: 30,\n quaranta: 40,\n cinquanta: 50,\n sessanta: 60,\n settanta: 70,\n ottanta: 80,\n novanta: 90,\n};\n","import {\n zeroNineteen,\n tens,\n hundred,\n thousands,\n millions,\n billions,\n and,\n} from '../constants/constants';\n\nconst tensConverter = (n: number): string => {\n if (n < 20) {\n return zeroNineteen[n];\n }\n\n const firstDigit = Math.floor(n / 10) - 2;\n const secondDigit = n % 10;\n const word = tens[firstDigit];\n\n if (secondDigit === 0) {\n return word;\n }\n\n if (secondDigit === 1 || secondDigit === 8) {\n return word.slice(0, word.length - 1) + zeroNineteen[secondDigit];\n }\n\n return word + zeroNineteen[secondDigit];\n};\n\nconst hundredsConverter = (n: number): string => {\n const firstDigit = Math.floor(n / 100);\n if (firstDigit === 1) {\n return hundred;\n }\n\n return zeroNineteen[firstDigit] + hundred;\n};\n\nconst wordCalculator = (n: number): string => {\n const digitsNumber = Math.log(n) * Math.LOG10E + 1 | 0;\n\n if (digitsNumber < 3) {\n return tensConverter(n);\n }\n if (digitsNumber < 4) {\n if (n % 100 === 0) {\n return hundredsConverter(n);\n }\n\n if (n % 100 > 79 && n % 100 < 90) {\n const word = hundredsConverter(n);\n return word.slice(0, word.length - 1) + wordCalculator(n % 100);\n }\n\n return hundredsConverter(n) + wordCalculator(n % 100);\n }\n // thousands\n if (digitsNumber < 7) {\n const firstDigits = Math.floor(n / 1000);\n if (firstDigits === 1) {\n if (n % 1000 === 0) {\n return thousands[0];\n }\n return thousands[0] + wordCalculator(n % 1000);\n }\n if (n % 1000 === 0) {\n return wordCalculator(firstDigits) + thousands[1];\n }\n return (\n wordCalculator(firstDigits) + thousands[1] + wordCalculator(n % 1000)\n );\n }\n // millions\n if (digitsNumber < 10) {\n const firstDigits = Math.floor(n / 1000000);\n if (firstDigits === 1) {\n if (n % 1000000 === 0) {\n return millions[0];\n }\n return millions[0] + and + wordCalculator(n % 1000000);\n }\n if (n % 1000000 === 0) {\n return wordCalculator(firstDigits) + millions[1];\n }\n return (\n wordCalculator(firstDigits) + millions[1] + and + wordCalculator(n % 1000000)\n );\n }\n // billions\n if (digitsNumber < 13) {\n const firstDigits = Math.floor(n / 1000000000);\n if (firstDigits === 1) {\n if (n % 1000000000 === 0) {\n return billions[0];\n }\n return billions[0] + and + wordCalculator(n % 1000000000);\n }\n if (n % 1000000000 === 0) {\n return wordCalculator(firstDigits) + billions[1];\n }\n return (\n wordCalculator(firstDigits) + billions[1] + and + wordCalculator(n % 1000000000)\n );\n }\n\n return 'oh my zsh';\n};\n\n/**\n * @name cardinalConverter\n * @summary Converts a number to an italian word representation (cardinal number)\n *\n * @param {number} number - Any number\n * @returns {string} Italian word representation (cardinal number)\n * @throws Error if number is NaN or greater than 999999999999 or lower than 999999999999\n *\n * @example\n * cardinalConverter(1);\n * //=> 'uno'\n *\n * @example\n * cardinalConverter(90);\n * //=> 'novanta'\n *\n * @example\n * cardinalConverter(709);\n * //=> 'settecentonove'\n *\n * @example\n * cardinalConverter(-1);\n * //=> 'meno uno'\n *\n * @example\n * cardinalConverter(Infinity);\n * //=> 'infinito'\n */\nconst cardinalConverter = (number: number): string => {\n if (Number.isNaN(number)) {\n throw new Error('not a number');\n }\n if (number === Infinity) {\n return 'infinito';\n }\n\n if (number > 999999999999) {\n throw new Error('greater than 999999999999');\n }\n if (number < -999999999999) {\n throw new Error('lower than 999999999999');\n }\n\n let prepend = '';\n if (number < 0) {\n prepend = 'meno ';\n }\n const n = Math.abs(number);\n\n let result = prepend + wordCalculator(n);\n if (result.endsWith('tre') && result !== 'tre') {\n result = result.replace(/.$/, 'é');\n }\n\n result = result.replaceAll(/(?<=\\w+)tre\\s/g, 'tré ');\n return result;\n};\n\nexport default cardinalConverter;\n","import { zeroTenOrdinals } from '../constants/constants';\nimport cardinalConverter from './cardinalConverter';\n\ntype Options = {\n female?: boolean;\n plural?: boolean;\n}\n\nconst converter = (n: number): string => {\n if (n < 11) {\n return zeroTenOrdinals[n];\n }\n\n let word = cardinalConverter(n);\n\n word = word.replaceAll(' e ', ' ');\n word = word.replace(/([io])\\s([ou])/g, (_match, p1, p2) => {\n if (p2 === 'o') {\n return p1;\n }\n if (p2 === 'u') {\n return p2;\n }\n return '';\n });\n word = word.replaceAll(/un\\s/g, '');\n word = word.replaceAll(/ouno$/g, 'uno');\n word = word.replaceAll(/ootto$/g, 'otto');\n word = word.replaceAll(' ', '');\n\n const lastDigit = n % 10;\n\n if (n % 100 !== 13 && lastDigit === 3) {\n return `${word.replace(/.$/, 'e')}esimo`;\n }\n if (n % 100 !== 16 && lastDigit === 6) {\n return `${word}esimo`;\n }\n if (n % 100 === 10) {\n return word.replace(/dieci$/g, 'decimo');\n }\n if (word.endsWith('mila')) {\n return word.replace(/mila/, 'millesimo');\n }\n\n return `${word.replace(/.$/, '')}esimo`;\n};\n\n/**\n * @name ordinalConverter\n * @summary Converts a number to an italian word representation (ordinal number)\n *\n * @param {number} number - Any number\n * @param {Options} options\n * If `options.female` is true return representation in feminine style.\n * If `options.plural` is true return representation in plural style.\n * Female and plural can be used together\n * @returns {string} Italian word representation (ordinal number)\n * @throws Error if number is NaN or greater than 999999999999 or negative\n *\n * @example\n * ordinalConverter(1);\n * //=> 'primo'\n *\n * @example\n * ordinalConverter(10);\n * //=> 'decimo'\n *\n * @example\n * ordinalConverter(63);\n * //=> 'sessantatreesimo'\n *\n *\n * @example\n * ordinalConverter(Infinity);\n * //=> 'infinitesimo'\n *\n * @example\n * ordinalConverter(1, { female: true });\n * //=> 'prima'\n *\n * @example\n * ordinalConverter(15, { female: true });\n * //=> 'quindicesima'\n *\n * @example\n * ordinalConverter(109, { female: true });\n * //=> 'centonovesima'\n *\n * @example\n * ordinalConverter(1, { plural: true });\n * //=> 'primi'\n *\n * @example\n * ordinalConverter(18, { plural: true });\n * //=> 'diciottesimi'\n *\n * @example\n * ordinalConverter(89, { plural: true });\n * //=> 'ottantanovesimi'\n *\n * @example\n * ordinalConverter(1, { plural: true, female: true });\n * //=> 'prime'\n *\n * @example\n * ordinalConverter(70, { plural: true, female: true });\n * //=> 'settantesime'\n *\n * @example\n * ordinalConverter(110, { plural: true, female: true });\n * //=> 'centodecime'\n */\nconst ordinalConverter = (\n number: number,\n options: Options = { female: false, plural: false },\n): string => {\n if (number < 0) {\n throw new Error('negative number not allowed');\n }\n\n const result = converter(number);\n\n const { female, plural } = options;\n\n if (female && plural) {\n return result.replace(/.$/, 'e');\n }\n\n if (female) {\n return result.replace(/.$/, 'a');\n }\n\n if (plural) {\n return result.replace(/.$/, 'i');\n }\n\n return result;\n};\n\nexport default ordinalConverter;\n","import {\n romanHundreds,\n romanTens,\n romanThousands,\n romanUnits,\n} from '../constants/constants';\n\n/**\n * @name romanConverter\n * @summary Converts an Arabic number to a Roman number\n *\n * @param {number} number - Arabic number\n * @returns {string} Roman string representation\n * @throws Error if number is NaN or greater than 3999 or lower than 1\n *\n * @example\n * romanConverter(1);\n * //=> 'I'\n *\n * @example\n * romanConverter(79);\n * //=> 'LXXIX'\n *\n * @example\n * romanConverter(2317);\n * //=> 'MMCCCXVII'\n */\nconst romanConverter = (number: number): string => {\n if (Number.isNaN(number)) {\n throw new Error('not a number');\n }\n if (number === Infinity) {\n return 'infinitum';\n }\n\n if (number > 3999) {\n throw new Error('greater than 3999');\n }\n\n if (number < 1) {\n throw new Error('lower than 1');\n }\n\n const unit = number % 10;\n const ten = Math.floor(number / 10) % 10;\n const hundred = Math.floor(number / 100) % 10;\n const thousand = Math.floor(number / 1000) % 10;\n\n const result = `${romanThousands[thousand]}${romanHundreds[hundred]}${romanTens[ten]}${romanUnits[unit]}`;\n return result;\n};\n\nexport default romanConverter;\n","import { romanNumerals } from '../constants/constants';\nimport romanConverter from './romanConverter';\n\n/**\n * @name arabicConverter\n * @summary Converts a Roman number to an Arabic number\n *\n * @param {string} romanNumber - Roman number\n * @returns {number} Arabic number representation\n * @throws Error if parameter is not a valid roman number\n *\n * @example\n * arabicConverter('MD');\n * //=> 1500\n *\n * @example\n * arabicConverter('CDXC');\n * //=> 490\n *\n * @example\n * arabicConverter('MCMXC');\n * //=> 1900\n */\nexport const arabicConverter = (romanNumber: string): number => {\n if (romanNumber === 'infinitum') {\n return Infinity;\n }\n\n const romanLetters = Object.keys(romanNumerals);\n if (Array.from(romanNumber).some((letter) => !romanLetters.includes(letter))) {\n throw new Error('invalid roman number');\n }\n\n let number = 0;\n\n for (let i = 0; i < romanNumber.length; i++) {\n let arabicNumber = romanNumerals[romanNumber.charAt(i)];\n\n if (i + 1 < romanNumber.length) {\n const nextArabicNumber = romanNumerals[romanNumber.charAt(i + 1)];\n if (arabicNumber < nextArabicNumber) {\n arabicNumber *= -1;\n }\n }\n\n number += arabicNumber;\n }\n\n let isValid: boolean;\n try {\n isValid = romanNumber === romanConverter(number);\n } catch {\n throw new Error('invalid roman number');\n }\n\n if (!isValid) {\n throw new Error('invalid roman number');\n }\n\n return number;\n};\n\nexport default arabicConverter;\n","import { unitsDict, tensDict, zeroTenOrdinals } from '../constants/constants';\n\nconst tensConverter = (word: string): number => {\n if (unitsDict[word]) {\n return unitsDict[word];\n }\n\n const ten = Object.keys(tensDict).find((w) => word.startsWith(w.slice(0, -1)));\n if (!ten) {\n return NaN;\n }\n\n const result = tensDict[ten];\n if (word === ten) {\n return result;\n }\n\n let [, unit] = word.split(ten);\n if (!unit) {\n [, unit] = word.split(ten.slice(0, -1));\n }\n if (!unitsDict[unit]) {\n return NaN;\n }\n return result + unitsDict[unit];\n};\n\nconst hundredsConverter = (word: string): number => {\n const [hundred, ten] = word.split('cento');\n if (ten === undefined) {\n return tensConverter(hundred);\n }\n let result = -1;\n if (hundred === '') {\n result = 100;\n } else {\n if (!unitsDict[hundred]) {\n return NaN;\n }\n result = unitsDict[hundred] * 100;\n }\n if (ten !== '') {\n if (ten.startsWith('tt')) {\n result += tensConverter(`o${ten}`);\n } else {\n result += tensConverter(ten);\n }\n }\n\n return result;\n};\n\nconst numberCalculator = (word: string): number => {\n // billions\n let index = word.indexOf('miliard');\n if (index > -1) {\n const sub = word.slice(index + 8);\n let rest = 0;\n if (sub) {\n rest = numberCalculator(sub);\n }\n return hundredsConverter(word.slice(0, index)) * 1000000000 + rest;\n }\n\n // millions\n index = word.indexOf('milion');\n if (index > -1) {\n const sub = word.slice(index + 7);\n let rest = 0;\n if (sub) {\n rest = numberCalculator(sub);\n }\n return hundredsConverter(word.slice(0, index)) * 1000000 + rest;\n }\n\n // thousands\n index = word.indexOf('mila');\n if (index > -1) {\n const sub = word.slice(index + 4);\n let rest = 0;\n if (sub) {\n rest = numberCalculator(sub);\n }\n return hundredsConverter(word.slice(0, index)) * 1000 + rest;\n }\n\n index = word.indexOf('mille');\n if (index > -1) {\n const sub = word.slice(index + 5);\n if (!sub) {\n return 1000;\n }\n return 1000 + hundredsConverter(sub);\n }\n\n return hundredsConverter(word);\n};\n\nconst getNumberFromOrdinal = (ordinal: string): string => {\n let cardinal = ordinal;\n cardinal = cardinal.replace(/decim\\w$/, 'dieci');\n cardinal = cardinal.replace(/centesim\\w$/, 'cento');\n cardinal = cardinal.replace(/^millesim\\w$/, 'mille');\n cardinal = cardinal.replace(/millesim\\w$/, 'mila');\n cardinal = cardinal.replace(/^milionesim\\w$/, 'unmilione');\n cardinal = cardinal.replace(/milionesim\\w$/, 'milioni');\n cardinal = cardinal.replace(/^miliardesim\\w$/, 'unmiliardo');\n cardinal = cardinal.replace(/miliardesim\\w$/, 'miliardi');\n cardinal = cardinal.replace(/ventesim\\w$/, 'venti');\n cardinal = cardinal.replace(/ntesim\\w$/, 'nta');\n cardinal = cardinal.replace(/unesim\\w$/, 'uno');\n cardinal = cardinal.replace(/quattresim\\w$/, 'quattro');\n cardinal = cardinal.replace(/ottesim\\w$/, 'otto');\n cardinal = cardinal.replace(/duesim\\w$/, 'due');\n cardinal = cardinal.replace(/cinquesim\\w$/, 'cinque');\n cardinal = cardinal.replace(/settesim\\w$/, 'sette');\n cardinal = cardinal.replace(/novesim\\w$/, 'nove');\n cardinal = cardinal.replace(/undicesim\\w$/, 'undici');\n cardinal = cardinal.replace(/dodicesim\\w$/, 'dodici');\n cardinal = cardinal.replace(/tredicesim\\w$/, 'tredici');\n cardinal = cardinal.replace(/quattordicesim\\w$/, 'quattordici');\n cardinal = cardinal.replace(/quindicesim\\w$/, 'quindici');\n cardinal = cardinal.replace(/sedicesim\\w$/, 'sedici');\n cardinal = cardinal.replace(/esim\\w$/, '');\n cardinal = cardinal.replace(/^milione/, 'unmilione');\n cardinal = cardinal.replace(/^miliard/, 'unmiliardo');\n cardinal = cardinal.replace(/centuno/, 'centouno');\n cardinal = cardinal.replace(/centotto/, 'centootto');\n cardinal = cardinal.replace(/miliarduno/, 'miliardouno');\n cardinal = cardinal.replace(/miliardotto/, 'miliardootto');\n return cardinal;\n};\n\n/**\n * @name italianConverter\n * @summary Converts an italian word representation to a number\n *\n * @param {string} word - Number italian word representation\n * @returns {number} Converted number or NaN\n *\n * @example\n * italianConverter('uno');\n * //=> 1\n *\n * @example\n * italianConverter('novantasette');\n * //=> 97\n *\n * @example\n * italianConverter('un milione tredicimila');\n * //=> 101\n * 3000\n * @example\n * italianConverter('zeresimo');\n * //=> 0\n *\n * @example\n * italianConverter('prima');\n * //=> 1\n *\n * @example\n * italianConverter('quattrocentotredicesime');\n * //=> 413\n *\n * @example\n * italianConverter('infinitesimi');\n * //=> Infinity\n */\nconst italianConverter = (word: string): number => {\n let escapedWord = word.toLowerCase();\n escapedWord = escapedWord.replaceAll(' e ', '');\n escapedWord = escapedWord.replaceAll(' ', '');\n\n let multiplier = 1;\n if (escapedWord.startsWith('meno')) {\n multiplier = -1;\n escapedWord = escapedWord.replace('meno', '');\n }\n\n if (word === 'infinito') {\n return Infinity;\n }\n\n if (word === 'zero') {\n return 0;\n }\n\n if (escapedWord.match(/\\w*(a|o|e|i)$/)) {\n const index = zeroTenOrdinals.findIndex((ord) => escapedWord.startsWith(ord.slice(0, -1)));\n if (index !== -1) {\n return index;\n }\n if (escapedWord.match(/infinitesim(a|o|e|i)$/)) {\n return Infinity;\n }\n if (escapedWord.match(/\\w*(esim|decim)(a|o|e|i)$/)) {\n escapedWord = getNumberFromOrdinal(escapedWord);\n }\n }\n\n return numberCalculator(escapedWord) * multiplier;\n};\n\nexport default italianConverter;\n"],"mappings":"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","names":["hundred","tensConverter","hundredsConverter","hundred"]}
|
package/dist/index.mjs
CHANGED
|
@@ -223,6 +223,9 @@ var cardinalConverter = (number) => {
|
|
|
223
223
|
if (number > 999999999999) {
|
|
224
224
|
throw new Error("greater than 999999999999");
|
|
225
225
|
}
|
|
226
|
+
if (number < -999999999999) {
|
|
227
|
+
throw new Error("lower than 999999999999");
|
|
228
|
+
}
|
|
226
229
|
let prepend = "";
|
|
227
230
|
if (number < 0) {
|
|
228
231
|
prepend = "meno ";
|
|
@@ -440,7 +443,8 @@ var getNumberFromOrdinal = (ordinal) => {
|
|
|
440
443
|
cardinal = cardinal.replace(/milionesim\w$/, "milioni");
|
|
441
444
|
cardinal = cardinal.replace(/^miliardesim\w$/, "unmiliardo");
|
|
442
445
|
cardinal = cardinal.replace(/miliardesim\w$/, "miliardi");
|
|
443
|
-
cardinal = cardinal.replace(/
|
|
446
|
+
cardinal = cardinal.replace(/ventesim\w$/, "venti");
|
|
447
|
+
cardinal = cardinal.replace(/ntesim\w$/, "nta");
|
|
444
448
|
cardinal = cardinal.replace(/unesim\w$/, "uno");
|
|
445
449
|
cardinal = cardinal.replace(/quattresim\w$/, "quattro");
|
|
446
450
|
cardinal = cardinal.replace(/ottesim\w$/, "otto");
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/constants/constants.ts","../src/functions/cardinalConverter.ts","../src/functions/ordinalConverter.ts","../src/functions/romanConverter.ts","../src/functions/arabicConverter.ts","../src/functions/italianConverter.ts"],"sourcesContent":["export const zeroNineteen = [\n 'zero',\n 'uno',\n 'due',\n 'tre',\n 'quattro',\n 'cinque',\n 'sei',\n 'sette',\n 'otto',\n 'nove',\n 'dieci',\n 'undici',\n 'dodici',\n 'tredici',\n 'quattordici',\n 'quindici',\n 'sedici',\n 'diciassette',\n 'diciotto',\n 'diciannove',\n];\n\nexport const zeroTenOrdinals = [\n 'zeresimo',\n 'primo',\n 'secondo',\n 'terzo',\n 'quarto',\n 'quinto',\n 'sesto',\n 'settimo',\n 'ottavo',\n 'nono',\n 'decimo',\n];\n\nexport const tens = [\n 'venti',\n 'trenta',\n 'quaranta',\n 'cinquanta',\n 'sessanta',\n 'settanta',\n 'ottanta',\n 'novanta',\n];\n\nexport const hundred = 'cento';\nexport const thousands = ['mille', 'mila'];\nexport const millions = ['un milione', ' milioni'];\nexport const billions = ['un miliardo', ' miliardi'];\n\nexport const and = ' e ';\n\nexport const romanNumerals: { [key: string]: number } = {\n I: 1,\n V: 5,\n X: 10,\n L: 50,\n C: 100,\n D: 500,\n M: 1000,\n};\n\nexport const romanUnits = [\n '',\n 'I',\n 'II',\n 'III',\n 'IV',\n 'V',\n 'VI',\n 'VII',\n 'VIII',\n 'IX',\n];\n\nexport const romanTens = [\n '',\n 'X',\n 'XX',\n 'XXX',\n 'XL',\n 'L',\n 'LX',\n 'LXX',\n 'LXXX',\n 'XC',\n];\n\nexport const romanHundreds = [\n '',\n 'C',\n 'CC',\n 'CCC',\n 'CD',\n 'D',\n 'DC',\n 'DCC',\n 'DCCC',\n 'CM',\n];\n\nexport const romanThousands = [\n '',\n 'M',\n 'MM',\n 'MMM',\n];\n\nexport const unitsDict : { [unit: string] : number } = {\n un: 1,\n uno: 1,\n due: 2,\n tre: 3,\n tré: 3,\n quattro: 4,\n cinque: 5,\n sei: 6,\n sette: 7,\n otto: 8,\n nove: 9,\n dieci: 10,\n undici: 11,\n dodici: 12,\n tredici: 13,\n quattordici: 14,\n quindici: 15,\n sedici: 16,\n diciassette: 17,\n diciotto: 18,\n diciannove: 19,\n};\n\nexport const tensDict : { [ten: string] : number } = {\n venti: 20,\n trenta: 30,\n quaranta: 40,\n cinquanta: 50,\n sessanta: 60,\n settanta: 70,\n ottanta: 80,\n novanta: 90,\n};\n","import {\n zeroNineteen,\n tens,\n hundred,\n thousands,\n millions,\n billions,\n and,\n} from '../constants/constants';\n\nconst tensConverter = (n: number): string => {\n if (n < 20) {\n return zeroNineteen[n];\n }\n\n const firstDigit = Math.floor(n / 10) - 2;\n const secondDigit = n % 10;\n const word = tens[firstDigit];\n\n if (secondDigit === 0) {\n return word;\n }\n\n if (secondDigit === 1 || secondDigit === 8) {\n return word.slice(0, word.length - 1) + zeroNineteen[secondDigit];\n }\n\n return word + zeroNineteen[secondDigit];\n};\n\nconst hundredsConverter = (n: number): string => {\n const firstDigit = Math.floor(n / 100);\n if (firstDigit === 1) {\n return hundred;\n }\n\n return zeroNineteen[firstDigit] + hundred;\n};\n\nconst wordCalculator = (n: number): string => {\n const digitsNumber = Math.log(n) * Math.LOG10E + 1 | 0;\n\n if (digitsNumber < 3) {\n return tensConverter(n);\n }\n if (digitsNumber < 4) {\n if (n % 100 === 0) {\n return hundredsConverter(n);\n }\n\n if (n % 100 > 79 && n % 100 < 90) {\n const word = hundredsConverter(n);\n return word.slice(0, word.length - 1) + wordCalculator(n % 100);\n }\n\n return hundredsConverter(n) + wordCalculator(n % 100);\n }\n // thousands\n if (digitsNumber < 7) {\n const firstDigits = Math.floor(n / 1000);\n if (firstDigits === 1) {\n if (n % 1000 === 0) {\n return thousands[0];\n }\n return thousands[0] + wordCalculator(n % 1000);\n }\n if (n % 1000 === 0) {\n return wordCalculator(firstDigits) + thousands[1];\n }\n return (\n wordCalculator(firstDigits) + thousands[1] + wordCalculator(n % 1000)\n );\n }\n // millions\n if (digitsNumber < 10) {\n const firstDigits = Math.floor(n / 1000000);\n if (firstDigits === 1) {\n if (n % 1000000 === 0) {\n return millions[0];\n }\n return millions[0] + and + wordCalculator(n % 1000000);\n }\n if (n % 1000000 === 0) {\n return wordCalculator(firstDigits) + millions[1];\n }\n return (\n wordCalculator(firstDigits) + millions[1] + and + wordCalculator(n % 1000000)\n );\n }\n // billions\n if (digitsNumber < 13) {\n const firstDigits = Math.floor(n / 1000000000);\n if (firstDigits === 1) {\n if (n % 1000000000 === 0) {\n return billions[0];\n }\n return billions[0] + and + wordCalculator(n % 1000000000);\n }\n if (n % 1000000000 === 0) {\n return wordCalculator(firstDigits) + billions[1];\n }\n return (\n wordCalculator(firstDigits) + billions[1] + and + wordCalculator(n % 1000000000)\n );\n }\n\n return 'oh my zsh';\n};\n\nconst cardinalConverter = (number: number): string => {\n if (Number.isNaN(number)) {\n throw new Error('not a number');\n }\n if (number === Infinity) {\n return 'infinito';\n }\n\n if (number > 999999999999) {\n throw new Error('greater than 999999999999');\n }\n\n let prepend = '';\n if (number < 0) {\n prepend = 'meno ';\n }\n const n = Math.abs(number);\n\n let result = prepend + wordCalculator(n);\n if (result.endsWith('tre') && result !== 'tre') {\n result = result.replace(/.$/, 'é');\n }\n\n result = result.replaceAll(/(?<=\\w+)tre\\s/g, 'tré ');\n return result;\n};\n\nexport default cardinalConverter;\n","import { zeroTenOrdinals } from '../constants/constants';\nimport cardinalConverter from './cardinalConverter';\n\ntype Options = {\n female?: boolean;\n plural?: boolean;\n}\n\nconst converter = (n: number): string => {\n if (n < 11) {\n return zeroTenOrdinals[n];\n }\n\n let word = cardinalConverter(n);\n\n word = word.replaceAll(' e ', ' ');\n word = word.replace(/([io])\\s([ou])/g, (_match, p1, p2) => {\n if (p2 === 'o') {\n return p1;\n }\n if (p2 === 'u') {\n return p2;\n }\n return '';\n });\n word = word.replaceAll(/un\\s/g, '');\n word = word.replaceAll(/ouno$/g, 'uno');\n word = word.replaceAll(/ootto$/g, 'otto');\n word = word.replaceAll(' ', '');\n\n const lastDigit = n % 10;\n\n if (n % 100 !== 13 && lastDigit === 3) {\n return `${word.replace(/.$/, 'e')}esimo`;\n }\n if (n % 100 !== 16 && lastDigit === 6) {\n return `${word}esimo`;\n }\n if (n % 100 === 10) {\n return word.replace(/dieci$/g, 'decimo');\n }\n if (word.endsWith('mila')) {\n return word.replace(/mila/, 'millesimo');\n }\n\n return `${word.replace(/.$/, '')}esimo`;\n};\n\nconst ordinalConverter = (\n number: number,\n options: Options = { female: false, plural: false },\n): string => {\n if (number < 0) {\n throw new Error('negative number not allowed');\n }\n\n const result = converter(number);\n\n const { female, plural } = options;\n\n if (female && plural) {\n return result.replace(/.$/, 'e');\n }\n\n if (female) {\n return result.replace(/.$/, 'a');\n }\n\n if (plural) {\n return result.replace(/.$/, 'i');\n }\n\n return result;\n};\n\nexport default ordinalConverter;\n","import {\n romanHundreds,\n romanTens,\n romanThousands,\n romanUnits,\n} from '../constants/constants';\n\nconst romanConverter = (number: number): string => {\n if (Number.isNaN(number)) {\n throw new Error('not a number');\n }\n if (number === Infinity) {\n return 'infinitum';\n }\n\n if (number > 3999) {\n throw new Error('greater than 3999');\n }\n\n if (number < 1) {\n throw new Error('lower than 1');\n }\n\n const unit = number % 10;\n const ten = Math.floor(number / 10) % 10;\n const hundred = Math.floor(number / 100) % 10;\n const thousand = Math.floor(number / 1000) % 10;\n\n const result = `${romanThousands[thousand]}${romanHundreds[hundred]}${romanTens[ten]}${romanUnits[unit]}`;\n return result;\n};\n\nexport default romanConverter;\n","import { romanNumerals } from '../constants/constants';\nimport romanConverter from './romanConverter';\n\nexport const arabicConverter = (romanNumber: string): number => {\n if (romanNumber === 'infinitum') {\n return Infinity;\n }\n\n const romanLetters = Object.keys(romanNumerals);\n if (Array.from(romanNumber).some((letter) => !romanLetters.includes(letter))) {\n throw new Error('invalid roman number');\n }\n\n let number = 0;\n\n for (let i = 0; i < romanNumber.length; i++) {\n let arabicNumber = romanNumerals[romanNumber.charAt(i)];\n\n if (i + 1 < romanNumber.length) {\n const nextArabicNumber = romanNumerals[romanNumber.charAt(i + 1)];\n if (arabicNumber < nextArabicNumber) {\n arabicNumber *= -1;\n }\n }\n\n number += arabicNumber;\n }\n\n let isValid: boolean;\n try {\n isValid = romanNumber === romanConverter(number);\n } catch {\n throw new Error('invalid roman number');\n }\n\n if (!isValid) {\n throw new Error('invalid roman number');\n }\n\n return number;\n};\n\nexport default arabicConverter;\n","import { unitsDict, tensDict, zeroTenOrdinals } from '../constants/constants';\n\nconst tensConverter = (word: string): number => {\n if (unitsDict[word]) {\n return unitsDict[word];\n }\n\n const ten = Object.keys(tensDict).find((w) => word.startsWith(w.slice(0, -1)));\n if (!ten) {\n return NaN;\n }\n\n const result = tensDict[ten];\n if (word === ten) {\n return result;\n }\n\n let [, unit] = word.split(ten);\n if (!unit) {\n [, unit] = word.split(ten.slice(0, -1));\n }\n if (!unitsDict[unit]) {\n return NaN;\n }\n return result + unitsDict[unit];\n};\n\nconst hundredsConverter = (word: string): number => {\n const [hundred, ten] = word.split('cento');\n if (ten === undefined) {\n return tensConverter(hundred);\n }\n let result = -1;\n if (hundred === '') {\n result = 100;\n } else {\n if (!unitsDict[hundred]) {\n return NaN;\n }\n result = unitsDict[hundred] * 100;\n }\n if (ten !== '') {\n if (ten.startsWith('tt')) {\n result += tensConverter(`o${ten}`);\n } else {\n result += tensConverter(ten);\n }\n }\n\n return result;\n};\n\nconst numberCalculator = (word: string): number => {\n // billions\n let index = word.indexOf('miliard');\n if (index > -1) {\n const sub = word.slice(index + 8);\n let rest = 0;\n if (sub) {\n rest = numberCalculator(sub);\n }\n return hundredsConverter(word.slice(0, index)) * 1000000000 + rest;\n }\n\n // millions\n index = word.indexOf('milion');\n if (index > -1) {\n const sub = word.slice(index + 7);\n let rest = 0;\n if (sub) {\n rest = numberCalculator(sub);\n }\n return hundredsConverter(word.slice(0, index)) * 1000000 + rest;\n }\n\n // thousands\n index = word.indexOf('mila');\n if (index > -1) {\n const sub = word.slice(index + 4);\n let rest = 0;\n if (sub) {\n rest = numberCalculator(sub);\n }\n return hundredsConverter(word.slice(0, index)) * 1000 + rest;\n }\n\n index = word.indexOf('mille');\n if (index > -1) {\n const sub = word.slice(index + 5);\n if (!sub) {\n return 1000;\n }\n return 1000 + hundredsConverter(sub);\n }\n\n return hundredsConverter(word);\n};\n\nconst getNumberFromOrdinal = (ordinal: string): string => {\n let cardinal = ordinal;\n cardinal = cardinal.replace(/decim\\w$/, 'dieci');\n cardinal = cardinal.replace(/centesim\\w$/, 'cento');\n cardinal = cardinal.replace(/^millesim\\w$/, 'mille');\n cardinal = cardinal.replace(/millesim\\w$/, 'mila');\n cardinal = cardinal.replace(/^milionesim\\w$/, 'unmilione');\n cardinal = cardinal.replace(/milionesim\\w$/, 'milioni');\n cardinal = cardinal.replace(/^miliardesim\\w$/, 'unmiliardo');\n cardinal = cardinal.replace(/miliardesim\\w$/, 'miliardi');\n cardinal = cardinal.replace(/ntesim\\w$/, 'nti');\n cardinal = cardinal.replace(/unesim\\w$/, 'uno');\n cardinal = cardinal.replace(/quattresim\\w$/, 'quattro');\n cardinal = cardinal.replace(/ottesim\\w$/, 'otto');\n cardinal = cardinal.replace(/duesim\\w$/, 'due');\n cardinal = cardinal.replace(/cinquesim\\w$/, 'cinque');\n cardinal = cardinal.replace(/settesim\\w$/, 'sette');\n cardinal = cardinal.replace(/novesim\\w$/, 'nove');\n cardinal = cardinal.replace(/undicesim\\w$/, 'undici');\n cardinal = cardinal.replace(/dodicesim\\w$/, 'dodici');\n cardinal = cardinal.replace(/tredicesim\\w$/, 'tredici');\n cardinal = cardinal.replace(/quattordicesim\\w$/, 'quattordici');\n cardinal = cardinal.replace(/quindicesim\\w$/, 'quindici');\n cardinal = cardinal.replace(/sedicesim\\w$/, 'sedici');\n cardinal = cardinal.replace(/esim\\w$/, '');\n cardinal = cardinal.replace(/^milione/, 'unmilione');\n cardinal = cardinal.replace(/^miliard/, 'unmiliardo');\n cardinal = cardinal.replace(/centuno/, 'centouno');\n cardinal = cardinal.replace(/centotto/, 'centootto');\n cardinal = cardinal.replace(/miliarduno/, 'miliardouno');\n cardinal = cardinal.replace(/miliardotto/, 'miliardootto');\n return cardinal;\n};\n\nconst italianConverter = (word: string): number => {\n let escapedWord = word.toLowerCase();\n escapedWord = escapedWord.replaceAll(' e ', '');\n escapedWord = escapedWord.replaceAll(' ', '');\n\n let multiplier = 1;\n if (escapedWord.startsWith('meno')) {\n multiplier = -1;\n escapedWord = escapedWord.replace('meno', '');\n }\n\n if (word === 'infinito') {\n return Infinity;\n }\n\n if (word === 'zero') {\n return 0;\n }\n\n if (escapedWord.match(/\\w*(a|o|e|i)$/)) {\n const index = zeroTenOrdinals.findIndex((ord) => escapedWord.startsWith(ord.slice(0, -1)));\n if (index !== -1) {\n return index;\n }\n if (escapedWord.match(/infinitesim(a|o|e|i)$/)) {\n return Infinity;\n }\n if (escapedWord.match(/\\w*(esim|decim)(a|o|e|i)$/)) {\n escapedWord = getNumberFromOrdinal(escapedWord);\n }\n }\n\n return numberCalculator(escapedWord) * multiplier;\n};\n\nexport default italianConverter;\n"],"mappings":"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","names":["hundred","tensConverter","hundredsConverter","hundred"]}
|
|
1
|
+
{"version":3,"sources":["../src/constants/constants.ts","../src/functions/cardinalConverter.ts","../src/functions/ordinalConverter.ts","../src/functions/romanConverter.ts","../src/functions/arabicConverter.ts","../src/functions/italianConverter.ts"],"sourcesContent":["export const zeroNineteen = [\n 'zero',\n 'uno',\n 'due',\n 'tre',\n 'quattro',\n 'cinque',\n 'sei',\n 'sette',\n 'otto',\n 'nove',\n 'dieci',\n 'undici',\n 'dodici',\n 'tredici',\n 'quattordici',\n 'quindici',\n 'sedici',\n 'diciassette',\n 'diciotto',\n 'diciannove',\n];\n\nexport const zeroTenOrdinals = [\n 'zeresimo',\n 'primo',\n 'secondo',\n 'terzo',\n 'quarto',\n 'quinto',\n 'sesto',\n 'settimo',\n 'ottavo',\n 'nono',\n 'decimo',\n];\n\nexport const tens = [\n 'venti',\n 'trenta',\n 'quaranta',\n 'cinquanta',\n 'sessanta',\n 'settanta',\n 'ottanta',\n 'novanta',\n];\n\nexport const hundred = 'cento';\nexport const thousands = ['mille', 'mila'];\nexport const millions = ['un milione', ' milioni'];\nexport const billions = ['un miliardo', ' miliardi'];\n\nexport const and = ' e ';\n\nexport const romanNumerals: { [key: string]: number } = {\n I: 1,\n V: 5,\n X: 10,\n L: 50,\n C: 100,\n D: 500,\n M: 1000,\n};\n\nexport const romanUnits = [\n '',\n 'I',\n 'II',\n 'III',\n 'IV',\n 'V',\n 'VI',\n 'VII',\n 'VIII',\n 'IX',\n];\n\nexport const romanTens = [\n '',\n 'X',\n 'XX',\n 'XXX',\n 'XL',\n 'L',\n 'LX',\n 'LXX',\n 'LXXX',\n 'XC',\n];\n\nexport const romanHundreds = [\n '',\n 'C',\n 'CC',\n 'CCC',\n 'CD',\n 'D',\n 'DC',\n 'DCC',\n 'DCCC',\n 'CM',\n];\n\nexport const romanThousands = [\n '',\n 'M',\n 'MM',\n 'MMM',\n];\n\nexport const unitsDict : { [unit: string] : number } = {\n un: 1,\n uno: 1,\n due: 2,\n tre: 3,\n tré: 3,\n quattro: 4,\n cinque: 5,\n sei: 6,\n sette: 7,\n otto: 8,\n nove: 9,\n dieci: 10,\n undici: 11,\n dodici: 12,\n tredici: 13,\n quattordici: 14,\n quindici: 15,\n sedici: 16,\n diciassette: 17,\n diciotto: 18,\n diciannove: 19,\n};\n\nexport const tensDict : { [ten: string] : number } = {\n venti: 20,\n trenta: 30,\n quaranta: 40,\n cinquanta: 50,\n sessanta: 60,\n settanta: 70,\n ottanta: 80,\n novanta: 90,\n};\n","import {\n zeroNineteen,\n tens,\n hundred,\n thousands,\n millions,\n billions,\n and,\n} from '../constants/constants';\n\nconst tensConverter = (n: number): string => {\n if (n < 20) {\n return zeroNineteen[n];\n }\n\n const firstDigit = Math.floor(n / 10) - 2;\n const secondDigit = n % 10;\n const word = tens[firstDigit];\n\n if (secondDigit === 0) {\n return word;\n }\n\n if (secondDigit === 1 || secondDigit === 8) {\n return word.slice(0, word.length - 1) + zeroNineteen[secondDigit];\n }\n\n return word + zeroNineteen[secondDigit];\n};\n\nconst hundredsConverter = (n: number): string => {\n const firstDigit = Math.floor(n / 100);\n if (firstDigit === 1) {\n return hundred;\n }\n\n return zeroNineteen[firstDigit] + hundred;\n};\n\nconst wordCalculator = (n: number): string => {\n const digitsNumber = Math.log(n) * Math.LOG10E + 1 | 0;\n\n if (digitsNumber < 3) {\n return tensConverter(n);\n }\n if (digitsNumber < 4) {\n if (n % 100 === 0) {\n return hundredsConverter(n);\n }\n\n if (n % 100 > 79 && n % 100 < 90) {\n const word = hundredsConverter(n);\n return word.slice(0, word.length - 1) + wordCalculator(n % 100);\n }\n\n return hundredsConverter(n) + wordCalculator(n % 100);\n }\n // thousands\n if (digitsNumber < 7) {\n const firstDigits = Math.floor(n / 1000);\n if (firstDigits === 1) {\n if (n % 1000 === 0) {\n return thousands[0];\n }\n return thousands[0] + wordCalculator(n % 1000);\n }\n if (n % 1000 === 0) {\n return wordCalculator(firstDigits) + thousands[1];\n }\n return (\n wordCalculator(firstDigits) + thousands[1] + wordCalculator(n % 1000)\n );\n }\n // millions\n if (digitsNumber < 10) {\n const firstDigits = Math.floor(n / 1000000);\n if (firstDigits === 1) {\n if (n % 1000000 === 0) {\n return millions[0];\n }\n return millions[0] + and + wordCalculator(n % 1000000);\n }\n if (n % 1000000 === 0) {\n return wordCalculator(firstDigits) + millions[1];\n }\n return (\n wordCalculator(firstDigits) + millions[1] + and + wordCalculator(n % 1000000)\n );\n }\n // billions\n if (digitsNumber < 13) {\n const firstDigits = Math.floor(n / 1000000000);\n if (firstDigits === 1) {\n if (n % 1000000000 === 0) {\n return billions[0];\n }\n return billions[0] + and + wordCalculator(n % 1000000000);\n }\n if (n % 1000000000 === 0) {\n return wordCalculator(firstDigits) + billions[1];\n }\n return (\n wordCalculator(firstDigits) + billions[1] + and + wordCalculator(n % 1000000000)\n );\n }\n\n return 'oh my zsh';\n};\n\n/**\n * @name cardinalConverter\n * @summary Converts a number to an italian word representation (cardinal number)\n *\n * @param {number} number - Any number\n * @returns {string} Italian word representation (cardinal number)\n * @throws Error if number is NaN or greater than 999999999999 or lower than 999999999999\n *\n * @example\n * cardinalConverter(1);\n * //=> 'uno'\n *\n * @example\n * cardinalConverter(90);\n * //=> 'novanta'\n *\n * @example\n * cardinalConverter(709);\n * //=> 'settecentonove'\n *\n * @example\n * cardinalConverter(-1);\n * //=> 'meno uno'\n *\n * @example\n * cardinalConverter(Infinity);\n * //=> 'infinito'\n */\nconst cardinalConverter = (number: number): string => {\n if (Number.isNaN(number)) {\n throw new Error('not a number');\n }\n if (number === Infinity) {\n return 'infinito';\n }\n\n if (number > 999999999999) {\n throw new Error('greater than 999999999999');\n }\n if (number < -999999999999) {\n throw new Error('lower than 999999999999');\n }\n\n let prepend = '';\n if (number < 0) {\n prepend = 'meno ';\n }\n const n = Math.abs(number);\n\n let result = prepend + wordCalculator(n);\n if (result.endsWith('tre') && result !== 'tre') {\n result = result.replace(/.$/, 'é');\n }\n\n result = result.replaceAll(/(?<=\\w+)tre\\s/g, 'tré ');\n return result;\n};\n\nexport default cardinalConverter;\n","import { zeroTenOrdinals } from '../constants/constants';\nimport cardinalConverter from './cardinalConverter';\n\ntype Options = {\n female?: boolean;\n plural?: boolean;\n}\n\nconst converter = (n: number): string => {\n if (n < 11) {\n return zeroTenOrdinals[n];\n }\n\n let word = cardinalConverter(n);\n\n word = word.replaceAll(' e ', ' ');\n word = word.replace(/([io])\\s([ou])/g, (_match, p1, p2) => {\n if (p2 === 'o') {\n return p1;\n }\n if (p2 === 'u') {\n return p2;\n }\n return '';\n });\n word = word.replaceAll(/un\\s/g, '');\n word = word.replaceAll(/ouno$/g, 'uno');\n word = word.replaceAll(/ootto$/g, 'otto');\n word = word.replaceAll(' ', '');\n\n const lastDigit = n % 10;\n\n if (n % 100 !== 13 && lastDigit === 3) {\n return `${word.replace(/.$/, 'e')}esimo`;\n }\n if (n % 100 !== 16 && lastDigit === 6) {\n return `${word}esimo`;\n }\n if (n % 100 === 10) {\n return word.replace(/dieci$/g, 'decimo');\n }\n if (word.endsWith('mila')) {\n return word.replace(/mila/, 'millesimo');\n }\n\n return `${word.replace(/.$/, '')}esimo`;\n};\n\n/**\n * @name ordinalConverter\n * @summary Converts a number to an italian word representation (ordinal number)\n *\n * @param {number} number - Any number\n * @param {Options} options\n * If `options.female` is true return representation in feminine style.\n * If `options.plural` is true return representation in plural style.\n * Female and plural can be used together\n * @returns {string} Italian word representation (ordinal number)\n * @throws Error if number is NaN or greater than 999999999999 or negative\n *\n * @example\n * ordinalConverter(1);\n * //=> 'primo'\n *\n * @example\n * ordinalConverter(10);\n * //=> 'decimo'\n *\n * @example\n * ordinalConverter(63);\n * //=> 'sessantatreesimo'\n *\n *\n * @example\n * ordinalConverter(Infinity);\n * //=> 'infinitesimo'\n *\n * @example\n * ordinalConverter(1, { female: true });\n * //=> 'prima'\n *\n * @example\n * ordinalConverter(15, { female: true });\n * //=> 'quindicesima'\n *\n * @example\n * ordinalConverter(109, { female: true });\n * //=> 'centonovesima'\n *\n * @example\n * ordinalConverter(1, { plural: true });\n * //=> 'primi'\n *\n * @example\n * ordinalConverter(18, { plural: true });\n * //=> 'diciottesimi'\n *\n * @example\n * ordinalConverter(89, { plural: true });\n * //=> 'ottantanovesimi'\n *\n * @example\n * ordinalConverter(1, { plural: true, female: true });\n * //=> 'prime'\n *\n * @example\n * ordinalConverter(70, { plural: true, female: true });\n * //=> 'settantesime'\n *\n * @example\n * ordinalConverter(110, { plural: true, female: true });\n * //=> 'centodecime'\n */\nconst ordinalConverter = (\n number: number,\n options: Options = { female: false, plural: false },\n): string => {\n if (number < 0) {\n throw new Error('negative number not allowed');\n }\n\n const result = converter(number);\n\n const { female, plural } = options;\n\n if (female && plural) {\n return result.replace(/.$/, 'e');\n }\n\n if (female) {\n return result.replace(/.$/, 'a');\n }\n\n if (plural) {\n return result.replace(/.$/, 'i');\n }\n\n return result;\n};\n\nexport default ordinalConverter;\n","import {\n romanHundreds,\n romanTens,\n romanThousands,\n romanUnits,\n} from '../constants/constants';\n\n/**\n * @name romanConverter\n * @summary Converts an Arabic number to a Roman number\n *\n * @param {number} number - Arabic number\n * @returns {string} Roman string representation\n * @throws Error if number is NaN or greater than 3999 or lower than 1\n *\n * @example\n * romanConverter(1);\n * //=> 'I'\n *\n * @example\n * romanConverter(79);\n * //=> 'LXXIX'\n *\n * @example\n * romanConverter(2317);\n * //=> 'MMCCCXVII'\n */\nconst romanConverter = (number: number): string => {\n if (Number.isNaN(number)) {\n throw new Error('not a number');\n }\n if (number === Infinity) {\n return 'infinitum';\n }\n\n if (number > 3999) {\n throw new Error('greater than 3999');\n }\n\n if (number < 1) {\n throw new Error('lower than 1');\n }\n\n const unit = number % 10;\n const ten = Math.floor(number / 10) % 10;\n const hundred = Math.floor(number / 100) % 10;\n const thousand = Math.floor(number / 1000) % 10;\n\n const result = `${romanThousands[thousand]}${romanHundreds[hundred]}${romanTens[ten]}${romanUnits[unit]}`;\n return result;\n};\n\nexport default romanConverter;\n","import { romanNumerals } from '../constants/constants';\nimport romanConverter from './romanConverter';\n\n/**\n * @name arabicConverter\n * @summary Converts a Roman number to an Arabic number\n *\n * @param {string} romanNumber - Roman number\n * @returns {number} Arabic number representation\n * @throws Error if parameter is not a valid roman number\n *\n * @example\n * arabicConverter('MD');\n * //=> 1500\n *\n * @example\n * arabicConverter('CDXC');\n * //=> 490\n *\n * @example\n * arabicConverter('MCMXC');\n * //=> 1900\n */\nexport const arabicConverter = (romanNumber: string): number => {\n if (romanNumber === 'infinitum') {\n return Infinity;\n }\n\n const romanLetters = Object.keys(romanNumerals);\n if (Array.from(romanNumber).some((letter) => !romanLetters.includes(letter))) {\n throw new Error('invalid roman number');\n }\n\n let number = 0;\n\n for (let i = 0; i < romanNumber.length; i++) {\n let arabicNumber = romanNumerals[romanNumber.charAt(i)];\n\n if (i + 1 < romanNumber.length) {\n const nextArabicNumber = romanNumerals[romanNumber.charAt(i + 1)];\n if (arabicNumber < nextArabicNumber) {\n arabicNumber *= -1;\n }\n }\n\n number += arabicNumber;\n }\n\n let isValid: boolean;\n try {\n isValid = romanNumber === romanConverter(number);\n } catch {\n throw new Error('invalid roman number');\n }\n\n if (!isValid) {\n throw new Error('invalid roman number');\n }\n\n return number;\n};\n\nexport default arabicConverter;\n","import { unitsDict, tensDict, zeroTenOrdinals } from '../constants/constants';\n\nconst tensConverter = (word: string): number => {\n if (unitsDict[word]) {\n return unitsDict[word];\n }\n\n const ten = Object.keys(tensDict).find((w) => word.startsWith(w.slice(0, -1)));\n if (!ten) {\n return NaN;\n }\n\n const result = tensDict[ten];\n if (word === ten) {\n return result;\n }\n\n let [, unit] = word.split(ten);\n if (!unit) {\n [, unit] = word.split(ten.slice(0, -1));\n }\n if (!unitsDict[unit]) {\n return NaN;\n }\n return result + unitsDict[unit];\n};\n\nconst hundredsConverter = (word: string): number => {\n const [hundred, ten] = word.split('cento');\n if (ten === undefined) {\n return tensConverter(hundred);\n }\n let result = -1;\n if (hundred === '') {\n result = 100;\n } else {\n if (!unitsDict[hundred]) {\n return NaN;\n }\n result = unitsDict[hundred] * 100;\n }\n if (ten !== '') {\n if (ten.startsWith('tt')) {\n result += tensConverter(`o${ten}`);\n } else {\n result += tensConverter(ten);\n }\n }\n\n return result;\n};\n\nconst numberCalculator = (word: string): number => {\n // billions\n let index = word.indexOf('miliard');\n if (index > -1) {\n const sub = word.slice(index + 8);\n let rest = 0;\n if (sub) {\n rest = numberCalculator(sub);\n }\n return hundredsConverter(word.slice(0, index)) * 1000000000 + rest;\n }\n\n // millions\n index = word.indexOf('milion');\n if (index > -1) {\n const sub = word.slice(index + 7);\n let rest = 0;\n if (sub) {\n rest = numberCalculator(sub);\n }\n return hundredsConverter(word.slice(0, index)) * 1000000 + rest;\n }\n\n // thousands\n index = word.indexOf('mila');\n if (index > -1) {\n const sub = word.slice(index + 4);\n let rest = 0;\n if (sub) {\n rest = numberCalculator(sub);\n }\n return hundredsConverter(word.slice(0, index)) * 1000 + rest;\n }\n\n index = word.indexOf('mille');\n if (index > -1) {\n const sub = word.slice(index + 5);\n if (!sub) {\n return 1000;\n }\n return 1000 + hundredsConverter(sub);\n }\n\n return hundredsConverter(word);\n};\n\nconst getNumberFromOrdinal = (ordinal: string): string => {\n let cardinal = ordinal;\n cardinal = cardinal.replace(/decim\\w$/, 'dieci');\n cardinal = cardinal.replace(/centesim\\w$/, 'cento');\n cardinal = cardinal.replace(/^millesim\\w$/, 'mille');\n cardinal = cardinal.replace(/millesim\\w$/, 'mila');\n cardinal = cardinal.replace(/^milionesim\\w$/, 'unmilione');\n cardinal = cardinal.replace(/milionesim\\w$/, 'milioni');\n cardinal = cardinal.replace(/^miliardesim\\w$/, 'unmiliardo');\n cardinal = cardinal.replace(/miliardesim\\w$/, 'miliardi');\n cardinal = cardinal.replace(/ventesim\\w$/, 'venti');\n cardinal = cardinal.replace(/ntesim\\w$/, 'nta');\n cardinal = cardinal.replace(/unesim\\w$/, 'uno');\n cardinal = cardinal.replace(/quattresim\\w$/, 'quattro');\n cardinal = cardinal.replace(/ottesim\\w$/, 'otto');\n cardinal = cardinal.replace(/duesim\\w$/, 'due');\n cardinal = cardinal.replace(/cinquesim\\w$/, 'cinque');\n cardinal = cardinal.replace(/settesim\\w$/, 'sette');\n cardinal = cardinal.replace(/novesim\\w$/, 'nove');\n cardinal = cardinal.replace(/undicesim\\w$/, 'undici');\n cardinal = cardinal.replace(/dodicesim\\w$/, 'dodici');\n cardinal = cardinal.replace(/tredicesim\\w$/, 'tredici');\n cardinal = cardinal.replace(/quattordicesim\\w$/, 'quattordici');\n cardinal = cardinal.replace(/quindicesim\\w$/, 'quindici');\n cardinal = cardinal.replace(/sedicesim\\w$/, 'sedici');\n cardinal = cardinal.replace(/esim\\w$/, '');\n cardinal = cardinal.replace(/^milione/, 'unmilione');\n cardinal = cardinal.replace(/^miliard/, 'unmiliardo');\n cardinal = cardinal.replace(/centuno/, 'centouno');\n cardinal = cardinal.replace(/centotto/, 'centootto');\n cardinal = cardinal.replace(/miliarduno/, 'miliardouno');\n cardinal = cardinal.replace(/miliardotto/, 'miliardootto');\n return cardinal;\n};\n\n/**\n * @name italianConverter\n * @summary Converts an italian word representation to a number\n *\n * @param {string} word - Number italian word representation\n * @returns {number} Converted number or NaN\n *\n * @example\n * italianConverter('uno');\n * //=> 1\n *\n * @example\n * italianConverter('novantasette');\n * //=> 97\n *\n * @example\n * italianConverter('un milione tredicimila');\n * //=> 101\n * 3000\n * @example\n * italianConverter('zeresimo');\n * //=> 0\n *\n * @example\n * italianConverter('prima');\n * //=> 1\n *\n * @example\n * italianConverter('quattrocentotredicesime');\n * //=> 413\n *\n * @example\n * italianConverter('infinitesimi');\n * //=> Infinity\n */\nconst italianConverter = (word: string): number => {\n let escapedWord = word.toLowerCase();\n escapedWord = escapedWord.replaceAll(' e ', '');\n escapedWord = escapedWord.replaceAll(' ', '');\n\n let multiplier = 1;\n if (escapedWord.startsWith('meno')) {\n multiplier = -1;\n escapedWord = escapedWord.replace('meno', '');\n }\n\n if (word === 'infinito') {\n return Infinity;\n }\n\n if (word === 'zero') {\n return 0;\n }\n\n if (escapedWord.match(/\\w*(a|o|e|i)$/)) {\n const index = zeroTenOrdinals.findIndex((ord) => escapedWord.startsWith(ord.slice(0, -1)));\n if (index !== -1) {\n return index;\n }\n if (escapedWord.match(/infinitesim(a|o|e|i)$/)) {\n return Infinity;\n }\n if (escapedWord.match(/\\w*(esim|decim)(a|o|e|i)$/)) {\n escapedWord = getNumberFromOrdinal(escapedWord);\n }\n }\n\n return numberCalculator(escapedWord) * multiplier;\n};\n\nexport default italianConverter;\n"],"mappings":"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","names":["hundred","tensConverter","hundredsConverter","hundred"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "italian-numbers",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.4",
|
|
4
4
|
"description": "Converts a number to an italian word representation",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -35,6 +35,7 @@
|
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@jest/globals": "^29.7.0",
|
|
37
37
|
"@types/jest": "^29.5.5",
|
|
38
|
+
"@types/node": "^20.10.6",
|
|
38
39
|
"@typescript-eslint/eslint-plugin": "^6.7.5",
|
|
39
40
|
"@typescript-eslint/parser": "^6.7.5",
|
|
40
41
|
"eslint": "^8.51.0",
|