italian-numbers 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -2
- package/dist/index.js +45 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +45 -0
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# italian-numbers
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
### Converts a number to an italian word representation and vice versa
|
|
4
6
|
|
|
5
7
|
Works with positive and negative integers from **-999999999999** (meno novecentonovantanove miliardi e novecentonovantanove milioni e novecentonovantanovemilanovecentonovantanove) to **999999999999** (novecentonovantanove miliardi e novecentonovantanove milioni e novecentonovantanovemilanovecentonovantanove).
|
|
6
8
|
|
|
@@ -60,10 +62,15 @@ ordinalConverter(1, { plural: true, female: true }); // 'prime'
|
|
|
60
62
|
ordinalConverter(70, { plural: true, female: true }); // 'settantesime'
|
|
61
63
|
ordinalConverter(110, { plural: true, female: true }); // 'centodecime'
|
|
62
64
|
|
|
63
|
-
//
|
|
65
|
+
// Italian word representation to number
|
|
64
66
|
italianConverter('uno'); // 1
|
|
65
67
|
italianConverter('novantasette'); // 97
|
|
66
68
|
italianConverter('un milione tredicimila'); // 1013000
|
|
69
|
+
italianConverter('zeresimo'); // 0
|
|
70
|
+
italianConverter('prima'); // 1
|
|
71
|
+
italianConverter('quattrocentotredicesime'); // 413
|
|
72
|
+
italianConverter('infinitesimi'); // Infinity
|
|
73
|
+
|
|
67
74
|
|
|
68
75
|
// Arabic to Roman
|
|
69
76
|
romanConverter(1); // 'I'
|
package/dist/index.js
CHANGED
|
@@ -460,6 +460,39 @@ var numberCalculator = (word) => {
|
|
|
460
460
|
}
|
|
461
461
|
return hundredsConverter2(word);
|
|
462
462
|
};
|
|
463
|
+
var getNumberFromOrdinal = (ordinal) => {
|
|
464
|
+
let cardinal = ordinal;
|
|
465
|
+
cardinal = cardinal.replace(/decim\w$/, "dieci");
|
|
466
|
+
cardinal = cardinal.replace(/centesim\w$/, "cento");
|
|
467
|
+
cardinal = cardinal.replace(/^millesim\w$/, "mille");
|
|
468
|
+
cardinal = cardinal.replace(/millesim\w$/, "mila");
|
|
469
|
+
cardinal = cardinal.replace(/^milionesim\w$/, "unmilione");
|
|
470
|
+
cardinal = cardinal.replace(/milionesim\w$/, "milioni");
|
|
471
|
+
cardinal = cardinal.replace(/^miliardesim\w$/, "unmiliardo");
|
|
472
|
+
cardinal = cardinal.replace(/miliardesim\w$/, "miliardi");
|
|
473
|
+
cardinal = cardinal.replace(/ntesim\w$/, "nti");
|
|
474
|
+
cardinal = cardinal.replace(/unesim\w$/, "uno");
|
|
475
|
+
cardinal = cardinal.replace(/quattresim\w$/, "quattro");
|
|
476
|
+
cardinal = cardinal.replace(/ottesim\w$/, "otto");
|
|
477
|
+
cardinal = cardinal.replace(/duesim\w$/, "due");
|
|
478
|
+
cardinal = cardinal.replace(/cinquesim\w$/, "cinque");
|
|
479
|
+
cardinal = cardinal.replace(/settesim\w$/, "sette");
|
|
480
|
+
cardinal = cardinal.replace(/novesim\w$/, "nove");
|
|
481
|
+
cardinal = cardinal.replace(/undicesim\w$/, "undici");
|
|
482
|
+
cardinal = cardinal.replace(/dodicesim\w$/, "dodici");
|
|
483
|
+
cardinal = cardinal.replace(/tredicesim\w$/, "tredici");
|
|
484
|
+
cardinal = cardinal.replace(/quattordicesim\w$/, "quattordici");
|
|
485
|
+
cardinal = cardinal.replace(/quindicesim\w$/, "quindici");
|
|
486
|
+
cardinal = cardinal.replace(/sedicesim\w$/, "sedici");
|
|
487
|
+
cardinal = cardinal.replace(/esim\w$/, "");
|
|
488
|
+
cardinal = cardinal.replace(/^milione/, "unmilione");
|
|
489
|
+
cardinal = cardinal.replace(/^miliard/, "unmiliardo");
|
|
490
|
+
cardinal = cardinal.replace(/centuno/, "centouno");
|
|
491
|
+
cardinal = cardinal.replace(/centotto/, "centootto");
|
|
492
|
+
cardinal = cardinal.replace(/miliarduno/, "miliardouno");
|
|
493
|
+
cardinal = cardinal.replace(/miliardotto/, "miliardootto");
|
|
494
|
+
return cardinal;
|
|
495
|
+
};
|
|
463
496
|
var italianConverter = (word) => {
|
|
464
497
|
let escapedWord = word.toLowerCase();
|
|
465
498
|
escapedWord = escapedWord.replaceAll(" e ", "");
|
|
@@ -475,6 +508,18 @@ var italianConverter = (word) => {
|
|
|
475
508
|
if (word === "zero") {
|
|
476
509
|
return 0;
|
|
477
510
|
}
|
|
511
|
+
if (escapedWord.match(/\w*(a|o|e|i)$/)) {
|
|
512
|
+
const index = zeroTenOrdinals.findIndex((ord) => escapedWord.startsWith(ord.slice(0, -1)));
|
|
513
|
+
if (index !== -1) {
|
|
514
|
+
return index;
|
|
515
|
+
}
|
|
516
|
+
if (escapedWord.match(/infinitesim(a|o|e|i)$/)) {
|
|
517
|
+
return Infinity;
|
|
518
|
+
}
|
|
519
|
+
if (escapedWord.match(/\w*(esim|decim)(a|o|e|i)$/)) {
|
|
520
|
+
escapedWord = getNumberFromOrdinal(escapedWord);
|
|
521
|
+
}
|
|
522
|
+
}
|
|
478
523
|
return numberCalculator(escapedWord) * multiplier;
|
|
479
524
|
};
|
|
480
525
|
var italianConverter_default = italianConverter;
|
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 } 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 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 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\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"]}
|
package/dist/index.mjs
CHANGED
|
@@ -430,6 +430,39 @@ var numberCalculator = (word) => {
|
|
|
430
430
|
}
|
|
431
431
|
return hundredsConverter2(word);
|
|
432
432
|
};
|
|
433
|
+
var getNumberFromOrdinal = (ordinal) => {
|
|
434
|
+
let cardinal = ordinal;
|
|
435
|
+
cardinal = cardinal.replace(/decim\w$/, "dieci");
|
|
436
|
+
cardinal = cardinal.replace(/centesim\w$/, "cento");
|
|
437
|
+
cardinal = cardinal.replace(/^millesim\w$/, "mille");
|
|
438
|
+
cardinal = cardinal.replace(/millesim\w$/, "mila");
|
|
439
|
+
cardinal = cardinal.replace(/^milionesim\w$/, "unmilione");
|
|
440
|
+
cardinal = cardinal.replace(/milionesim\w$/, "milioni");
|
|
441
|
+
cardinal = cardinal.replace(/^miliardesim\w$/, "unmiliardo");
|
|
442
|
+
cardinal = cardinal.replace(/miliardesim\w$/, "miliardi");
|
|
443
|
+
cardinal = cardinal.replace(/ntesim\w$/, "nti");
|
|
444
|
+
cardinal = cardinal.replace(/unesim\w$/, "uno");
|
|
445
|
+
cardinal = cardinal.replace(/quattresim\w$/, "quattro");
|
|
446
|
+
cardinal = cardinal.replace(/ottesim\w$/, "otto");
|
|
447
|
+
cardinal = cardinal.replace(/duesim\w$/, "due");
|
|
448
|
+
cardinal = cardinal.replace(/cinquesim\w$/, "cinque");
|
|
449
|
+
cardinal = cardinal.replace(/settesim\w$/, "sette");
|
|
450
|
+
cardinal = cardinal.replace(/novesim\w$/, "nove");
|
|
451
|
+
cardinal = cardinal.replace(/undicesim\w$/, "undici");
|
|
452
|
+
cardinal = cardinal.replace(/dodicesim\w$/, "dodici");
|
|
453
|
+
cardinal = cardinal.replace(/tredicesim\w$/, "tredici");
|
|
454
|
+
cardinal = cardinal.replace(/quattordicesim\w$/, "quattordici");
|
|
455
|
+
cardinal = cardinal.replace(/quindicesim\w$/, "quindici");
|
|
456
|
+
cardinal = cardinal.replace(/sedicesim\w$/, "sedici");
|
|
457
|
+
cardinal = cardinal.replace(/esim\w$/, "");
|
|
458
|
+
cardinal = cardinal.replace(/^milione/, "unmilione");
|
|
459
|
+
cardinal = cardinal.replace(/^miliard/, "unmiliardo");
|
|
460
|
+
cardinal = cardinal.replace(/centuno/, "centouno");
|
|
461
|
+
cardinal = cardinal.replace(/centotto/, "centootto");
|
|
462
|
+
cardinal = cardinal.replace(/miliarduno/, "miliardouno");
|
|
463
|
+
cardinal = cardinal.replace(/miliardotto/, "miliardootto");
|
|
464
|
+
return cardinal;
|
|
465
|
+
};
|
|
433
466
|
var italianConverter = (word) => {
|
|
434
467
|
let escapedWord = word.toLowerCase();
|
|
435
468
|
escapedWord = escapedWord.replaceAll(" e ", "");
|
|
@@ -445,6 +478,18 @@ var italianConverter = (word) => {
|
|
|
445
478
|
if (word === "zero") {
|
|
446
479
|
return 0;
|
|
447
480
|
}
|
|
481
|
+
if (escapedWord.match(/\w*(a|o|e|i)$/)) {
|
|
482
|
+
const index = zeroTenOrdinals.findIndex((ord) => escapedWord.startsWith(ord.slice(0, -1)));
|
|
483
|
+
if (index !== -1) {
|
|
484
|
+
return index;
|
|
485
|
+
}
|
|
486
|
+
if (escapedWord.match(/infinitesim(a|o|e|i)$/)) {
|
|
487
|
+
return Infinity;
|
|
488
|
+
}
|
|
489
|
+
if (escapedWord.match(/\w*(esim|decim)(a|o|e|i)$/)) {
|
|
490
|
+
escapedWord = getNumberFromOrdinal(escapedWord);
|
|
491
|
+
}
|
|
492
|
+
}
|
|
448
493
|
return numberCalculator(escapedWord) * multiplier;
|
|
449
494
|
};
|
|
450
495
|
var italianConverter_default = italianConverter;
|
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 } 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 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 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\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"]}
|