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 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(/ntesim\w$/, "nti");
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":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAO,IAAM,eAAe;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,kBAAkB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,OAAO;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,UAAU;AAChB,IAAM,YAAY,CAAC,SAAS,MAAM;AAClC,IAAM,WAAW,CAAC,cAAc,UAAU;AAC1C,IAAM,WAAW,CAAC,eAAe,WAAW;AAE5C,IAAM,MAAM;AAEZ,IAAM,gBAA2C;AAAA,EACtD,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AACL;AAEO,IAAM,aAAa;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,YAAY;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,gBAAgB;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,iBAAiB;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,YAA0C;AAAA,EACrD,IAAI;AAAA,EACJ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,UAAK;AAAA,EACL,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,KAAK;AAAA,EACL,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,aAAa;AAAA,EACb,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,UAAU;AAAA,EACV,YAAY;AACd;AAEO,IAAM,WAAwC;AAAA,EACnD,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,WAAW;AAAA,EACX,UAAU;AAAA,EACV,UAAU;AAAA,EACV,SAAS;AAAA,EACT,SAAS;AACX;;;ACtIA,IAAM,gBAAgB,CAAC,MAAsB;AAC3C,MAAI,IAAI,IAAI;AACV,WAAO,aAAa,CAAC;AAAA,EACvB;AAEA,QAAM,aAAa,KAAK,MAAM,IAAI,EAAE,IAAI;AACxC,QAAM,cAAc,IAAI;AACxB,QAAM,OAAO,KAAK,UAAU;AAE5B,MAAI,gBAAgB,GAAG;AACrB,WAAO;AAAA,EACT;AAEA,MAAI,gBAAgB,KAAK,gBAAgB,GAAG;AAC1C,WAAO,KAAK,MAAM,GAAG,KAAK,SAAS,CAAC,IAAI,aAAa,WAAW;AAAA,EAClE;AAEA,SAAO,OAAO,aAAa,WAAW;AACxC;AAEA,IAAM,oBAAoB,CAAC,MAAsB;AAC/C,QAAM,aAAa,KAAK,MAAM,IAAI,GAAG;AACrC,MAAI,eAAe,GAAG;AACpB,WAAO;AAAA,EACT;AAEA,SAAO,aAAa,UAAU,IAAI;AACpC;AAEA,IAAM,iBAAiB,CAAC,MAAsB;AAC5C,QAAM,eAAe,KAAK,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI;AAErD,MAAI,eAAe,GAAG;AACpB,WAAO,cAAc,CAAC;AAAA,EACxB;AACA,MAAI,eAAe,GAAG;AACpB,QAAI,IAAI,QAAQ,GAAG;AACjB,aAAO,kBAAkB,CAAC;AAAA,IAC5B;AAEA,QAAI,IAAI,MAAM,MAAM,IAAI,MAAM,IAAI;AAChC,YAAM,OAAO,kBAAkB,CAAC;AAChC,aAAO,KAAK,MAAM,GAAG,KAAK,SAAS,CAAC,IAAI,eAAe,IAAI,GAAG;AAAA,IAChE;AAEA,WAAO,kBAAkB,CAAC,IAAI,eAAe,IAAI,GAAG;AAAA,EACtD;AAEA,MAAI,eAAe,GAAG;AACpB,UAAM,cAAc,KAAK,MAAM,IAAI,GAAI;AACvC,QAAI,gBAAgB,GAAG;AACrB,UAAI,IAAI,QAAS,GAAG;AAClB,eAAO,UAAU,CAAC;AAAA,MACpB;AACA,aAAO,UAAU,CAAC,IAAI,eAAe,IAAI,GAAI;AAAA,IAC/C;AACA,QAAI,IAAI,QAAS,GAAG;AAClB,aAAO,eAAe,WAAW,IAAI,UAAU,CAAC;AAAA,IAClD;AACA,WACE,eAAe,WAAW,IAAI,UAAU,CAAC,IAAI,eAAe,IAAI,GAAI;AAAA,EAExE;AAEA,MAAI,eAAe,IAAI;AACrB,UAAM,cAAc,KAAK,MAAM,IAAI,GAAO;AAC1C,QAAI,gBAAgB,GAAG;AACrB,UAAI,IAAI,QAAY,GAAG;AACrB,eAAO,SAAS,CAAC;AAAA,MACnB;AACA,aAAO,SAAS,CAAC,IAAI,MAAM,eAAe,IAAI,GAAO;AAAA,IACvD;AACA,QAAI,IAAI,QAAY,GAAG;AACrB,aAAO,eAAe,WAAW,IAAI,SAAS,CAAC;AAAA,IACjD;AACA,WACE,eAAe,WAAW,IAAI,SAAS,CAAC,IAAI,MAAM,eAAe,IAAI,GAAO;AAAA,EAEhF;AAEA,MAAI,eAAe,IAAI;AACrB,UAAM,cAAc,KAAK,MAAM,IAAI,GAAU;AAC7C,QAAI,gBAAgB,GAAG;AACrB,UAAI,IAAI,QAAe,GAAG;AACxB,eAAO,SAAS,CAAC;AAAA,MACnB;AACA,aAAO,SAAS,CAAC,IAAI,MAAM,eAAe,IAAI,GAAU;AAAA,IAC1D;AACA,QAAI,IAAI,QAAe,GAAG;AACxB,aAAO,eAAe,WAAW,IAAI,SAAS,CAAC;AAAA,IACjD;AACA,WACE,eAAe,WAAW,IAAI,SAAS,CAAC,IAAI,MAAM,eAAe,IAAI,GAAU;AAAA,EAEnF;AAEA,SAAO;AACT;AA8BA,IAAM,oBAAoB,CAAC,WAA2B;AACpD,MAAI,OAAO,MAAM,MAAM,GAAG;AACxB,UAAM,IAAI,MAAM,cAAc;AAAA,EAChC;AACA,MAAI,WAAW,UAAU;AACvB,WAAO;AAAA,EACT;AAEA,MAAI,SAAS,cAAc;AACzB,UAAM,IAAI,MAAM,2BAA2B;AAAA,EAC7C;AACA,MAAI,SAAS,eAAe;AAC1B,UAAM,IAAI,MAAM,yBAAyB;AAAA,EAC3C;AAEA,MAAI,UAAU;AACd,MAAI,SAAS,GAAG;AACd,cAAU;AAAA,EACZ;AACA,QAAM,IAAI,KAAK,IAAI,MAAM;AAEzB,MAAI,SAAS,UAAU,eAAe,CAAC;AACvC,MAAI,OAAO,SAAS,KAAK,KAAK,WAAW,OAAO;AAC9C,aAAS,OAAO,QAAQ,MAAM,MAAG;AAAA,EACnC;AAEA,WAAS,OAAO,WAAW,kBAAkB,SAAM;AACnD,SAAO;AACT;AAEA,IAAO,4BAAQ;;;AC/Jf,IAAM,YAAY,CAAC,MAAsB;AACvC,MAAI,IAAI,IAAI;AACV,WAAO,gBAAgB,CAAC;AAAA,EAC1B;AAEA,MAAI,OAAO,0BAAkB,CAAC;AAE9B,SAAO,KAAK,WAAW,OAAO,GAAG;AACjC,SAAO,KAAK,QAAQ,mBAAmB,CAAC,QAAQ,IAAI,OAAO;AACzD,QAAI,OAAO,KAAK;AACd,aAAO;AAAA,IACT;AACA,QAAI,OAAO,KAAK;AACd,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT,CAAC;AACD,SAAO,KAAK,WAAW,SAAS,EAAE;AAClC,SAAO,KAAK,WAAW,UAAU,KAAK;AACtC,SAAO,KAAK,WAAW,WAAW,MAAM;AACxC,SAAO,KAAK,WAAW,KAAK,EAAE;AAE9B,QAAM,YAAY,IAAI;AAEtB,MAAI,IAAI,QAAQ,MAAM,cAAc,GAAG;AACrC,WAAO,GAAG,KAAK,QAAQ,MAAM,GAAG,CAAC;AAAA,EACnC;AACA,MAAI,IAAI,QAAQ,MAAM,cAAc,GAAG;AACrC,WAAO,GAAG,IAAI;AAAA,EAChB;AACA,MAAI,IAAI,QAAQ,IAAI;AAClB,WAAO,KAAK,QAAQ,WAAW,QAAQ;AAAA,EACzC;AACA,MAAI,KAAK,SAAS,MAAM,GAAG;AACzB,WAAO,KAAK,QAAQ,QAAQ,WAAW;AAAA,EACzC;AAEA,SAAO,GAAG,KAAK,QAAQ,MAAM,EAAE,CAAC;AAClC;AAmEA,IAAM,mBAAmB,CACvB,QACA,UAAmB,EAAE,QAAQ,OAAO,QAAQ,MAAM,MACvC;AACX,MAAI,SAAS,GAAG;AACd,UAAM,IAAI,MAAM,6BAA6B;AAAA,EAC/C;AAEA,QAAM,SAAS,UAAU,MAAM;AAE/B,QAAM,EAAE,QAAQ,OAAO,IAAI;AAE3B,MAAI,UAAU,QAAQ;AACpB,WAAO,OAAO,QAAQ,MAAM,GAAG;AAAA,EACjC;AAEA,MAAI,QAAQ;AACV,WAAO,OAAO,QAAQ,MAAM,GAAG;AAAA,EACjC;AAEA,MAAI,QAAQ;AACV,WAAO,OAAO,QAAQ,MAAM,GAAG;AAAA,EACjC;AAEA,SAAO;AACT;AAEA,IAAO,2BAAQ;;;ACjHf,IAAM,iBAAiB,CAAC,WAA2B;AACjD,MAAI,OAAO,MAAM,MAAM,GAAG;AACxB,UAAM,IAAI,MAAM,cAAc;AAAA,EAChC;AACA,MAAI,WAAW,UAAU;AACvB,WAAO;AAAA,EACT;AAEA,MAAI,SAAS,MAAM;AACjB,UAAM,IAAI,MAAM,mBAAmB;AAAA,EACrC;AAEA,MAAI,SAAS,GAAG;AACd,UAAM,IAAI,MAAM,cAAc;AAAA,EAChC;AAEA,QAAM,OAAO,SAAS;AACtB,QAAM,MAAM,KAAK,MAAM,SAAS,EAAE,IAAI;AACtC,QAAMA,WAAU,KAAK,MAAM,SAAS,GAAG,IAAI;AAC3C,QAAM,WAAW,KAAK,MAAM,SAAS,GAAI,IAAI;AAE7C,QAAM,SAAS,GAAG,eAAe,QAAQ,CAAC,GAAG,cAAcA,QAAO,CAAC,GAAG,UAAU,GAAG,CAAC,GAAG,WAAW,IAAI,CAAC;AACvG,SAAO;AACT;AAEA,IAAO,yBAAQ;;;AC7BR,IAAM,kBAAkB,CAAC,gBAAgC;AAC9D,MAAI,gBAAgB,aAAa;AAC/B,WAAO;AAAA,EACT;AAEA,QAAM,eAAe,OAAO,KAAK,aAAa;AAC9C,MAAI,MAAM,KAAK,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,aAAa,SAAS,MAAM,CAAC,GAAG;AAC5E,UAAM,IAAI,MAAM,sBAAsB;AAAA,EACxC;AAEA,MAAI,SAAS;AAEb,WAAS,IAAI,GAAG,IAAI,YAAY,QAAQ,KAAK;AAC3C,QAAI,eAAe,cAAc,YAAY,OAAO,CAAC,CAAC;AAEtD,QAAI,IAAI,IAAI,YAAY,QAAQ;AAC9B,YAAM,mBAAmB,cAAc,YAAY,OAAO,IAAI,CAAC,CAAC;AAChE,UAAI,eAAe,kBAAkB;AACnC,wBAAgB;AAAA,MAClB;AAAA,IACF;AAEA,cAAU;AAAA,EACZ;AAEA,MAAI;AACJ,MAAI;AACF,cAAU,gBAAgB,uBAAe,MAAM;AAAA,EACjD,QAAQ;AACN,UAAM,IAAI,MAAM,sBAAsB;AAAA,EACxC;AAEA,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,sBAAsB;AAAA,EACxC;AAEA,SAAO;AACT;AAEA,IAAO,0BAAQ;;;AC5Df,IAAMC,iBAAgB,CAAC,SAAyB;AAC9C,MAAI,UAAU,IAAI,GAAG;AACnB,WAAO,UAAU,IAAI;AAAA,EACvB;AAEA,QAAM,MAAM,OAAO,KAAK,QAAQ,EAAE,KAAK,CAAC,MAAM,KAAK,WAAW,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC;AAC7E,MAAI,CAAC,KAAK;AACR,WAAO;AAAA,EACT;AAEA,QAAM,SAAS,SAAS,GAAG;AAC3B,MAAI,SAAS,KAAK;AAChB,WAAO;AAAA,EACT;AAEA,MAAI,CAAC,EAAE,IAAI,IAAI,KAAK,MAAM,GAAG;AAC7B,MAAI,CAAC,MAAM;AACT,KAAC,EAAE,IAAI,IAAI,KAAK,MAAM,IAAI,MAAM,GAAG,EAAE,CAAC;AAAA,EACxC;AACA,MAAI,CAAC,UAAU,IAAI,GAAG;AACpB,WAAO;AAAA,EACT;AACA,SAAO,SAAS,UAAU,IAAI;AAChC;AAEA,IAAMC,qBAAoB,CAAC,SAAyB;AAClD,QAAM,CAACC,UAAS,GAAG,IAAI,KAAK,MAAM,OAAO;AACzC,MAAI,QAAQ,QAAW;AACrB,WAAOF,eAAcE,QAAO;AAAA,EAC9B;AACA,MAAI,SAAS;AACb,MAAIA,aAAY,IAAI;AAClB,aAAS;AAAA,EACX,OAAO;AACL,QAAI,CAAC,UAAUA,QAAO,GAAG;AACvB,aAAO;AAAA,IACT;AACA,aAAS,UAAUA,QAAO,IAAI;AAAA,EAChC;AACA,MAAI,QAAQ,IAAI;AACd,QAAI,IAAI,WAAW,IAAI,GAAG;AACxB,gBAAUF,eAAc,IAAI,GAAG,EAAE;AAAA,IACnC,OAAO;AACL,gBAAUA,eAAc,GAAG;AAAA,IAC7B;AAAA,EACF;AAEA,SAAO;AACT;AAEA,IAAM,mBAAmB,CAAC,SAAyB;AAEjD,MAAI,QAAQ,KAAK,QAAQ,SAAS;AAClC,MAAI,QAAQ,IAAI;AACd,UAAM,MAAM,KAAK,MAAM,QAAQ,CAAC;AAChC,QAAI,OAAO;AACX,QAAI,KAAK;AACP,aAAO,iBAAiB,GAAG;AAAA,IAC7B;AACA,WAAOC,mBAAkB,KAAK,MAAM,GAAG,KAAK,CAAC,IAAI,MAAa;AAAA,EAChE;AAGA,UAAQ,KAAK,QAAQ,QAAQ;AAC7B,MAAI,QAAQ,IAAI;AACd,UAAM,MAAM,KAAK,MAAM,QAAQ,CAAC;AAChC,QAAI,OAAO;AACX,QAAI,KAAK;AACP,aAAO,iBAAiB,GAAG;AAAA,IAC7B;AACA,WAAOA,mBAAkB,KAAK,MAAM,GAAG,KAAK,CAAC,IAAI,MAAU;AAAA,EAC7D;AAGA,UAAQ,KAAK,QAAQ,MAAM;AAC3B,MAAI,QAAQ,IAAI;AACd,UAAM,MAAM,KAAK,MAAM,QAAQ,CAAC;AAChC,QAAI,OAAO;AACX,QAAI,KAAK;AACP,aAAO,iBAAiB,GAAG;AAAA,IAC7B;AACA,WAAOA,mBAAkB,KAAK,MAAM,GAAG,KAAK,CAAC,IAAI,MAAO;AAAA,EAC1D;AAEA,UAAQ,KAAK,QAAQ,OAAO;AAC5B,MAAI,QAAQ,IAAI;AACd,UAAM,MAAM,KAAK,MAAM,QAAQ,CAAC;AAChC,QAAI,CAAC,KAAK;AACR,aAAO;AAAA,IACT;AACA,WAAO,MAAOA,mBAAkB,GAAG;AAAA,EACrC;AAEA,SAAOA,mBAAkB,IAAI;AAC/B;AAEA,IAAM,uBAAuB,CAAC,YAA4B;AACxD,MAAI,WAAW;AACf,aAAW,SAAS,QAAQ,YAAY,OAAO;AAC/C,aAAW,SAAS,QAAQ,eAAe,OAAO;AAClD,aAAW,SAAS,QAAQ,gBAAgB,OAAO;AACnD,aAAW,SAAS,QAAQ,eAAe,MAAM;AACjD,aAAW,SAAS,QAAQ,kBAAkB,WAAW;AACzD,aAAW,SAAS,QAAQ,iBAAiB,SAAS;AACtD,aAAW,SAAS,QAAQ,mBAAmB,YAAY;AAC3D,aAAW,SAAS,QAAQ,kBAAkB,UAAU;AACxD,aAAW,SAAS,QAAQ,eAAe,OAAO;AAClD,aAAW,SAAS,QAAQ,aAAa,KAAK;AAC9C,aAAW,SAAS,QAAQ,aAAa,KAAK;AAC9C,aAAW,SAAS,QAAQ,iBAAiB,SAAS;AACtD,aAAW,SAAS,QAAQ,cAAc,MAAM;AAChD,aAAW,SAAS,QAAQ,aAAa,KAAK;AAC9C,aAAW,SAAS,QAAQ,gBAAgB,QAAQ;AACpD,aAAW,SAAS,QAAQ,eAAe,OAAO;AAClD,aAAW,SAAS,QAAQ,cAAc,MAAM;AAChD,aAAW,SAAS,QAAQ,gBAAgB,QAAQ;AACpD,aAAW,SAAS,QAAQ,gBAAgB,QAAQ;AACpD,aAAW,SAAS,QAAQ,iBAAiB,SAAS;AACtD,aAAW,SAAS,QAAQ,qBAAqB,aAAa;AAC9D,aAAW,SAAS,QAAQ,kBAAkB,UAAU;AACxD,aAAW,SAAS,QAAQ,gBAAgB,QAAQ;AACpD,aAAW,SAAS,QAAQ,WAAW,EAAE;AACzC,aAAW,SAAS,QAAQ,YAAY,WAAW;AACnD,aAAW,SAAS,QAAQ,YAAY,YAAY;AACpD,aAAW,SAAS,QAAQ,WAAW,UAAU;AACjD,aAAW,SAAS,QAAQ,YAAY,WAAW;AACnD,aAAW,SAAS,QAAQ,cAAc,aAAa;AACvD,aAAW,SAAS,QAAQ,eAAe,cAAc;AACzD,SAAO;AACT;AAqCA,IAAM,mBAAmB,CAAC,SAAyB;AACjD,MAAI,cAAc,KAAK,YAAY;AACnC,gBAAc,YAAY,WAAW,OAAO,EAAE;AAC9C,gBAAc,YAAY,WAAW,KAAK,EAAE;AAE5C,MAAI,aAAa;AACjB,MAAI,YAAY,WAAW,MAAM,GAAG;AAClC,iBAAa;AACb,kBAAc,YAAY,QAAQ,QAAQ,EAAE;AAAA,EAC9C;AAEA,MAAI,SAAS,YAAY;AACvB,WAAO;AAAA,EACT;AAEA,MAAI,SAAS,QAAQ;AACnB,WAAO;AAAA,EACT;AAEA,MAAI,YAAY,MAAM,eAAe,GAAG;AACtC,UAAM,QAAQ,gBAAgB,UAAU,CAAC,QAAQ,YAAY,WAAW,IAAI,MAAM,GAAG,EAAE,CAAC,CAAC;AACzF,QAAI,UAAU,IAAI;AAChB,aAAO;AAAA,IACT;AACA,QAAI,YAAY,MAAM,uBAAuB,GAAG;AAC9C,aAAO;AAAA,IACT;AACA,QAAI,YAAY,MAAM,2BAA2B,GAAG;AAClD,oBAAc,qBAAqB,WAAW;AAAA,IAChD;AAAA,EACF;AAEA,SAAO,iBAAiB,WAAW,IAAI;AACzC;AAEA,IAAO,2BAAQ;","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(/ntesim\w$/, "nti");
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");
@@ -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.0",
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",