n2words 1.23.1 → 2.0.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/LICENSE +1 -1
- package/README.md +317 -59
- package/dist/ArabicConverter.js +3 -0
- package/dist/ArabicConverter.js.map +1 -0
- package/dist/AzerbaijaniConverter.js +3 -0
- package/dist/AzerbaijaniConverter.js.map +1 -0
- package/dist/BanglaConverter.js +3 -0
- package/dist/BanglaConverter.js.map +1 -0
- package/dist/BiblicalHebrewConverter.js +3 -0
- package/dist/BiblicalHebrewConverter.js.map +1 -0
- package/dist/CroatianConverter.js +3 -0
- package/dist/CroatianConverter.js.map +1 -0
- package/dist/CzechConverter.js +3 -0
- package/dist/CzechConverter.js.map +1 -0
- package/dist/DanishConverter.js +3 -0
- package/dist/DanishConverter.js.map +1 -0
- package/dist/DutchConverter.js +3 -0
- package/dist/DutchConverter.js.map +1 -0
- package/dist/EnglishConverter.js +3 -0
- package/dist/EnglishConverter.js.map +1 -0
- package/dist/FilipinoConverter.js +3 -0
- package/dist/FilipinoConverter.js.map +1 -0
- package/dist/FrenchBelgiumConverter.js +3 -0
- package/dist/FrenchBelgiumConverter.js.map +1 -0
- package/dist/FrenchConverter.js +3 -0
- package/dist/FrenchConverter.js.map +1 -0
- package/dist/GermanConverter.js +3 -0
- package/dist/GermanConverter.js.map +1 -0
- package/dist/GreekConverter.js +3 -0
- package/dist/GreekConverter.js.map +1 -0
- package/dist/GujaratiConverter.js +3 -0
- package/dist/GujaratiConverter.js.map +1 -0
- package/dist/HebrewConverter.js +3 -0
- package/dist/HebrewConverter.js.map +1 -0
- package/dist/HindiConverter.js +3 -0
- package/dist/HindiConverter.js.map +1 -0
- package/dist/HungarianConverter.js +3 -0
- package/dist/HungarianConverter.js.map +1 -0
- package/dist/IndonesianConverter.js +3 -0
- package/dist/IndonesianConverter.js.map +1 -0
- package/dist/ItalianConverter.js +3 -0
- package/dist/ItalianConverter.js.map +1 -0
- package/dist/JapaneseConverter.js +3 -0
- package/dist/JapaneseConverter.js.map +1 -0
- package/dist/KannadaConverter.js +3 -0
- package/dist/KannadaConverter.js.map +1 -0
- package/dist/KoreanConverter.js +3 -0
- package/dist/KoreanConverter.js.map +1 -0
- package/dist/LatvianConverter.js +3 -0
- package/dist/LatvianConverter.js.map +1 -0
- package/dist/LithuanianConverter.js +3 -0
- package/dist/LithuanianConverter.js.map +1 -0
- package/dist/MalayConverter.js +3 -0
- package/dist/MalayConverter.js.map +1 -0
- package/dist/MarathiConverter.js +3 -0
- package/dist/MarathiConverter.js.map +1 -0
- package/dist/NorwegianBokmalConverter.js +3 -0
- package/dist/NorwegianBokmalConverter.js.map +1 -0
- package/dist/PersianConverter.js +3 -0
- package/dist/PersianConverter.js.map +1 -0
- package/dist/PolishConverter.js +3 -0
- package/dist/PolishConverter.js.map +1 -0
- package/dist/PortugueseConverter.js +3 -0
- package/dist/PortugueseConverter.js.map +1 -0
- package/dist/PunjabiConverter.js +3 -0
- package/dist/PunjabiConverter.js.map +1 -0
- package/dist/RomanianConverter.js +3 -0
- package/dist/RomanianConverter.js.map +1 -0
- package/dist/RussianConverter.js +3 -0
- package/dist/RussianConverter.js.map +1 -0
- package/dist/SerbianCyrillicConverter.js +3 -0
- package/dist/SerbianCyrillicConverter.js.map +1 -0
- package/dist/SerbianLatinConverter.js +3 -0
- package/dist/SerbianLatinConverter.js.map +1 -0
- package/dist/SimplifiedChineseConverter.js +3 -0
- package/dist/SimplifiedChineseConverter.js.map +1 -0
- package/dist/SpanishConverter.js +3 -0
- package/dist/SpanishConverter.js.map +1 -0
- package/dist/SwahiliConverter.js +3 -0
- package/dist/SwahiliConverter.js.map +1 -0
- package/dist/SwedishConverter.js +3 -0
- package/dist/SwedishConverter.js.map +1 -0
- package/dist/TamilConverter.js +3 -0
- package/dist/TamilConverter.js.map +1 -0
- package/dist/TeluguConverter.js +3 -0
- package/dist/TeluguConverter.js.map +1 -0
- package/dist/ThaiConverter.js +3 -0
- package/dist/ThaiConverter.js.map +1 -0
- package/dist/TraditionalChineseConverter.js +3 -0
- package/dist/TraditionalChineseConverter.js.map +1 -0
- package/dist/TurkishConverter.js +3 -0
- package/dist/TurkishConverter.js.map +1 -0
- package/dist/UkrainianConverter.js +3 -0
- package/dist/UkrainianConverter.js.map +1 -0
- package/dist/UrduConverter.js +3 -0
- package/dist/UrduConverter.js.map +1 -0
- package/dist/VietnameseConverter.js +3 -0
- package/dist/VietnameseConverter.js.map +1 -0
- package/dist/n2words.js +3 -2
- package/dist/n2words.js.map +1 -1
- package/lib/classes/abstract-language.d.ts +158 -34
- package/lib/classes/abstract-language.js +223 -115
- package/lib/classes/greedy-scale-language.d.ts +109 -0
- package/lib/classes/greedy-scale-language.js +201 -0
- package/lib/classes/slavic-language.d.ts +148 -0
- package/lib/classes/slavic-language.js +281 -0
- package/lib/classes/south-asian-language.d.ts +70 -0
- package/lib/classes/south-asian-language.js +154 -0
- package/lib/classes/turkic-language.d.ts +26 -0
- package/lib/classes/turkic-language.js +59 -0
- package/lib/languages/ar.d.ts +30 -0
- package/lib/languages/ar.js +159 -0
- package/lib/languages/az.d.ts +12 -0
- package/lib/languages/az.js +42 -0
- package/lib/languages/bn.d.ts +11 -0
- package/lib/languages/bn.js +131 -0
- package/lib/languages/cs.d.ts +88 -0
- package/lib/languages/cs.js +143 -0
- package/lib/languages/da.d.ts +15 -0
- package/lib/languages/da.js +120 -0
- package/lib/languages/de.d.ts +14 -0
- package/lib/languages/de.js +101 -0
- package/lib/languages/el.d.ts +14 -0
- package/lib/languages/el.js +90 -0
- package/lib/languages/en.d.ts +16 -0
- package/lib/languages/en.js +86 -0
- package/lib/languages/es.d.ts +15 -0
- package/lib/languages/es.js +121 -0
- package/lib/languages/fa.d.ts +47 -0
- package/lib/languages/fa.js +144 -0
- package/lib/languages/fil.d.ts +16 -0
- package/lib/languages/fil.js +121 -0
- package/lib/languages/fr-BE.d.ts +11 -0
- package/lib/languages/fr-BE.js +25 -0
- package/lib/languages/fr.d.ts +15 -0
- package/lib/languages/fr.js +106 -0
- package/lib/languages/gu.d.ts +11 -0
- package/lib/languages/gu.js +132 -0
- package/lib/languages/hbo.d.ts +113 -0
- package/lib/languages/hbo.js +251 -0
- package/lib/languages/he.d.ts +80 -0
- package/lib/languages/he.js +206 -0
- package/lib/languages/hi.d.ts +11 -0
- package/lib/languages/hi.js +131 -0
- package/lib/languages/hr.d.ts +80 -0
- package/lib/languages/hr.js +113 -0
- package/lib/languages/hu.d.ts +22 -0
- package/lib/languages/hu.js +137 -0
- package/lib/languages/id.d.ts +37 -0
- package/lib/languages/id.js +159 -0
- package/lib/languages/it.d.ts +37 -0
- package/lib/languages/it.js +132 -0
- package/lib/languages/ja.d.ts +17 -0
- package/lib/languages/ja.js +137 -0
- package/lib/languages/kn.d.ts +11 -0
- package/lib/languages/kn.js +42 -0
- package/lib/languages/ko.d.ts +14 -0
- package/lib/languages/ko.js +55 -0
- package/lib/{i18n/pl.d.ts → languages/lt.d.ts} +18 -15
- package/lib/languages/lt.js +136 -0
- package/lib/{i18n/lt.d.ts → languages/lv.d.ts} +16 -14
- package/lib/languages/lv.js +130 -0
- package/lib/languages/mr.d.ts +11 -0
- package/lib/languages/mr.js +132 -0
- package/lib/languages/ms.d.ts +31 -0
- package/lib/languages/ms.js +150 -0
- package/lib/languages/nb.d.ts +12 -0
- package/lib/languages/nb.js +100 -0
- package/lib/languages/nl.d.ts +16 -0
- package/lib/languages/nl.js +155 -0
- package/lib/languages/pa.d.ts +11 -0
- package/lib/languages/pa.js +131 -0
- package/lib/{i18n/uk.d.ts → languages/pl.d.ts} +16 -14
- package/lib/languages/pl.js +110 -0
- package/lib/languages/pt.d.ts +29 -0
- package/lib/languages/pt.js +112 -0
- package/lib/languages/ro.d.ts +158 -0
- package/lib/languages/ro.js +273 -0
- package/lib/languages/ru.d.ts +85 -0
- package/lib/languages/ru.js +96 -0
- package/lib/languages/sr-Cyrl.d.ts +80 -0
- package/lib/languages/sr-Cyrl.js +113 -0
- package/lib/{i18n/cz.d.ts → languages/sr-Latn.d.ts} +26 -14
- package/lib/languages/sr-Latn.js +113 -0
- package/lib/languages/sv.d.ts +14 -0
- package/lib/languages/sv.js +90 -0
- package/lib/languages/sw.d.ts +39 -0
- package/lib/languages/sw.js +126 -0
- package/lib/languages/ta.d.ts +20 -0
- package/lib/languages/ta.js +226 -0
- package/lib/languages/te.d.ts +22 -0
- package/lib/languages/te.js +219 -0
- package/lib/languages/th.d.ts +17 -0
- package/lib/languages/th.js +117 -0
- package/lib/languages/tr.d.ts +12 -0
- package/lib/languages/tr.js +56 -0
- package/lib/languages/uk.d.ts +85 -0
- package/lib/{i18n → languages}/uk.js +33 -32
- package/lib/languages/ur.d.ts +11 -0
- package/lib/languages/ur.js +131 -0
- package/lib/{i18n → languages}/vi.d.ts +15 -13
- package/lib/languages/vi.js +147 -0
- package/lib/languages/zh-Hans.d.ts +21 -0
- package/lib/languages/zh-Hans.js +111 -0
- package/lib/languages/zh-Hant.d.ts +21 -0
- package/lib/languages/zh-Hant.js +111 -0
- package/lib/n2words.d.ts +207 -7
- package/lib/n2words.js +535 -81
- package/package.json +126 -79
- package/dist/ar.js +0 -2
- package/dist/ar.js.map +0 -1
- package/dist/az.js +0 -2
- package/dist/az.js.map +0 -1
- package/dist/cz.js +0 -2
- package/dist/cz.js.map +0 -1
- package/dist/de.js +0 -2
- package/dist/de.js.map +0 -1
- package/dist/dk.js +0 -2
- package/dist/dk.js.map +0 -1
- package/dist/en.js +0 -2
- package/dist/en.js.map +0 -1
- package/dist/es.js +0 -2
- package/dist/es.js.map +0 -1
- package/dist/fa.js +0 -2
- package/dist/fa.js.map +0 -1
- package/dist/fr-BE.js +0 -2
- package/dist/fr-BE.js.map +0 -1
- package/dist/fr.js +0 -2
- package/dist/fr.js.map +0 -1
- package/dist/he.js +0 -2
- package/dist/he.js.map +0 -1
- package/dist/hr.js +0 -2
- package/dist/hr.js.map +0 -1
- package/dist/hu.js +0 -2
- package/dist/hu.js.map +0 -1
- package/dist/id.js +0 -2
- package/dist/id.js.map +0 -1
- package/dist/it.js +0 -2
- package/dist/it.js.map +0 -1
- package/dist/ko.js +0 -2
- package/dist/ko.js.map +0 -1
- package/dist/lt.js +0 -2
- package/dist/lt.js.map +0 -1
- package/dist/lv.js +0 -2
- package/dist/lv.js.map +0 -1
- package/dist/n2words.d.ts +0 -2
- package/dist/nl.js +0 -2
- package/dist/nl.js.map +0 -1
- package/dist/no.js +0 -2
- package/dist/no.js.map +0 -1
- package/dist/pl.js +0 -2
- package/dist/pl.js.map +0 -1
- package/dist/pt.js +0 -2
- package/dist/pt.js.map +0 -1
- package/dist/ro.js +0 -2
- package/dist/ro.js.map +0 -1
- package/dist/ru.js +0 -2
- package/dist/ru.js.map +0 -1
- package/dist/sr.js +0 -2
- package/dist/sr.js.map +0 -1
- package/dist/tr.js +0 -2
- package/dist/tr.js.map +0 -1
- package/dist/uk.js +0 -2
- package/dist/uk.js.map +0 -1
- package/dist/vi.js +0 -2
- package/dist/vi.js.map +0 -1
- package/dist/zh.js +0 -2
- package/dist/zh.js.map +0 -1
- package/lib/classes/base-language.d.ts +0 -58
- package/lib/classes/base-language.js +0 -172
- package/lib/i18n/ar.d.ts +0 -41
- package/lib/i18n/ar.js +0 -209
- package/lib/i18n/az.d.ts +0 -15
- package/lib/i18n/az.js +0 -66
- package/lib/i18n/cz.js +0 -135
- package/lib/i18n/de.d.ts +0 -17
- package/lib/i18n/de.js +0 -103
- package/lib/i18n/dk.d.ts +0 -14
- package/lib/i18n/dk.js +0 -110
- package/lib/i18n/en.d.ts +0 -22
- package/lib/i18n/en.js +0 -86
- package/lib/i18n/es.d.ts +0 -16
- package/lib/i18n/es.js +0 -110
- package/lib/i18n/fa.d.ts +0 -54
- package/lib/i18n/fa.js +0 -106
- package/lib/i18n/fr-BE.d.ts +0 -11
- package/lib/i18n/fr-BE.js +0 -20
- package/lib/i18n/fr.d.ts +0 -15
- package/lib/i18n/fr.js +0 -99
- package/lib/i18n/he.d.ts +0 -61
- package/lib/i18n/he.js +0 -132
- package/lib/i18n/hr.d.ts +0 -68
- package/lib/i18n/hr.js +0 -129
- package/lib/i18n/hu.d.ts +0 -17
- package/lib/i18n/hu.js +0 -135
- package/lib/i18n/id.d.ts +0 -43
- package/lib/i18n/id.js +0 -156
- package/lib/i18n/it.d.ts +0 -29
- package/lib/i18n/it.js +0 -137
- package/lib/i18n/ko.d.ts +0 -15
- package/lib/i18n/ko.js +0 -56
- package/lib/i18n/lt.js +0 -138
- package/lib/i18n/lv.d.ts +0 -57
- package/lib/i18n/lv.js +0 -120
- package/lib/i18n/nl.d.ts +0 -20
- package/lib/i18n/nl.js +0 -125
- package/lib/i18n/no.d.ts +0 -15
- package/lib/i18n/no.js +0 -77
- package/lib/i18n/pl.js +0 -126
- package/lib/i18n/pt.d.ts +0 -26
- package/lib/i18n/pt.js +0 -118
- package/lib/i18n/ro.d.ts +0 -109
- package/lib/i18n/ro.js +0 -360
- package/lib/i18n/ru.d.ts +0 -30
- package/lib/i18n/ru.js +0 -198
- package/lib/i18n/sr.d.ts +0 -56
- package/lib/i18n/sr.js +0 -127
- package/lib/i18n/tr.d.ts +0 -15
- package/lib/i18n/tr.js +0 -64
- package/lib/i18n/vi.js +0 -151
- package/lib/i18n/zh.d.ts +0 -18
- package/lib/i18n/zh.js +0 -78
package/lib/i18n/ar.js
DELETED
|
@@ -1,209 +0,0 @@
|
|
|
1
|
-
import AbstractLanguage from '../classes/abstract-language.js';
|
|
2
|
-
|
|
3
|
-
export class Arabic extends AbstractLanguage {
|
|
4
|
-
number;
|
|
5
|
-
|
|
6
|
-
feminine;
|
|
7
|
-
|
|
8
|
-
ones = {
|
|
9
|
-
masculine: [
|
|
10
|
-
'واحد',
|
|
11
|
-
'اثنان',
|
|
12
|
-
'ثلاثة',
|
|
13
|
-
'أربعة',
|
|
14
|
-
'خمسة',
|
|
15
|
-
'ستة',
|
|
16
|
-
'سبعة',
|
|
17
|
-
'ثمانية',
|
|
18
|
-
'تسعة',
|
|
19
|
-
'عشرة',
|
|
20
|
-
'أحد عشر',
|
|
21
|
-
'اثنا عشر',
|
|
22
|
-
'ثلاثة عشر',
|
|
23
|
-
'أربعة عشر',
|
|
24
|
-
'خمسة عشر',
|
|
25
|
-
'ستة عشر',
|
|
26
|
-
'سبعة عشر',
|
|
27
|
-
'ثمانية عشر',
|
|
28
|
-
'تسعة عشر',
|
|
29
|
-
],
|
|
30
|
-
feminine: [
|
|
31
|
-
'واحدة',
|
|
32
|
-
'اثنتان',
|
|
33
|
-
'ثلاث',
|
|
34
|
-
'أربع',
|
|
35
|
-
'خمس',
|
|
36
|
-
'ست',
|
|
37
|
-
'سبع',
|
|
38
|
-
'ثمان',
|
|
39
|
-
'تسع',
|
|
40
|
-
'عشر',
|
|
41
|
-
'إحدى عشرة',
|
|
42
|
-
'اثنتا عشرة',
|
|
43
|
-
'ثلاث عشرة',
|
|
44
|
-
'أربع عشرة',
|
|
45
|
-
'خمس عشرة',
|
|
46
|
-
'ست عشرة',
|
|
47
|
-
'سبع عشرة',
|
|
48
|
-
'ثماني عشرة',
|
|
49
|
-
'تسع عشرة',
|
|
50
|
-
]
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
arabicTens = ['عشرون', 'ثلاثون', 'أربعون', 'خمسون', 'ستون', 'سبعون', 'ثمانون', 'تسعون'];
|
|
54
|
-
|
|
55
|
-
arabicHundreds = ['', 'مائة', 'مئتان', 'ثلاثمائة', 'أربعمائة', 'خمسمائة', 'ستمائة', 'سبعمائة', 'ثمانمائة', 'تسعمائة'];
|
|
56
|
-
|
|
57
|
-
arabicAppendedTwos = ['مئتا', 'ألفا', 'مليونا', 'مليارا', 'تريليونا', 'كوادريليونا', 'كوينتليونا', 'سكستيليونا'];
|
|
58
|
-
|
|
59
|
-
arabicTwos = ['مئتان', 'ألفان', 'مليونان', 'ملياران', 'تريليونان', 'كوادريليونان', 'كوينتليونان', 'سكستيليونان'];
|
|
60
|
-
|
|
61
|
-
arabicGroup = ['مائة', 'ألف', 'مليون', 'مليار', 'تريليون', 'كوادريليون', 'كوينتليون', 'سكستيليون'];
|
|
62
|
-
|
|
63
|
-
arabicAppendedGroup = ['', 'ألفاً', 'مليوناً', 'ملياراً', 'تريليوناً', 'كوادريليوناً', 'كوينتليوناً', 'سكستيليوناً'];
|
|
64
|
-
|
|
65
|
-
arabicPluralGroups = ['', 'آلاف', 'ملايين', 'مليارات', 'تريليونات', 'كوادريليونات', 'كوينتليونات', 'سكستيليونات'];
|
|
66
|
-
|
|
67
|
-
constructor(options) {
|
|
68
|
-
options = Object.assign({
|
|
69
|
-
negativeWord: 'ناقص',
|
|
70
|
-
separatorWord: 'فاصلة',
|
|
71
|
-
zero: 'صفر',
|
|
72
|
-
feminine: false,
|
|
73
|
-
}, options);
|
|
74
|
-
|
|
75
|
-
super(options);
|
|
76
|
-
|
|
77
|
-
this.feminine = options.feminine;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
digitFeminineStatus(digit) {
|
|
81
|
-
return this.ones[this.feminine ? 'feminine' : 'masculine'][digit - 1];
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
/**
|
|
85
|
-
* Processes the Arabic group number and returns the corresponding Arabic representation.
|
|
86
|
-
* @param {number} groupNumber - The number to process. (Range: 1-999)
|
|
87
|
-
* @param {number} groupLevel - Group level to process. (See example)
|
|
88
|
-
* @returns {string} The Arabic representation of the group number.
|
|
89
|
-
* @example 12345678 is processed in blocks of 3: '678' (group 0), '345' (group 1), '12' (group 2).
|
|
90
|
-
*/
|
|
91
|
-
processArabicGroup(groupNumber, groupLevel) {
|
|
92
|
-
let tens = groupNumber % 100;
|
|
93
|
-
const hundreds = groupNumber / 100;
|
|
94
|
-
let returnValue = '';
|
|
95
|
-
|
|
96
|
-
if (Math.trunc(hundreds) > 0) {
|
|
97
|
-
if (tens == 0 && Math.trunc(hundreds) == 2) {
|
|
98
|
-
returnValue = this.arabicTwos[0];
|
|
99
|
-
} else {
|
|
100
|
-
returnValue = this.arabicHundreds[Math.trunc(hundreds)];
|
|
101
|
-
if (returnValue != '' && tens != 0) {
|
|
102
|
-
returnValue += ' و';
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
if (tens > 0 && tens < 20) { // 1 -> 19
|
|
108
|
-
if (tens === 2 && Math.trunc(hundreds) === 0 && groupLevel > 0) {
|
|
109
|
-
const pow = Math.trunc(Math.log10(Number(this.number)));
|
|
110
|
-
if (pow % 3 === 0 && this.number === 2 * Math.pow(10, pow)) {
|
|
111
|
-
returnValue = groupNumber === 2 ? this.arabicTwos[Math.trunc(groupLevel)] : this.arabicAppendedTwos[Math.trunc(groupLevel)];
|
|
112
|
-
} else {
|
|
113
|
-
returnValue = this.arabicTwos[Math.trunc(groupLevel)];
|
|
114
|
-
}
|
|
115
|
-
} else if (tens === 1 && groupLevel > 0) {
|
|
116
|
-
returnValue += this.arabicGroup[Math.trunc(groupLevel)];
|
|
117
|
-
} else {
|
|
118
|
-
returnValue += this.digitFeminineStatus(Math.trunc(tens), groupLevel);
|
|
119
|
-
}
|
|
120
|
-
} else if (tens >= 20) { // 20 -> 99
|
|
121
|
-
const ones = tens % 10;
|
|
122
|
-
const tensIndex = (tens / 10) - 2;
|
|
123
|
-
if (ones > 0) {
|
|
124
|
-
returnValue += this.digitFeminineStatus(ones, groupLevel);
|
|
125
|
-
}
|
|
126
|
-
if (returnValue != '' && ones != 0) {
|
|
127
|
-
returnValue += ' و';
|
|
128
|
-
}
|
|
129
|
-
returnValue += this.arabicTens[Math.trunc(tensIndex)];
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
return returnValue;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
/**
|
|
136
|
-
* Converts a number to its cardinal representation in Arabic.
|
|
137
|
-
* It process by blocks of 3 digits.
|
|
138
|
-
* @param {number} number - The number to convert.
|
|
139
|
-
* @returns {string} The cardinal representation of the number in Arabic.
|
|
140
|
-
*/
|
|
141
|
-
toCardinal(number) {
|
|
142
|
-
if (number == 0) {
|
|
143
|
-
return this.zero;
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
this.number = number;
|
|
147
|
-
let temporaryNumber = number;
|
|
148
|
-
let temporaryNumberDec;
|
|
149
|
-
let group = 0;
|
|
150
|
-
let returnValue = '';
|
|
151
|
-
|
|
152
|
-
// Loop until number has been reduced to zero or less
|
|
153
|
-
while (temporaryNumber > 0) {
|
|
154
|
-
temporaryNumberDec = temporaryNumber;
|
|
155
|
-
// Get the remaining value after dividing by 1000
|
|
156
|
-
const numberToProcess = Number(temporaryNumberDec % 1000n); // Maximum: 999
|
|
157
|
-
temporaryNumber = temporaryNumberDec / 1000n;
|
|
158
|
-
|
|
159
|
-
// Process "group"
|
|
160
|
-
const groupDescription = this.processArabicGroup(numberToProcess, group);
|
|
161
|
-
|
|
162
|
-
// Did the group return anything?
|
|
163
|
-
if (groupDescription != '') {
|
|
164
|
-
// Is this after the first "group" ? Because nothing is appeded after group 0.
|
|
165
|
-
if (group > 0) { // hundreds, thousands, etc...
|
|
166
|
-
// Is the return value still empty ?
|
|
167
|
-
if (returnValue != '') {
|
|
168
|
-
returnValue = ' و' + returnValue;
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
if (numberToProcess > 2) {
|
|
172
|
-
if (numberToProcess % 100 == 1) {
|
|
173
|
-
returnValue = this.arabicGroup[group] + ' ' + returnValue;
|
|
174
|
-
} else {
|
|
175
|
-
if (numberToProcess >= 3 && numberToProcess <= 10) {
|
|
176
|
-
returnValue = this.arabicPluralGroups[group] + ' ' + returnValue;
|
|
177
|
-
} else {
|
|
178
|
-
returnValue = returnValue == '' ? this.arabicGroup[group] + ' ' + returnValue : this.arabicAppendedGroup[group] + ' ' + returnValue;
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
// Add "group" return to output variable
|
|
185
|
-
// NOTE: Language is right-to-left
|
|
186
|
-
returnValue = groupDescription + ' ' + returnValue;
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
// Increase group level/number
|
|
190
|
-
group++;
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
// Replace multiple spaces with one space
|
|
194
|
-
returnValue = returnValue.replaceAll(/ +/g, ' ');
|
|
195
|
-
|
|
196
|
-
return returnValue.trim();
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
/**
|
|
201
|
-
* Converts a value to cardinal (written) form.
|
|
202
|
-
* @param {number|string|bigint} value Number to be convert.
|
|
203
|
-
* @param {object} [options] Options for class.
|
|
204
|
-
* @returns {string} Value in cardinal (written) format.
|
|
205
|
-
* @throws {Error} Value cannot be invalid.
|
|
206
|
-
*/
|
|
207
|
-
export default function floatToCardinal (value, options = {}) {
|
|
208
|
-
return new Arabic(options).floatToCardinal(value);
|
|
209
|
-
}
|
package/lib/i18n/az.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Converts a value to cardinal (written) form.
|
|
3
|
-
* @param {number|string|bigint} value Number to be convert.
|
|
4
|
-
* @param {object} [options] Options for class.
|
|
5
|
-
* @returns {string} Value in cardinal (written) format.
|
|
6
|
-
* @throws {Error} Value cannot be invalid.
|
|
7
|
-
*/
|
|
8
|
-
export default function floatToCardinal(value: number | string | bigint, options?: object): string;
|
|
9
|
-
export class N2WordsAZ extends BaseLanguage {
|
|
10
|
-
constructor(options: any);
|
|
11
|
-
merge(lPair: any, rPair: any): {
|
|
12
|
-
[x: string]: bigint;
|
|
13
|
-
};
|
|
14
|
-
}
|
|
15
|
-
import BaseLanguage from '../classes/base-language.js';
|
package/lib/i18n/az.js
DELETED
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import BaseLanguage from '../classes/base-language.js';
|
|
2
|
-
|
|
3
|
-
export class N2WordsAZ extends BaseLanguage {
|
|
4
|
-
constructor(options) {
|
|
5
|
-
options = Object.assign({
|
|
6
|
-
negativeWord: 'mənfi',
|
|
7
|
-
separatorWord: 'nöqtə',
|
|
8
|
-
zero: 'sıfır'
|
|
9
|
-
}, options);
|
|
10
|
-
|
|
11
|
-
super(options, [
|
|
12
|
-
[1_000_000_000_000_000_000n, 'kentilyon'],
|
|
13
|
-
[1_000_000_000_000_000n, 'katrilyon'],
|
|
14
|
-
[1_000_000_000_000n, 'trilyon'],
|
|
15
|
-
[1_000_000_000n, 'milyar'],
|
|
16
|
-
[1_000_000n, 'milyon'],
|
|
17
|
-
[1000n, 'min'],
|
|
18
|
-
[100n, 'yüz'],
|
|
19
|
-
[90n, 'doxsan'],
|
|
20
|
-
[80n, 'səksən'],
|
|
21
|
-
[70n, 'yetmiş'],
|
|
22
|
-
[60n, 'altmış'],
|
|
23
|
-
[50n, 'əlli'],
|
|
24
|
-
[40n, 'qırx'],
|
|
25
|
-
[30n, 'otuz'],
|
|
26
|
-
[20n, 'iyirmi'],
|
|
27
|
-
[10n, 'on'],
|
|
28
|
-
[9n, 'doqquz'],
|
|
29
|
-
[8n, 'səkkiz'],
|
|
30
|
-
[7n, 'yeddi'],
|
|
31
|
-
[6n, 'altı'],
|
|
32
|
-
[5n, 'beş'],
|
|
33
|
-
[4n, 'dörd'],
|
|
34
|
-
[3n, 'üç'],
|
|
35
|
-
[2n, 'iki'],
|
|
36
|
-
[1n, 'bir'],
|
|
37
|
-
[0n, 'sıfır']
|
|
38
|
-
]);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
merge(lPair, rPair) {
|
|
42
|
-
const lText = Object.keys(lPair)[0];
|
|
43
|
-
const rText = Object.keys(rPair)[0];
|
|
44
|
-
const lNumber = BigInt(Object.values(lPair)[0]);
|
|
45
|
-
const rNumber = BigInt(Object.values(rPair)[0]);
|
|
46
|
-
|
|
47
|
-
if (lNumber == 1 && (rNumber <= 100 || rNumber == 1000)) {
|
|
48
|
-
return { [rText]: rNumber };
|
|
49
|
-
} else if (rNumber > lNumber) {
|
|
50
|
-
return { [`${lText}${this.spaceSeparator}${rText}`]: lNumber * rNumber };
|
|
51
|
-
} else {
|
|
52
|
-
return { [`${lText}${this.spaceSeparator}${rText}`]: lNumber + rNumber };
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Converts a value to cardinal (written) form.
|
|
59
|
-
* @param {number|string|bigint} value Number to be convert.
|
|
60
|
-
* @param {object} [options] Options for class.
|
|
61
|
-
* @returns {string} Value in cardinal (written) format.
|
|
62
|
-
* @throws {Error} Value cannot be invalid.
|
|
63
|
-
*/
|
|
64
|
-
export default function floatToCardinal (value, options = {}) {
|
|
65
|
-
return new N2WordsAZ(options).floatToCardinal(value);
|
|
66
|
-
}
|
package/lib/i18n/cz.js
DELETED
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
import { N2WordsRU } from './ru.js';
|
|
2
|
-
|
|
3
|
-
export class N2WordsCZ extends N2WordsRU {
|
|
4
|
-
ones = {
|
|
5
|
-
1: 'jedna',
|
|
6
|
-
2: 'dva',
|
|
7
|
-
3: 'tři',
|
|
8
|
-
4: 'čtyři',
|
|
9
|
-
5: 'pět',
|
|
10
|
-
6: 'šest',
|
|
11
|
-
7: 'sedm',
|
|
12
|
-
8: 'osm',
|
|
13
|
-
9: 'devět'
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
tens = {
|
|
17
|
-
0: 'deset',
|
|
18
|
-
1: 'jedenáct',
|
|
19
|
-
2: 'dvanáct',
|
|
20
|
-
3: 'třináct',
|
|
21
|
-
4: 'čtrnáct',
|
|
22
|
-
5: 'patnáct',
|
|
23
|
-
6: 'šestnáct',
|
|
24
|
-
7: 'sedmnáct',
|
|
25
|
-
8: 'osmnáct',
|
|
26
|
-
9: 'devatenáct'
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
twenties = {
|
|
30
|
-
2: 'dvacet',
|
|
31
|
-
3: 'třicet',
|
|
32
|
-
4: 'čtyřicet',
|
|
33
|
-
5: 'padesát',
|
|
34
|
-
6: 'šedesát',
|
|
35
|
-
7: 'sedmdesát',
|
|
36
|
-
8: 'osmdesát',
|
|
37
|
-
9: 'devadesát'
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
hundreds = {
|
|
41
|
-
1: 'sto',
|
|
42
|
-
2: 'dvě stě',
|
|
43
|
-
3: 'tři sta',
|
|
44
|
-
4: 'čtyři sta',
|
|
45
|
-
5: 'pět set',
|
|
46
|
-
6: 'šest set',
|
|
47
|
-
7: 'sedm set',
|
|
48
|
-
8: 'osm set',
|
|
49
|
-
9: 'devět set'
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
thousands = {
|
|
53
|
-
1: ['tisíc', 'tisíce', 'tisíc'], // 10^ 3
|
|
54
|
-
2: ['milion', 'miliony', 'milionů'], // 10^ 6
|
|
55
|
-
3: ['miliarda', 'miliardy', 'miliard'], // 10^ 9
|
|
56
|
-
4: ['bilion', 'biliony', 'bilionů'], // 10^ 12
|
|
57
|
-
5: ['biliarda', 'biliardy', 'biliard'], // 10^ 15
|
|
58
|
-
6: ['trilion', 'triliony', 'trilionů'], // 10^ 18
|
|
59
|
-
7: ['triliarda', 'triliardy', 'triliard'], // 10^ 21
|
|
60
|
-
8: ['kvadrilion', 'kvadriliony', 'kvadrilionů'], // 10^ 24
|
|
61
|
-
9: ['kvadriliarda', 'kvadriliardy', 'kvadriliard'], // 10^ 27
|
|
62
|
-
10: ['quintillion', 'quintilliony', 'quintillionů'], // 10^ 30
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
constructor(options) {
|
|
66
|
-
options = Object.assign({
|
|
67
|
-
negativeWord: 'mínus',
|
|
68
|
-
zero: 'nula'
|
|
69
|
-
}, options);
|
|
70
|
-
|
|
71
|
-
super(options);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
get separatorWord() {
|
|
75
|
-
if (this.wholeNumber == 0n || this.wholeNumber == 1n) {
|
|
76
|
-
return 'celá';
|
|
77
|
-
} else if (this.wholeNumber >= 2n && this.wholeNumber <= 4n) {
|
|
78
|
-
return 'celé';
|
|
79
|
-
} else {
|
|
80
|
-
return 'celých';
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
pluralize(n, forms) {
|
|
85
|
-
let form = 2;
|
|
86
|
-
if (n == 1) {
|
|
87
|
-
form = 0;
|
|
88
|
-
} else if (((n % 10n < 5n) && (n % 10n > 1n)) && (n % 100n < 10n || n % 100n > 20n)) {
|
|
89
|
-
form = 1;
|
|
90
|
-
}
|
|
91
|
-
return forms[form];
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
toCardinal(number) {
|
|
95
|
-
if (number == 0) {
|
|
96
|
-
return this.zero;
|
|
97
|
-
}
|
|
98
|
-
const words = [];
|
|
99
|
-
const chunks = this.splitByX(number.toString(), 3);
|
|
100
|
-
let index = chunks.length;
|
|
101
|
-
for (const x of chunks) {
|
|
102
|
-
index = index - 1;
|
|
103
|
-
if (x == 0) {
|
|
104
|
-
continue;
|
|
105
|
-
}
|
|
106
|
-
const [n1, n2, n3] = this.getDigits(x);
|
|
107
|
-
if (n3 > 0) {
|
|
108
|
-
words.push(this.hundreds[n3]);
|
|
109
|
-
}
|
|
110
|
-
if (n2 > 1) {
|
|
111
|
-
words.push(this.twenties[n2]);
|
|
112
|
-
}
|
|
113
|
-
if (n2 == 1) {
|
|
114
|
-
words.push(this.tens[n1]);
|
|
115
|
-
} else if (n1 > 0 && !(index > 0 && x == 1)) {
|
|
116
|
-
words.push(this.ones[n1]);
|
|
117
|
-
}
|
|
118
|
-
if (index > 0) {
|
|
119
|
-
words.push(this.pluralize(x, this.thousands[index]));
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
return words.join(' ');
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
/**
|
|
127
|
-
* Converts a value to cardinal (written) form.
|
|
128
|
-
* @param {number|string|bigint} value Number to be convert.
|
|
129
|
-
* @param {object} [options] Options for class.
|
|
130
|
-
* @returns {string} Value in cardinal (written) format.
|
|
131
|
-
* @throws {Error} Value cannot be invalid.
|
|
132
|
-
*/
|
|
133
|
-
export default function floatToCardinal (value, options = {}) {
|
|
134
|
-
return new N2WordsCZ(options).floatToCardinal(value);
|
|
135
|
-
}
|
package/lib/i18n/de.d.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Converts a value to cardinal (written) form.
|
|
3
|
-
* @param {number|string|bigint} value Number to be convert.
|
|
4
|
-
* @param {object} [options] Options for class.
|
|
5
|
-
* @returns {string} Value in cardinal (written) format.
|
|
6
|
-
* @throws {Error} Value cannot be invalid.
|
|
7
|
-
*/
|
|
8
|
-
export default function floatToCardinal(value: number | string | bigint, options?: object): string;
|
|
9
|
-
export class N2WordsDE extends BaseLanguage {
|
|
10
|
-
constructor(options: any);
|
|
11
|
-
merge(current: any, next: any): {
|
|
12
|
-
[x: string]: bigint;
|
|
13
|
-
} | {
|
|
14
|
-
[x: string]: number;
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
import BaseLanguage from '../classes/base-language.js';
|
package/lib/i18n/de.js
DELETED
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import BaseLanguage from '../classes/base-language.js';
|
|
2
|
-
|
|
3
|
-
export class N2WordsDE extends BaseLanguage {
|
|
4
|
-
constructor(options) {
|
|
5
|
-
options = Object.assign({
|
|
6
|
-
negativeWord: 'minus',
|
|
7
|
-
separatorWord: 'komma',
|
|
8
|
-
zero: 'null'
|
|
9
|
-
}, options);
|
|
10
|
-
|
|
11
|
-
super(options, [
|
|
12
|
-
[1_000_000_000_000_000_000_000_000_000n, 'Quadrilliarde'],
|
|
13
|
-
[1_000_000_000_000_000_000_000_000n, 'Quadrillion'],
|
|
14
|
-
[1_000_000_000_000_000_000_000n, 'Trilliarde'],
|
|
15
|
-
[1_000_000_000_000_000_000n, 'Trillion'],
|
|
16
|
-
[1_000_000_000_000_000n, 'Billiarde'],
|
|
17
|
-
[1_000_000_000_000n, 'Billion'],
|
|
18
|
-
[1_000_000_000n, 'Milliarde'],
|
|
19
|
-
[1_000_000n, 'Million'],
|
|
20
|
-
[1000n, 'tausend'],
|
|
21
|
-
[100n, 'hundert'],
|
|
22
|
-
[90n, 'neunzig'],
|
|
23
|
-
[80n, 'achtzig'],
|
|
24
|
-
[70n, 'siebzig'],
|
|
25
|
-
[60n, 'sechzig'],
|
|
26
|
-
[50n, 'fünfzig'],
|
|
27
|
-
[40n, 'vierzig'],
|
|
28
|
-
[30n, 'dreißig'],
|
|
29
|
-
[20n, 'zwanzig'],
|
|
30
|
-
[19n, 'neunzehn'],
|
|
31
|
-
[18n, 'achtzehn'],
|
|
32
|
-
[17n, 'siebzehn'],
|
|
33
|
-
[16n, 'sechzehn'],
|
|
34
|
-
[15n, 'fünfzehn'],
|
|
35
|
-
[14n, 'vierzehn'],
|
|
36
|
-
[13n, 'dreizehn'],
|
|
37
|
-
[12n, 'zwölf'],
|
|
38
|
-
[11n, 'elf'],
|
|
39
|
-
[10n, 'zehn'],
|
|
40
|
-
[9n, 'neun'],
|
|
41
|
-
[8n, 'acht'],
|
|
42
|
-
[7n, 'sieben'],
|
|
43
|
-
[6n, 'sechs'],
|
|
44
|
-
[5n, 'fünf'],
|
|
45
|
-
[4n, 'vier'],
|
|
46
|
-
[3n, 'drei'],
|
|
47
|
-
[2n, 'zwei'],
|
|
48
|
-
[1n, 'eins'],
|
|
49
|
-
[0n, 'null']
|
|
50
|
-
]);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
merge(current, next) {
|
|
54
|
-
let cText = Object.keys(current)[0];
|
|
55
|
-
let nText = Object.keys(next)[0];
|
|
56
|
-
const cNumber = BigInt(Object.values(current)[0]);
|
|
57
|
-
const nNumber = BigInt(Object.values(next)[0]);
|
|
58
|
-
if (cNumber == 1) {
|
|
59
|
-
if (nNumber == 100 || nNumber == 1000) {
|
|
60
|
-
return { [`ein${nText}`]: nNumber };
|
|
61
|
-
} else if (nNumber < 1_000_000) {
|
|
62
|
-
return { [nText]: nNumber };
|
|
63
|
-
}
|
|
64
|
-
cText = 'eine';
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
let value = 0;
|
|
68
|
-
if (nNumber > cNumber) {
|
|
69
|
-
if (nNumber >= 1_000_000) {
|
|
70
|
-
if (cNumber > 1) {
|
|
71
|
-
nText += nText.at(-1) == 'e' ? 'n' : 'en';
|
|
72
|
-
}
|
|
73
|
-
cText += ' ';
|
|
74
|
-
}
|
|
75
|
-
value = cNumber * nNumber;
|
|
76
|
-
} else {
|
|
77
|
-
if (nNumber < 10 && cNumber > 10 && cNumber < 100) {
|
|
78
|
-
if (nNumber == 1) {
|
|
79
|
-
nText = 'ein';
|
|
80
|
-
}
|
|
81
|
-
const temporary = nText;
|
|
82
|
-
nText = cText;
|
|
83
|
-
cText = `${temporary}und`;
|
|
84
|
-
} else if (cNumber >= 1_000_000) {
|
|
85
|
-
cText += ' ';
|
|
86
|
-
}
|
|
87
|
-
value = cNumber + nNumber;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
return { [`${cText}${nText}`]: value };
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
/**
|
|
95
|
-
* Converts a value to cardinal (written) form.
|
|
96
|
-
* @param {number|string|bigint} value Number to be convert.
|
|
97
|
-
* @param {object} [options] Options for class.
|
|
98
|
-
* @returns {string} Value in cardinal (written) format.
|
|
99
|
-
* @throws {Error} Value cannot be invalid.
|
|
100
|
-
*/
|
|
101
|
-
export default function floatToCardinal (value, options = {}) {
|
|
102
|
-
return new N2WordsDE(options).floatToCardinal(value);
|
|
103
|
-
}
|
package/lib/i18n/dk.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Converts a value to cardinal (written) form.
|
|
3
|
-
* @param {number|string|bigint} value Number to be convert.
|
|
4
|
-
* @param {object} [options] Options for class.
|
|
5
|
-
* @returns {string} Value in cardinal (written) format.
|
|
6
|
-
* @throws {Error} Value cannot be invalid.
|
|
7
|
-
*/
|
|
8
|
-
export default function floatToCardinal(value: number | string | bigint, options?: object): string;
|
|
9
|
-
export class N2WordsDK extends BaseLanguage {
|
|
10
|
-
constructor(options: any);
|
|
11
|
-
ordFlag: any;
|
|
12
|
-
merge(current: any, next: any): any;
|
|
13
|
-
}
|
|
14
|
-
import BaseLanguage from '../classes/base-language.js';
|
package/lib/i18n/dk.js
DELETED
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
import BaseLanguage from '../classes/base-language.js';
|
|
2
|
-
|
|
3
|
-
export class N2WordsDK extends BaseLanguage {
|
|
4
|
-
ordFlag;
|
|
5
|
-
|
|
6
|
-
constructor(options) {
|
|
7
|
-
options = Object.assign({
|
|
8
|
-
negativeWord: 'minus',
|
|
9
|
-
separatorWord: 'komma',
|
|
10
|
-
zero: 'nul',
|
|
11
|
-
ordFlag: false
|
|
12
|
-
}, options);
|
|
13
|
-
|
|
14
|
-
super(options, [
|
|
15
|
-
[1_000_000_000_000_000_000_000_000_000n, 'quadrillarder'],
|
|
16
|
-
[1_000_000_000_000_000_000_000_000n, 'quadrillioner'],
|
|
17
|
-
[1_000_000_000_000_000_000_000n, 'trillarder'],
|
|
18
|
-
[1_000_000_000_000_000_000n, 'trillioner'],
|
|
19
|
-
[1_000_000_000_000_000n, 'billarder'],
|
|
20
|
-
[1_000_000_000_000n, 'billioner'],
|
|
21
|
-
[1_000_000_000n, 'millarder'],
|
|
22
|
-
[1_000_000n, 'millioner'],
|
|
23
|
-
[1000n, 'tusind'],
|
|
24
|
-
[100n, 'hundrede'],
|
|
25
|
-
[90n, 'halvfems'],
|
|
26
|
-
[80n, 'firs'],
|
|
27
|
-
[70n, 'halvfjerds'],
|
|
28
|
-
[60n, 'treds'],
|
|
29
|
-
[50n, 'halvtreds'],
|
|
30
|
-
[40n, 'fyrre'],
|
|
31
|
-
[30n, 'tredive'],
|
|
32
|
-
[20n, 'tyve'],
|
|
33
|
-
[19n, 'nitten'],
|
|
34
|
-
[18n, 'atten'],
|
|
35
|
-
[17n, 'sytten'],
|
|
36
|
-
[16n, 'seksten'],
|
|
37
|
-
[15n, 'femten'],
|
|
38
|
-
[14n, 'fjorten'],
|
|
39
|
-
[13n, 'tretten'],
|
|
40
|
-
[12n, 'tolv'],
|
|
41
|
-
[11n, 'elleve'],
|
|
42
|
-
[10n, 'ti'],
|
|
43
|
-
[9n, 'ni'],
|
|
44
|
-
[8n, 'otte'],
|
|
45
|
-
[7n, 'syv'],
|
|
46
|
-
[6n, 'seks'],
|
|
47
|
-
[5n, 'fem'],
|
|
48
|
-
[4n, 'fire'],
|
|
49
|
-
[3n, 'tre'],
|
|
50
|
-
[2n, 'to'],
|
|
51
|
-
[1n, 'et'],
|
|
52
|
-
[0n, 'nul']
|
|
53
|
-
]);
|
|
54
|
-
|
|
55
|
-
this.ordFlag = options.ordFlag;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
merge(current, next) {
|
|
59
|
-
let cText = Object.keys(current)[0];
|
|
60
|
-
let nText = Object.keys(next)[0];
|
|
61
|
-
const cNumber = BigInt(Object.values(current)[0]);
|
|
62
|
-
const nNumber = BigInt(Object.values(next)[0]);
|
|
63
|
-
let value;
|
|
64
|
-
if (nNumber == 100 || nNumber == 1000) {
|
|
65
|
-
next = { [`et${nText}`]: nNumber };
|
|
66
|
-
}
|
|
67
|
-
if (cNumber == 1) {
|
|
68
|
-
if (nNumber < 1_000_000 || this.ordFlag) {
|
|
69
|
-
return next;
|
|
70
|
-
}
|
|
71
|
-
cText = 'en';
|
|
72
|
-
}
|
|
73
|
-
if (nNumber > cNumber) {
|
|
74
|
-
if (nNumber >= 1_000_000) {
|
|
75
|
-
cText += ' ';
|
|
76
|
-
}
|
|
77
|
-
value = cNumber * nNumber;
|
|
78
|
-
} else {
|
|
79
|
-
if (cNumber >= 100 && cNumber < 1000) {
|
|
80
|
-
cText += ' og ';
|
|
81
|
-
} else if (cNumber >= 1000 && cNumber <= 100_000) {
|
|
82
|
-
cText += 'e og ';
|
|
83
|
-
}
|
|
84
|
-
if ((nNumber < 10) && (10 < cNumber) && (cNumber < 100)) {
|
|
85
|
-
if (nNumber == 1) {
|
|
86
|
-
nText = 'en';
|
|
87
|
-
}
|
|
88
|
-
const temporary = nText;
|
|
89
|
-
nText = cText;
|
|
90
|
-
cText = temporary + 'og';
|
|
91
|
-
} else if (cNumber >= 1_000_000) {
|
|
92
|
-
cText += ' ';
|
|
93
|
-
}
|
|
94
|
-
value = cNumber + nNumber;
|
|
95
|
-
}
|
|
96
|
-
const word = cText + nText;
|
|
97
|
-
return { [`${word}`]: value };
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
/**
|
|
102
|
-
* Converts a value to cardinal (written) form.
|
|
103
|
-
* @param {number|string|bigint} value Number to be convert.
|
|
104
|
-
* @param {object} [options] Options for class.
|
|
105
|
-
* @returns {string} Value in cardinal (written) format.
|
|
106
|
-
* @throws {Error} Value cannot be invalid.
|
|
107
|
-
*/
|
|
108
|
-
export default function floatToCardinal (value, options = {}) {
|
|
109
|
-
return new N2WordsDK(options).floatToCardinal(value);
|
|
110
|
-
}
|
package/lib/i18n/en.d.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Converts a value to cardinal (written) form.
|
|
3
|
-
* @param {number|string|bigint} value Number to be convert.
|
|
4
|
-
* @param {object} [options] Options for class.
|
|
5
|
-
* @returns {string} Value in cardinal (written) format.
|
|
6
|
-
* @throws {Error} Value cannot be invalid.
|
|
7
|
-
*/
|
|
8
|
-
export default function floatToCardinal(value: number | string | bigint, options?: object): string;
|
|
9
|
-
/**
|
|
10
|
-
* This class is for converting numbers to english words.
|
|
11
|
-
*/
|
|
12
|
-
export class English extends BaseLanguage {
|
|
13
|
-
constructor(options: any);
|
|
14
|
-
/**
|
|
15
|
-
* Merge word set pairs
|
|
16
|
-
* @param {object} lPair {'one':1}
|
|
17
|
-
* @param {object} rPair {'hundred':100}
|
|
18
|
-
* @returns {object} {'one hundred': 100}
|
|
19
|
-
*/
|
|
20
|
-
merge(lPair: object, rPair: object): object;
|
|
21
|
-
}
|
|
22
|
-
import BaseLanguage from '../classes/base-language.js';
|