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.
Files changed (322) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +317 -59
  3. package/dist/ArabicConverter.js +3 -0
  4. package/dist/ArabicConverter.js.map +1 -0
  5. package/dist/AzerbaijaniConverter.js +3 -0
  6. package/dist/AzerbaijaniConverter.js.map +1 -0
  7. package/dist/BanglaConverter.js +3 -0
  8. package/dist/BanglaConverter.js.map +1 -0
  9. package/dist/BiblicalHebrewConverter.js +3 -0
  10. package/dist/BiblicalHebrewConverter.js.map +1 -0
  11. package/dist/CroatianConverter.js +3 -0
  12. package/dist/CroatianConverter.js.map +1 -0
  13. package/dist/CzechConverter.js +3 -0
  14. package/dist/CzechConverter.js.map +1 -0
  15. package/dist/DanishConverter.js +3 -0
  16. package/dist/DanishConverter.js.map +1 -0
  17. package/dist/DutchConverter.js +3 -0
  18. package/dist/DutchConverter.js.map +1 -0
  19. package/dist/EnglishConverter.js +3 -0
  20. package/dist/EnglishConverter.js.map +1 -0
  21. package/dist/FilipinoConverter.js +3 -0
  22. package/dist/FilipinoConverter.js.map +1 -0
  23. package/dist/FrenchBelgiumConverter.js +3 -0
  24. package/dist/FrenchBelgiumConverter.js.map +1 -0
  25. package/dist/FrenchConverter.js +3 -0
  26. package/dist/FrenchConverter.js.map +1 -0
  27. package/dist/GermanConverter.js +3 -0
  28. package/dist/GermanConverter.js.map +1 -0
  29. package/dist/GreekConverter.js +3 -0
  30. package/dist/GreekConverter.js.map +1 -0
  31. package/dist/GujaratiConverter.js +3 -0
  32. package/dist/GujaratiConverter.js.map +1 -0
  33. package/dist/HebrewConverter.js +3 -0
  34. package/dist/HebrewConverter.js.map +1 -0
  35. package/dist/HindiConverter.js +3 -0
  36. package/dist/HindiConverter.js.map +1 -0
  37. package/dist/HungarianConverter.js +3 -0
  38. package/dist/HungarianConverter.js.map +1 -0
  39. package/dist/IndonesianConverter.js +3 -0
  40. package/dist/IndonesianConverter.js.map +1 -0
  41. package/dist/ItalianConverter.js +3 -0
  42. package/dist/ItalianConverter.js.map +1 -0
  43. package/dist/JapaneseConverter.js +3 -0
  44. package/dist/JapaneseConverter.js.map +1 -0
  45. package/dist/KannadaConverter.js +3 -0
  46. package/dist/KannadaConverter.js.map +1 -0
  47. package/dist/KoreanConverter.js +3 -0
  48. package/dist/KoreanConverter.js.map +1 -0
  49. package/dist/LatvianConverter.js +3 -0
  50. package/dist/LatvianConverter.js.map +1 -0
  51. package/dist/LithuanianConverter.js +3 -0
  52. package/dist/LithuanianConverter.js.map +1 -0
  53. package/dist/MalayConverter.js +3 -0
  54. package/dist/MalayConverter.js.map +1 -0
  55. package/dist/MarathiConverter.js +3 -0
  56. package/dist/MarathiConverter.js.map +1 -0
  57. package/dist/NorwegianBokmalConverter.js +3 -0
  58. package/dist/NorwegianBokmalConverter.js.map +1 -0
  59. package/dist/PersianConverter.js +3 -0
  60. package/dist/PersianConverter.js.map +1 -0
  61. package/dist/PolishConverter.js +3 -0
  62. package/dist/PolishConverter.js.map +1 -0
  63. package/dist/PortugueseConverter.js +3 -0
  64. package/dist/PortugueseConverter.js.map +1 -0
  65. package/dist/PunjabiConverter.js +3 -0
  66. package/dist/PunjabiConverter.js.map +1 -0
  67. package/dist/RomanianConverter.js +3 -0
  68. package/dist/RomanianConverter.js.map +1 -0
  69. package/dist/RussianConverter.js +3 -0
  70. package/dist/RussianConverter.js.map +1 -0
  71. package/dist/SerbianCyrillicConverter.js +3 -0
  72. package/dist/SerbianCyrillicConverter.js.map +1 -0
  73. package/dist/SerbianLatinConverter.js +3 -0
  74. package/dist/SerbianLatinConverter.js.map +1 -0
  75. package/dist/SimplifiedChineseConverter.js +3 -0
  76. package/dist/SimplifiedChineseConverter.js.map +1 -0
  77. package/dist/SpanishConverter.js +3 -0
  78. package/dist/SpanishConverter.js.map +1 -0
  79. package/dist/SwahiliConverter.js +3 -0
  80. package/dist/SwahiliConverter.js.map +1 -0
  81. package/dist/SwedishConverter.js +3 -0
  82. package/dist/SwedishConverter.js.map +1 -0
  83. package/dist/TamilConverter.js +3 -0
  84. package/dist/TamilConverter.js.map +1 -0
  85. package/dist/TeluguConverter.js +3 -0
  86. package/dist/TeluguConverter.js.map +1 -0
  87. package/dist/ThaiConverter.js +3 -0
  88. package/dist/ThaiConverter.js.map +1 -0
  89. package/dist/TraditionalChineseConverter.js +3 -0
  90. package/dist/TraditionalChineseConverter.js.map +1 -0
  91. package/dist/TurkishConverter.js +3 -0
  92. package/dist/TurkishConverter.js.map +1 -0
  93. package/dist/UkrainianConverter.js +3 -0
  94. package/dist/UkrainianConverter.js.map +1 -0
  95. package/dist/UrduConverter.js +3 -0
  96. package/dist/UrduConverter.js.map +1 -0
  97. package/dist/VietnameseConverter.js +3 -0
  98. package/dist/VietnameseConverter.js.map +1 -0
  99. package/dist/n2words.js +3 -2
  100. package/dist/n2words.js.map +1 -1
  101. package/lib/classes/abstract-language.d.ts +158 -34
  102. package/lib/classes/abstract-language.js +223 -115
  103. package/lib/classes/greedy-scale-language.d.ts +109 -0
  104. package/lib/classes/greedy-scale-language.js +201 -0
  105. package/lib/classes/slavic-language.d.ts +148 -0
  106. package/lib/classes/slavic-language.js +281 -0
  107. package/lib/classes/south-asian-language.d.ts +70 -0
  108. package/lib/classes/south-asian-language.js +154 -0
  109. package/lib/classes/turkic-language.d.ts +26 -0
  110. package/lib/classes/turkic-language.js +59 -0
  111. package/lib/languages/ar.d.ts +30 -0
  112. package/lib/languages/ar.js +159 -0
  113. package/lib/languages/az.d.ts +12 -0
  114. package/lib/languages/az.js +42 -0
  115. package/lib/languages/bn.d.ts +11 -0
  116. package/lib/languages/bn.js +131 -0
  117. package/lib/languages/cs.d.ts +88 -0
  118. package/lib/languages/cs.js +143 -0
  119. package/lib/languages/da.d.ts +15 -0
  120. package/lib/languages/da.js +120 -0
  121. package/lib/languages/de.d.ts +14 -0
  122. package/lib/languages/de.js +101 -0
  123. package/lib/languages/el.d.ts +14 -0
  124. package/lib/languages/el.js +90 -0
  125. package/lib/languages/en.d.ts +16 -0
  126. package/lib/languages/en.js +86 -0
  127. package/lib/languages/es.d.ts +15 -0
  128. package/lib/languages/es.js +121 -0
  129. package/lib/languages/fa.d.ts +47 -0
  130. package/lib/languages/fa.js +144 -0
  131. package/lib/languages/fil.d.ts +16 -0
  132. package/lib/languages/fil.js +121 -0
  133. package/lib/languages/fr-BE.d.ts +11 -0
  134. package/lib/languages/fr-BE.js +25 -0
  135. package/lib/languages/fr.d.ts +15 -0
  136. package/lib/languages/fr.js +106 -0
  137. package/lib/languages/gu.d.ts +11 -0
  138. package/lib/languages/gu.js +132 -0
  139. package/lib/languages/hbo.d.ts +113 -0
  140. package/lib/languages/hbo.js +251 -0
  141. package/lib/languages/he.d.ts +80 -0
  142. package/lib/languages/he.js +206 -0
  143. package/lib/languages/hi.d.ts +11 -0
  144. package/lib/languages/hi.js +131 -0
  145. package/lib/languages/hr.d.ts +80 -0
  146. package/lib/languages/hr.js +113 -0
  147. package/lib/languages/hu.d.ts +22 -0
  148. package/lib/languages/hu.js +137 -0
  149. package/lib/languages/id.d.ts +37 -0
  150. package/lib/languages/id.js +159 -0
  151. package/lib/languages/it.d.ts +37 -0
  152. package/lib/languages/it.js +132 -0
  153. package/lib/languages/ja.d.ts +17 -0
  154. package/lib/languages/ja.js +137 -0
  155. package/lib/languages/kn.d.ts +11 -0
  156. package/lib/languages/kn.js +42 -0
  157. package/lib/languages/ko.d.ts +14 -0
  158. package/lib/languages/ko.js +55 -0
  159. package/lib/{i18n/pl.d.ts → languages/lt.d.ts} +18 -15
  160. package/lib/languages/lt.js +136 -0
  161. package/lib/{i18n/lt.d.ts → languages/lv.d.ts} +16 -14
  162. package/lib/languages/lv.js +130 -0
  163. package/lib/languages/mr.d.ts +11 -0
  164. package/lib/languages/mr.js +132 -0
  165. package/lib/languages/ms.d.ts +31 -0
  166. package/lib/languages/ms.js +150 -0
  167. package/lib/languages/nb.d.ts +12 -0
  168. package/lib/languages/nb.js +100 -0
  169. package/lib/languages/nl.d.ts +16 -0
  170. package/lib/languages/nl.js +155 -0
  171. package/lib/languages/pa.d.ts +11 -0
  172. package/lib/languages/pa.js +131 -0
  173. package/lib/{i18n/uk.d.ts → languages/pl.d.ts} +16 -14
  174. package/lib/languages/pl.js +110 -0
  175. package/lib/languages/pt.d.ts +29 -0
  176. package/lib/languages/pt.js +112 -0
  177. package/lib/languages/ro.d.ts +158 -0
  178. package/lib/languages/ro.js +273 -0
  179. package/lib/languages/ru.d.ts +85 -0
  180. package/lib/languages/ru.js +96 -0
  181. package/lib/languages/sr-Cyrl.d.ts +80 -0
  182. package/lib/languages/sr-Cyrl.js +113 -0
  183. package/lib/{i18n/cz.d.ts → languages/sr-Latn.d.ts} +26 -14
  184. package/lib/languages/sr-Latn.js +113 -0
  185. package/lib/languages/sv.d.ts +14 -0
  186. package/lib/languages/sv.js +90 -0
  187. package/lib/languages/sw.d.ts +39 -0
  188. package/lib/languages/sw.js +126 -0
  189. package/lib/languages/ta.d.ts +20 -0
  190. package/lib/languages/ta.js +226 -0
  191. package/lib/languages/te.d.ts +22 -0
  192. package/lib/languages/te.js +219 -0
  193. package/lib/languages/th.d.ts +17 -0
  194. package/lib/languages/th.js +117 -0
  195. package/lib/languages/tr.d.ts +12 -0
  196. package/lib/languages/tr.js +56 -0
  197. package/lib/languages/uk.d.ts +85 -0
  198. package/lib/{i18n → languages}/uk.js +33 -32
  199. package/lib/languages/ur.d.ts +11 -0
  200. package/lib/languages/ur.js +131 -0
  201. package/lib/{i18n → languages}/vi.d.ts +15 -13
  202. package/lib/languages/vi.js +147 -0
  203. package/lib/languages/zh-Hans.d.ts +21 -0
  204. package/lib/languages/zh-Hans.js +111 -0
  205. package/lib/languages/zh-Hant.d.ts +21 -0
  206. package/lib/languages/zh-Hant.js +111 -0
  207. package/lib/n2words.d.ts +207 -7
  208. package/lib/n2words.js +535 -81
  209. package/package.json +126 -79
  210. package/dist/ar.js +0 -2
  211. package/dist/ar.js.map +0 -1
  212. package/dist/az.js +0 -2
  213. package/dist/az.js.map +0 -1
  214. package/dist/cz.js +0 -2
  215. package/dist/cz.js.map +0 -1
  216. package/dist/de.js +0 -2
  217. package/dist/de.js.map +0 -1
  218. package/dist/dk.js +0 -2
  219. package/dist/dk.js.map +0 -1
  220. package/dist/en.js +0 -2
  221. package/dist/en.js.map +0 -1
  222. package/dist/es.js +0 -2
  223. package/dist/es.js.map +0 -1
  224. package/dist/fa.js +0 -2
  225. package/dist/fa.js.map +0 -1
  226. package/dist/fr-BE.js +0 -2
  227. package/dist/fr-BE.js.map +0 -1
  228. package/dist/fr.js +0 -2
  229. package/dist/fr.js.map +0 -1
  230. package/dist/he.js +0 -2
  231. package/dist/he.js.map +0 -1
  232. package/dist/hr.js +0 -2
  233. package/dist/hr.js.map +0 -1
  234. package/dist/hu.js +0 -2
  235. package/dist/hu.js.map +0 -1
  236. package/dist/id.js +0 -2
  237. package/dist/id.js.map +0 -1
  238. package/dist/it.js +0 -2
  239. package/dist/it.js.map +0 -1
  240. package/dist/ko.js +0 -2
  241. package/dist/ko.js.map +0 -1
  242. package/dist/lt.js +0 -2
  243. package/dist/lt.js.map +0 -1
  244. package/dist/lv.js +0 -2
  245. package/dist/lv.js.map +0 -1
  246. package/dist/n2words.d.ts +0 -2
  247. package/dist/nl.js +0 -2
  248. package/dist/nl.js.map +0 -1
  249. package/dist/no.js +0 -2
  250. package/dist/no.js.map +0 -1
  251. package/dist/pl.js +0 -2
  252. package/dist/pl.js.map +0 -1
  253. package/dist/pt.js +0 -2
  254. package/dist/pt.js.map +0 -1
  255. package/dist/ro.js +0 -2
  256. package/dist/ro.js.map +0 -1
  257. package/dist/ru.js +0 -2
  258. package/dist/ru.js.map +0 -1
  259. package/dist/sr.js +0 -2
  260. package/dist/sr.js.map +0 -1
  261. package/dist/tr.js +0 -2
  262. package/dist/tr.js.map +0 -1
  263. package/dist/uk.js +0 -2
  264. package/dist/uk.js.map +0 -1
  265. package/dist/vi.js +0 -2
  266. package/dist/vi.js.map +0 -1
  267. package/dist/zh.js +0 -2
  268. package/dist/zh.js.map +0 -1
  269. package/lib/classes/base-language.d.ts +0 -58
  270. package/lib/classes/base-language.js +0 -172
  271. package/lib/i18n/ar.d.ts +0 -41
  272. package/lib/i18n/ar.js +0 -209
  273. package/lib/i18n/az.d.ts +0 -15
  274. package/lib/i18n/az.js +0 -66
  275. package/lib/i18n/cz.js +0 -135
  276. package/lib/i18n/de.d.ts +0 -17
  277. package/lib/i18n/de.js +0 -103
  278. package/lib/i18n/dk.d.ts +0 -14
  279. package/lib/i18n/dk.js +0 -110
  280. package/lib/i18n/en.d.ts +0 -22
  281. package/lib/i18n/en.js +0 -86
  282. package/lib/i18n/es.d.ts +0 -16
  283. package/lib/i18n/es.js +0 -110
  284. package/lib/i18n/fa.d.ts +0 -54
  285. package/lib/i18n/fa.js +0 -106
  286. package/lib/i18n/fr-BE.d.ts +0 -11
  287. package/lib/i18n/fr-BE.js +0 -20
  288. package/lib/i18n/fr.d.ts +0 -15
  289. package/lib/i18n/fr.js +0 -99
  290. package/lib/i18n/he.d.ts +0 -61
  291. package/lib/i18n/he.js +0 -132
  292. package/lib/i18n/hr.d.ts +0 -68
  293. package/lib/i18n/hr.js +0 -129
  294. package/lib/i18n/hu.d.ts +0 -17
  295. package/lib/i18n/hu.js +0 -135
  296. package/lib/i18n/id.d.ts +0 -43
  297. package/lib/i18n/id.js +0 -156
  298. package/lib/i18n/it.d.ts +0 -29
  299. package/lib/i18n/it.js +0 -137
  300. package/lib/i18n/ko.d.ts +0 -15
  301. package/lib/i18n/ko.js +0 -56
  302. package/lib/i18n/lt.js +0 -138
  303. package/lib/i18n/lv.d.ts +0 -57
  304. package/lib/i18n/lv.js +0 -120
  305. package/lib/i18n/nl.d.ts +0 -20
  306. package/lib/i18n/nl.js +0 -125
  307. package/lib/i18n/no.d.ts +0 -15
  308. package/lib/i18n/no.js +0 -77
  309. package/lib/i18n/pl.js +0 -126
  310. package/lib/i18n/pt.d.ts +0 -26
  311. package/lib/i18n/pt.js +0 -118
  312. package/lib/i18n/ro.d.ts +0 -109
  313. package/lib/i18n/ro.js +0 -360
  314. package/lib/i18n/ru.d.ts +0 -30
  315. package/lib/i18n/ru.js +0 -198
  316. package/lib/i18n/sr.d.ts +0 -56
  317. package/lib/i18n/sr.js +0 -127
  318. package/lib/i18n/tr.d.ts +0 -15
  319. package/lib/i18n/tr.js +0 -64
  320. package/lib/i18n/vi.js +0 -151
  321. package/lib/i18n/zh.d.ts +0 -18
  322. 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';