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/he.js DELETED
@@ -1,132 +0,0 @@
1
- import { N2WordsRU } from './ru.js';
2
-
3
- export class N2WordsHE extends N2WordsRU {
4
- and;
5
-
6
- ones = {
7
- 1: 'אחת',
8
- 2: 'שתים',
9
- 3: 'שלש',
10
- 4: 'ארבע',
11
- 5: 'חמש',
12
- 6: 'שש',
13
- 7: 'שבע',
14
- 8: 'שמונה',
15
- 9: 'תשע'
16
- };
17
-
18
- tens = {
19
- 0: 'עשר',
20
- 1: 'אחת עשרה',
21
- 2: 'שתים עשרה',
22
- 3: 'שלש עשרה',
23
- 4: 'ארבע עשרה',
24
- 5: 'חמש עשרה',
25
- 6: 'שש עשרה',
26
- 7: 'שבע עשרה',
27
- 8: 'שמונה עשרה',
28
- 9: 'תשע עשרה'
29
- };
30
-
31
- twenties = {
32
- 2: 'עשרים',
33
- 3: 'שלשים',
34
- 4: 'ארבעים',
35
- 5: 'חמישים',
36
- 6: 'ששים',
37
- 7: 'שבעים',
38
- 8: 'שמונים',
39
- 9: 'תשעים'
40
- };
41
-
42
- hundreds = {
43
- 1: 'מאה',
44
- 2: 'מאתיים',
45
- 3: 'מאות'
46
- };
47
-
48
- thousands = {
49
- 1: 'אלף',
50
- 2: 'אלפיים',
51
- 3: 'שלשת אלפים',
52
- 4: 'ארבעת אלפים',
53
- 5: 'חמשת אלפים',
54
- 6: 'ששת אלפים',
55
- 7: 'שבעת אלפים',
56
- 8: 'שמונת אלפים',
57
- 9: 'תשעת אלפים'
58
- };
59
-
60
- constructor(options) {
61
- // TODO Confirm `negativeWord`
62
- // TODO Set `separatorWord`
63
- options = Object.assign({
64
- negativeWord: 'מינוס',
65
- //separatorWord: ,
66
- zero: 'אפס',
67
- and: 'ו'
68
- }, options);
69
-
70
- super(options);
71
-
72
- this.and = options.and;
73
- }
74
-
75
- toCardinal(number) {
76
- if (number == 0) {
77
- return this.zero;
78
- }
79
- const words = [];
80
- const chunks = this.splitByX(number.toString(), 3);
81
- let index = chunks.length;
82
- for (const x of chunks) {
83
- index = index - 1;
84
- if (x == 0) {
85
- continue;
86
- }
87
-
88
- const [n1, n2, n3] = this.getDigits(x);
89
-
90
- if (index > 0) {
91
- words.push(this.thousands[n1]);
92
- continue;
93
- }
94
-
95
-
96
- if (n3 > 0) {
97
- if (n3 <= 2) {
98
- words.push(this.hundreds[n3]);
99
- } else {
100
- words.push(this.ones[n3] + ' ' + this.hundreds[3]);
101
- }
102
- }
103
-
104
- if (n2 > 1) {
105
- words.push(this.twenties[n2]);
106
- }
107
-
108
- if (n2 == 1) {
109
- words.push(this.tens[n1]);
110
- } else if (n1 > 0) {
111
- words.push(this.ones[n1]);
112
- }
113
- }
114
-
115
- if (words.length > 1) {
116
- words[words.length - 1] = this.and + words.at(-1);
117
- }
118
-
119
- return words.join(' ');
120
- }
121
- }
122
-
123
- /**
124
- * Converts a value to cardinal (written) form.
125
- * @param {number|string|bigint} value Number to be convert.
126
- * @param {object} [options] Options for class.
127
- * @returns {string} Value in cardinal (written) format.
128
- * @throws {Error} Value cannot be invalid.
129
- */
130
- export default function floatToCardinal (value, options = {}) {
131
- return new N2WordsHE(options).floatToCardinal(value);
132
- }
package/lib/i18n/hr.d.ts DELETED
@@ -1,68 +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 N2WordsHR extends N2WordsRU {
10
- ones: {
11
- 1: string[];
12
- 2: string[];
13
- 3: string[];
14
- 4: string[];
15
- 5: string[];
16
- 6: string[];
17
- 7: string[];
18
- 8: string[];
19
- 9: string[];
20
- };
21
- tens: {
22
- 0: string;
23
- 1: string;
24
- 2: string;
25
- 3: string;
26
- 4: string;
27
- 5: string;
28
- 6: string;
29
- 7: string;
30
- 8: string;
31
- 9: string;
32
- };
33
- twenties: {
34
- 2: string;
35
- 3: string;
36
- 4: string;
37
- 5: string;
38
- 6: string;
39
- 7: string;
40
- 8: string;
41
- 9: string;
42
- };
43
- hundreds: {
44
- 1: string;
45
- 2: string;
46
- 3: string;
47
- 4: string;
48
- 5: string;
49
- 6: string;
50
- 7: string;
51
- 8: string;
52
- 9: string;
53
- };
54
- SCALE: {
55
- 0: (string | boolean)[];
56
- 1: (string | boolean)[];
57
- 2: (string | boolean)[];
58
- 3: (string | boolean)[];
59
- 4: (string | boolean)[];
60
- 5: (string | boolean)[];
61
- 6: (string | boolean)[];
62
- 7: (string | boolean)[];
63
- 8: (string | boolean)[];
64
- 9: (string | boolean)[];
65
- 10: (string | boolean)[];
66
- };
67
- }
68
- import { N2WordsRU } from './ru.js';
package/lib/i18n/hr.js DELETED
@@ -1,129 +0,0 @@
1
- import { N2WordsRU } from './ru.js';
2
-
3
- export class N2WordsHR extends N2WordsRU {
4
- ones = {
5
- 1: ['jedan', 'jedna'],
6
- 2: ['dva', 'dvije'],
7
- 3: ['tri', 'tri'],
8
- 4: ['četiri', 'četiri'],
9
- 5: ['pet', 'pet'],
10
- 6: ['šest', 'šest'],
11
- 7: ['sedam', 'sedam'],
12
- 8: ['osam', 'osam'],
13
- 9: ['devet', 'devet']
14
- };
15
-
16
- tens = {
17
- 0: 'deset',
18
- 1: 'jedanaest',
19
- 2: 'dvanaest',
20
- 3: 'trinaest',
21
- 4: 'četrnaest',
22
- 5: 'petnaest',
23
- 6: 'šesnaest',
24
- 7: 'sedamnaest',
25
- 8: 'osamnaest',
26
- 9: 'devetnaest'
27
- };
28
-
29
- twenties = {
30
- 2: 'dvadeset',
31
- 3: 'trideset',
32
- 4: 'četrdeset',
33
- 5: 'pedeset',
34
- 6: 'šezdeset',
35
- 7: 'sedamdeset',
36
- 8: 'osamdeset',
37
- 9: 'devedeset'
38
- };
39
-
40
- hundreds = {
41
- 1: 'sto',
42
- 2: 'dvjesto',
43
- 3: 'tristo',
44
- 4: 'četiristo',
45
- 5: 'petsto',
46
- 6: 'šesto',
47
- 7: 'sedamsto',
48
- 8: 'osamsto',
49
- 9: 'devetsto'
50
- };
51
-
52
- SCALE = {
53
- 0: ['', '', '', false],
54
- 1: ['tisuća', 'tisuće', 'tisuća', true], // 10 ^ 3
55
- 2: ['milijun', 'milijuna', 'milijuna', false], // 10 ^ 6
56
- 3: ['milijarda', 'milijarde', 'milijarda', false], // 10 ^ 9
57
- 4: ['bilijun', 'bilijuna', 'bilijuna', false], // 10 ^ 12
58
- 5: ['bilijarda', 'bilijarde', 'bilijarda', false], // 10 ^ 15
59
- 6: ['trilijun', 'trilijuna', 'trilijuna', false], // 10 ^ 18
60
- 7: ['trilijarda', 'trilijarde', 'trilijarda', false], // 10 ^ 21
61
- 8: ['kvadrilijun', 'kvadrilijuna', 'kvadrilijuna', false], // 10 ^ 24
62
- 9: ['kvadrilijarda', 'kvadrilijarde', 'kvadrilijarda', false], // 10 ^ 27
63
- 10: ['kvintilijun', 'kvintilijuna', 'kvintilijuna', false], // 10 ^ 30
64
- };
65
-
66
- constructor(options) {
67
- options = Object.assign({
68
- negativeWord: 'minus',
69
- separatorWord: 'zarez',
70
- zero: 'nula'
71
- }, options);
72
-
73
- super(options);
74
- }
75
-
76
- pluralize(n, forms) {
77
- let form = 2;
78
- if ((n % 100n < 10n) || (n % 100n > 20n)) {
79
- if (n % 10n == 1n) {
80
- form = 0;
81
- } else if ((n % 10n > 1n) && (n % 10n < 5n)) {
82
- form = 1;
83
- }
84
- }
85
- return forms[form];
86
- }
87
-
88
- toCardinal(number) {
89
- if (number == 0) {
90
- return this.zero;
91
- }
92
- const words = [];
93
- const chunks = this.splitByX(number.toString(), 3);
94
- let index = chunks.length;
95
- for (const x of chunks) {
96
- index = index - 1;
97
- // if (x == 0) { continue; }
98
- const [n1, n2, n3] = this.getDigits(x);
99
- if (n3 > 0) {
100
- words.push(this.hundreds[n3]);
101
- }
102
- if (n2 > 1) {
103
- words.push(this.twenties[n2]);
104
- }
105
- if (n2 == 1) {
106
- words.push(this.tens[n1]);
107
- } else if (n1 > 0) {
108
- const isFeminine = (this.feminine || this.SCALE[index][3]);
109
- const genderIndex = isFeminine ? 1 : 0;
110
- words.push(this.ones[n1][genderIndex]);
111
- }
112
- if ((index > 0) && (x != 0)) {
113
- words.push(this.pluralize(x, this.SCALE[index]));
114
- }
115
- }
116
- return words.join(' ');
117
- }
118
- }
119
-
120
- /**
121
- * Converts a value to cardinal (written) form.
122
- * @param {number|string|bigint} value Number to be convert.
123
- * @param {object} [options] Options for class.
124
- * @returns {string} Value in cardinal (written) format.
125
- * @throws {Error} Value cannot be invalid.
126
- */
127
- export default function floatToCardinal (value, options = {}) {
128
- return new N2WordsHR(options).floatToCardinal(value);
129
- }
package/lib/i18n/hu.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 N2WordsHU extends BaseLanguage {
10
- constructor(options: any);
11
- tensToCardinal(number: any): string;
12
- hundredsToCardinal(number: any): string;
13
- thousandsToCardinal(number: any): string;
14
- bigNumberToCardinal(number: any): string;
15
- toCardinal(number: any, zero?: string): string;
16
- }
17
- import BaseLanguage from '../classes/base-language.js';
package/lib/i18n/hu.js DELETED
@@ -1,135 +0,0 @@
1
- import BaseLanguage from '../classes/base-language.js';
2
-
3
- export class N2WordsHU extends BaseLanguage {
4
- constructor(options) {
5
- options = Object.assign({
6
- negativeWord: 'mínusz',
7
- separatorWord: 'egész',
8
- zero: 'nulla'
9
- }, options);
10
-
11
- super(options, [
12
- [1_000_000_000_000_000_000_000_000_000n, 'quadrilliárd'],
13
- [1_000_000_000_000_000_000_000_000n, 'quadrillió'],
14
- [1_000_000_000_000_000_000_000n, 'trilliárd'],
15
- [1_000_000_000_000_000_000n, 'trillió'],
16
- [1_000_000_000_000_000n, 'billiárd'],
17
- [1_000_000_000_000n, 'billió'],
18
- [1_000_000_000n, 'milliárd'],
19
- [1_000_000n, 'millió'],
20
- [1000n, 'ezer'],
21
- [100n, 'száz'],
22
- [90n, 'kilencven'],
23
- [80n, 'nyolcvan'],
24
- [70n, 'hetven'],
25
- [60n, 'hatvan'],
26
- [50n, 'ötven'],
27
- [40n, 'negyven'],
28
- [30n, 'harminc'],
29
- [29n, 'huszonkilenc'],
30
- [28n, 'huszonnyolc'],
31
- [27n, 'huszonhét'],
32
- [26n, 'huszonhat'],
33
- [25n, 'huszonöt'],
34
- [24n, 'huszonnégy'],
35
- [23n, 'huszonhárom'],
36
- [22n, 'huszonkettő'],
37
- [21n, 'huszonegy'],
38
- [20n, 'húsz'],
39
- [19n, 'tizenkilenc'],
40
- [18n, 'tizennyolc'],
41
- [17n, 'tizenhét'],
42
- [16n, 'tizenhat'],
43
- [15n, 'tizenöt'],
44
- [14n, 'tizennégy'],
45
- [13n, 'tizenhárom'],
46
- [12n, 'tizenkettő'],
47
- [11n, 'tizenegy'],
48
- [10n, 'tíz'],
49
- [9n, 'kilenc'],
50
- [8n, 'nyolc'],
51
- [7n, 'hét'],
52
- [6n, 'hat'],
53
- [5n, 'öt'],
54
- [4n, 'négy'],
55
- [3n, 'három'],
56
- [2n, 'kettő'],
57
- [1n, 'egy'],
58
- [0n, 'nulla']
59
- ]);
60
- }
61
-
62
- tensToCardinal(number) {
63
- if (this.getCardWord(number)) {
64
- return this.getCardWord(number);
65
- } else {
66
- const tens = Math.floor(number / 10);
67
- const units = number % 10;
68
- return this.getCardWord(tens * 10) + this.toCardinal(units);
69
- }
70
- }
71
-
72
- hundredsToCardinal(number) {
73
- const hundreds = Math.floor(number / 100);
74
- let prefix = 'száz';
75
- if (hundreds != 1) {
76
- prefix = this.toCardinal(hundreds, '') + prefix;
77
- }
78
- const postfix = this.toCardinal(number % 100, '');
79
- return prefix + postfix;
80
- }
81
-
82
- thousandsToCardinal(number) {
83
- const thousands = Math.floor(number / 1000);
84
- let prefix = 'ezer';
85
- if (thousands != 1) {
86
- prefix = this.toCardinal(thousands, '') + prefix;
87
- }
88
- let postfix = this.toCardinal(number % 1000, '');
89
- let middle = (number <= 2000 || postfix == '') ? '' : '-';
90
- return prefix + middle + postfix;
91
- }
92
-
93
- bigNumberToCardinal(number) {
94
- const numberLength = number.toString().length;
95
- let digits = (numberLength % 3 === 0) ? numberLength - 2 : numberLength;
96
- let exp = 10 ** (Math.floor(digits / 3) * 3);
97
- let prefix = this.toCardinal(number / BigInt(exp), '');
98
- let rest = this.toCardinal(number % BigInt(exp), '');
99
- let postfix = (rest === '') ? '' : ('-' + rest);
100
- return prefix + this.getCardWord(exp) + postfix;
101
- }
102
-
103
- toCardinal(number, zero = this.zero) {
104
- let words = '';
105
-
106
- if (number == 0n) {
107
- words = zero;
108
- } else if (zero == '' && number == 2) {
109
- words = 'két';
110
- } else if (number < 30n) {
111
- words = this.getCardWord(Number(number));
112
- } else if (number < 100n) {
113
- words = this.tensToCardinal(Number(number));
114
- } else if (number < 1000n) {
115
- words = this.hundredsToCardinal(Number(number));
116
- } else if (number < 1_000_000n) {
117
- words = this.thousandsToCardinal(Number(number));
118
- } else {
119
- words = this.bigNumberToCardinal(number);
120
- }
121
-
122
- return words;
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 N2WordsHU(options).floatToCardinal(value);
135
- }
package/lib/i18n/id.d.ts DELETED
@@ -1,43 +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 N2WordsID extends AbstractLanguage {
10
- constructor(options: any);
11
- base: {
12
- 0: any[];
13
- 1: string[];
14
- 2: string[];
15
- 3: string[];
16
- 4: string[];
17
- 5: string[];
18
- 6: string[];
19
- 7: string[];
20
- 8: string[];
21
- 9: string[];
22
- };
23
- thousands: {
24
- 3: string;
25
- 6: string;
26
- 9: string;
27
- 12: string;
28
- 15: string;
29
- 18: string;
30
- 21: string;
31
- 24: string;
32
- 27: string;
33
- 30: string;
34
- 33: string;
35
- };
36
- splitBy3(number: any): any[][];
37
- spell(blocks: any): any[];
38
- getHundreds(number: any): any[];
39
- getTens(number: any): any;
40
- join(wordBlocks: any): string;
41
- toCardinal(number: any): string;
42
- }
43
- import AbstractLanguage from '../classes/abstract-language.js';
package/lib/i18n/id.js DELETED
@@ -1,156 +0,0 @@
1
- import AbstractLanguage from '../classes/abstract-language.js';
2
-
3
- export class N2WordsID extends AbstractLanguage {
4
- base = {
5
- 0: [],
6
- 1: ['satu'],
7
- 2: ['dua'],
8
- 3: ['tiga'],
9
- 4: ['empat'],
10
- 5: ['lima'],
11
- 6: ['enam'],
12
- 7: ['tujuh'],
13
- 8: ['delapan'],
14
- 9: ['sembilan'],
15
- };
16
-
17
- thousands = {
18
- 3: 'ribu', // 10^3
19
- 6: 'juta', // 10^6
20
- 9: 'miliar', // 10^9
21
- 12: 'triliun',
22
- 15: 'kuadriliun',
23
- 18: 'kuantiliun',
24
- 21: 'sekstiliun',
25
- 24: 'septiliun',
26
- 27: 'oktiliun',
27
- 30: 'noniliun',
28
- 33: 'desiliun',
29
- };
30
-
31
- constructor(options) {
32
- options = Object.assign({
33
- negativeWord: 'min',
34
- separatorWord: 'koma',
35
- zero: 'nol'
36
- }, options);
37
-
38
- super(options);
39
- }
40
-
41
- splitBy3(number) {
42
- // Split to groups of 3 numbers: 1234567 -> [['1'], ['234'], ['567']]
43
- let blocks = [];
44
- let stringNumber = number.toString();
45
- let length = stringNumber.length;
46
- let firstBlock;
47
-
48
- if (length < 3) {
49
- blocks.push([stringNumber]);
50
- } else {
51
- let firstBlockLength = length % 3;
52
-
53
- if (firstBlockLength > 0) {
54
- firstBlock = [stringNumber.slice(0, firstBlockLength)];
55
- blocks.push(firstBlock);
56
- }
57
-
58
- for (let index = firstBlockLength; index < length; index += 3) {
59
- let nextBlock = [stringNumber.slice(index, index + 3)];
60
- blocks.push(nextBlock);
61
- }
62
- }
63
- return blocks;
64
- }
65
-
66
- spell(blocks) {
67
- // Example:
68
- // blocks: [['1'], ['234']]
69
- // return: [['1', ['satu']], ['234', ['dua', 'ratus', 'tiga', 'puluh', ['empat']]]]
70
- let wordBlocks = [];
71
- let spelling;
72
- let firstBlock = blocks[0];
73
- if (firstBlock[0].length == 1) {
74
- spelling = firstBlock[0] == '0' ? ['nol'] : this.base[Math.trunc(firstBlock[0])];
75
- } else if (firstBlock[0].length == 2) {
76
- spelling = this.getTens(firstBlock[0]);
77
- } else {
78
- spelling = [...this.getHundreds(firstBlock[0][0]), ...this.getTens(firstBlock[0].slice(1, 3))];
79
- }
80
- wordBlocks = [...wordBlocks, [firstBlock[0], spelling]];
81
- for (let index = 1; index < blocks.length; index++) {
82
- let block = blocks[index];
83
- spelling = [...this.getHundreds(block[0][0]), ...this.getTens(block[0].slice(1, 3))];
84
- block = [...block, spelling];
85
- wordBlocks = [...wordBlocks, block];
86
- }
87
- return wordBlocks;
88
- }
89
-
90
- getHundreds(number) { // 'ratus'
91
- if (number == '1') {
92
- return ['seratus'];
93
- } else if (number == '0') {
94
- return [];
95
- } else {
96
- return [...this.base[Math.trunc(number)], 'ratus'];
97
- }
98
- }
99
-
100
- getTens(number) { // 'puluh'
101
- if (number[0] == '1') {
102
- if (number[1] == '0') {
103
- return ['sepuluh'];
104
- } else if (number[1] == '1') {
105
- return ['sebelas'];
106
- } else {
107
- return [...this.base[Math.trunc(number[1])], 'belas'];
108
- }
109
- } else if (number[0] == '0') {
110
- return this.base[Math.trunc(number[1])];
111
- } else {
112
- return [...this.base[Math.trunc(number[0])], 'puluh', this.base[Math.trunc(number[1])]];
113
- }
114
- }
115
-
116
- join(wordBlocks) {
117
- let wordList = [];
118
- let length = wordBlocks.length - 1;
119
- let firstBlock = [wordBlocks[0]];
120
- let start = 0;
121
- if (length == 1 && firstBlock[0][0] == '1') {
122
- wordList.push('seribu');
123
- start = 1;
124
- }
125
- for (let index = start; index < length + 1; index++) {
126
- wordList = [...wordList, ...wordBlocks[index][1]];
127
- if (wordBlocks[index][1].length === 0) {
128
- continue;
129
- }
130
- if (index == length) {
131
- break;
132
- }
133
- wordList = [...wordList, this.thousands[(length - index) * 3]];
134
- }
135
- return wordList.join(' ');
136
- }
137
-
138
- toCardinal(number) {
139
- return this.join(
140
- this.spell(
141
- this.splitBy3(number)
142
- )
143
- ).trim();
144
- }
145
- }
146
-
147
- /**
148
- * Converts a value to cardinal (written) form.
149
- * @param {number|string|bigint} value Number to be convert.
150
- * @param {object} [options] Options for class.
151
- * @returns {string} Value in cardinal (written) format.
152
- * @throws {Error} Value cannot be invalid.
153
- */
154
- export default function floatToCardinal (value, options = {}) {
155
- return new N2WordsID(options).floatToCardinal(value);
156
- }