n2words 1.24.0 → 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 (349) hide show
  1. package/README.md +285 -156
  2. package/dist/ArabicConverter.js +3 -0
  3. package/dist/ArabicConverter.js.map +1 -0
  4. package/dist/AzerbaijaniConverter.js +3 -0
  5. package/dist/AzerbaijaniConverter.js.map +1 -0
  6. package/dist/BanglaConverter.js +3 -0
  7. package/dist/BanglaConverter.js.map +1 -0
  8. package/dist/BiblicalHebrewConverter.js +3 -0
  9. package/dist/BiblicalHebrewConverter.js.map +1 -0
  10. package/dist/CroatianConverter.js +3 -0
  11. package/dist/CroatianConverter.js.map +1 -0
  12. package/dist/CzechConverter.js +3 -0
  13. package/dist/CzechConverter.js.map +1 -0
  14. package/dist/DanishConverter.js +3 -0
  15. package/dist/DanishConverter.js.map +1 -0
  16. package/dist/DutchConverter.js +3 -0
  17. package/dist/DutchConverter.js.map +1 -0
  18. package/dist/EnglishConverter.js +3 -0
  19. package/dist/EnglishConverter.js.map +1 -0
  20. package/dist/FilipinoConverter.js +3 -0
  21. package/dist/FilipinoConverter.js.map +1 -0
  22. package/dist/FrenchBelgiumConverter.js +3 -0
  23. package/dist/FrenchBelgiumConverter.js.map +1 -0
  24. package/dist/FrenchConverter.js +3 -0
  25. package/dist/FrenchConverter.js.map +1 -0
  26. package/dist/GermanConverter.js +3 -0
  27. package/dist/GermanConverter.js.map +1 -0
  28. package/dist/GreekConverter.js +3 -0
  29. package/dist/GreekConverter.js.map +1 -0
  30. package/dist/GujaratiConverter.js +3 -0
  31. package/dist/GujaratiConverter.js.map +1 -0
  32. package/dist/HebrewConverter.js +3 -0
  33. package/dist/HebrewConverter.js.map +1 -0
  34. package/dist/HindiConverter.js +3 -0
  35. package/dist/HindiConverter.js.map +1 -0
  36. package/dist/HungarianConverter.js +3 -0
  37. package/dist/HungarianConverter.js.map +1 -0
  38. package/dist/IndonesianConverter.js +3 -0
  39. package/dist/IndonesianConverter.js.map +1 -0
  40. package/dist/ItalianConverter.js +3 -0
  41. package/dist/ItalianConverter.js.map +1 -0
  42. package/dist/JapaneseConverter.js +3 -0
  43. package/dist/JapaneseConverter.js.map +1 -0
  44. package/dist/KannadaConverter.js +3 -0
  45. package/dist/KannadaConverter.js.map +1 -0
  46. package/dist/KoreanConverter.js +3 -0
  47. package/dist/KoreanConverter.js.map +1 -0
  48. package/dist/LatvianConverter.js +3 -0
  49. package/dist/LatvianConverter.js.map +1 -0
  50. package/dist/LithuanianConverter.js +3 -0
  51. package/dist/LithuanianConverter.js.map +1 -0
  52. package/dist/MalayConverter.js +3 -0
  53. package/dist/MalayConverter.js.map +1 -0
  54. package/dist/MarathiConverter.js +3 -0
  55. package/dist/MarathiConverter.js.map +1 -0
  56. package/dist/NorwegianBokmalConverter.js +3 -0
  57. package/dist/NorwegianBokmalConverter.js.map +1 -0
  58. package/dist/PersianConverter.js +3 -0
  59. package/dist/PersianConverter.js.map +1 -0
  60. package/dist/PolishConverter.js +3 -0
  61. package/dist/PolishConverter.js.map +1 -0
  62. package/dist/PortugueseConverter.js +3 -0
  63. package/dist/PortugueseConverter.js.map +1 -0
  64. package/dist/PunjabiConverter.js +3 -0
  65. package/dist/PunjabiConverter.js.map +1 -0
  66. package/dist/RomanianConverter.js +3 -0
  67. package/dist/RomanianConverter.js.map +1 -0
  68. package/dist/RussianConverter.js +3 -0
  69. package/dist/RussianConverter.js.map +1 -0
  70. package/dist/SerbianCyrillicConverter.js +3 -0
  71. package/dist/SerbianCyrillicConverter.js.map +1 -0
  72. package/dist/SerbianLatinConverter.js +3 -0
  73. package/dist/SerbianLatinConverter.js.map +1 -0
  74. package/dist/SimplifiedChineseConverter.js +3 -0
  75. package/dist/SimplifiedChineseConverter.js.map +1 -0
  76. package/dist/SpanishConverter.js +3 -0
  77. package/dist/SpanishConverter.js.map +1 -0
  78. package/dist/SwahiliConverter.js +3 -0
  79. package/dist/SwahiliConverter.js.map +1 -0
  80. package/dist/SwedishConverter.js +3 -0
  81. package/dist/SwedishConverter.js.map +1 -0
  82. package/dist/TamilConverter.js +3 -0
  83. package/dist/TamilConverter.js.map +1 -0
  84. package/dist/TeluguConverter.js +3 -0
  85. package/dist/TeluguConverter.js.map +1 -0
  86. package/dist/ThaiConverter.js +3 -0
  87. package/dist/ThaiConverter.js.map +1 -0
  88. package/dist/TraditionalChineseConverter.js +3 -0
  89. package/dist/TraditionalChineseConverter.js.map +1 -0
  90. package/dist/TurkishConverter.js +3 -0
  91. package/dist/TurkishConverter.js.map +1 -0
  92. package/dist/UkrainianConverter.js +3 -0
  93. package/dist/UkrainianConverter.js.map +1 -0
  94. package/dist/UrduConverter.js +3 -0
  95. package/dist/UrduConverter.js.map +1 -0
  96. package/dist/VietnameseConverter.js +3 -0
  97. package/dist/VietnameseConverter.js.map +1 -0
  98. package/dist/n2words.js +3 -2
  99. package/dist/n2words.js.map +1 -1
  100. package/lib/classes/abstract-language.d.ts +178 -0
  101. package/lib/classes/abstract-language.js +192 -185
  102. package/lib/classes/greedy-scale-language.d.ts +109 -0
  103. package/lib/classes/greedy-scale-language.js +96 -90
  104. package/lib/classes/slavic-language.d.ts +148 -0
  105. package/lib/classes/slavic-language.js +136 -106
  106. package/lib/classes/south-asian-language.d.ts +70 -0
  107. package/lib/classes/south-asian-language.js +58 -65
  108. package/lib/classes/turkic-language.d.ts +26 -0
  109. package/lib/classes/turkic-language.js +22 -26
  110. package/lib/languages/ar.d.ts +30 -0
  111. package/lib/languages/ar.js +49 -133
  112. package/lib/languages/az.d.ts +12 -0
  113. package/lib/languages/az.js +7 -23
  114. package/lib/languages/bn.d.ts +11 -0
  115. package/lib/languages/bn.js +12 -7
  116. package/lib/languages/cs.d.ts +88 -0
  117. package/lib/languages/cs.js +44 -113
  118. package/lib/languages/da.d.ts +15 -0
  119. package/lib/languages/da.js +40 -87
  120. package/lib/languages/de.d.ts +14 -0
  121. package/lib/languages/de.js +34 -68
  122. package/lib/languages/el.d.ts +14 -0
  123. package/lib/languages/el.js +22 -48
  124. package/lib/languages/en.d.ts +16 -0
  125. package/lib/languages/en.js +22 -59
  126. package/lib/languages/es.d.ts +15 -0
  127. package/lib/languages/es.js +49 -81
  128. package/lib/languages/fa.d.ts +47 -0
  129. package/lib/languages/fa.js +90 -73
  130. package/lib/languages/fil.d.ts +16 -0
  131. package/lib/languages/fil.js +35 -76
  132. package/lib/languages/fr-BE.d.ts +11 -0
  133. package/lib/languages/fr-BE.js +15 -51
  134. package/lib/languages/fr.d.ts +15 -0
  135. package/lib/languages/fr.js +33 -72
  136. package/lib/languages/gu.d.ts +11 -0
  137. package/lib/languages/gu.js +10 -34
  138. package/lib/languages/hbo.d.ts +113 -0
  139. package/lib/languages/hbo.js +251 -0
  140. package/lib/languages/he.d.ts +80 -0
  141. package/lib/languages/he.js +41 -164
  142. package/lib/languages/hi.d.ts +11 -0
  143. package/lib/languages/hi.js +12 -7
  144. package/lib/languages/hr.d.ts +80 -0
  145. package/lib/languages/hr.js +51 -95
  146. package/lib/languages/hu.d.ts +22 -0
  147. package/lib/languages/hu.js +35 -53
  148. package/lib/languages/id.d.ts +37 -0
  149. package/lib/languages/id.js +29 -44
  150. package/lib/languages/it.d.ts +37 -0
  151. package/lib/languages/it.js +36 -52
  152. package/lib/languages/ja.d.ts +17 -0
  153. package/lib/languages/ja.js +22 -75
  154. package/lib/languages/kn.d.ts +11 -0
  155. package/lib/languages/kn.js +10 -39
  156. package/lib/languages/ko.d.ts +14 -0
  157. package/lib/languages/ko.js +17 -45
  158. package/lib/languages/lt.d.ts +70 -0
  159. package/lib/languages/lt.js +28 -63
  160. package/lib/languages/lv.d.ts +70 -0
  161. package/lib/languages/lv.js +35 -58
  162. package/lib/languages/mr.d.ts +11 -0
  163. package/lib/languages/mr.js +10 -34
  164. package/lib/languages/ms.d.ts +31 -0
  165. package/lib/languages/ms.js +24 -20
  166. package/lib/languages/nb.d.ts +12 -0
  167. package/lib/languages/nb.js +36 -56
  168. package/lib/languages/nl.d.ts +16 -0
  169. package/lib/languages/nl.js +58 -109
  170. package/lib/languages/pa.d.ts +11 -0
  171. package/lib/languages/{pa-Guru.js → pa.js} +12 -7
  172. package/lib/languages/pl.d.ts +80 -0
  173. package/lib/languages/pl.js +26 -105
  174. package/lib/languages/pt.d.ts +29 -0
  175. package/lib/languages/pt.js +29 -64
  176. package/lib/languages/ro.d.ts +158 -0
  177. package/lib/languages/ro.js +60 -167
  178. package/lib/languages/ru.d.ts +85 -0
  179. package/lib/languages/ru.js +17 -37
  180. package/lib/languages/sr-Cyrl.d.ts +80 -0
  181. package/lib/languages/sr-Cyrl.js +113 -0
  182. package/lib/languages/sr-Latn.d.ts +80 -0
  183. package/lib/languages/sr-Latn.js +54 -98
  184. package/lib/languages/sv.d.ts +14 -0
  185. package/lib/languages/sv.js +26 -63
  186. package/lib/languages/sw.d.ts +39 -0
  187. package/lib/languages/sw.js +26 -21
  188. package/lib/languages/ta.d.ts +20 -0
  189. package/lib/languages/ta.js +26 -26
  190. package/lib/languages/te.d.ts +22 -0
  191. package/lib/languages/te.js +28 -38
  192. package/lib/languages/th.d.ts +17 -0
  193. package/lib/languages/th.js +25 -31
  194. package/lib/languages/tr.d.ts +12 -0
  195. package/lib/languages/tr.js +11 -38
  196. package/lib/languages/uk.d.ts +85 -0
  197. package/lib/languages/uk.js +18 -44
  198. package/lib/languages/ur.d.ts +11 -0
  199. package/lib/languages/ur.js +12 -7
  200. package/lib/languages/vi.d.ts +72 -0
  201. package/lib/languages/vi.js +25 -71
  202. package/lib/languages/zh-Hans.d.ts +21 -0
  203. package/lib/languages/zh-Hans.js +33 -87
  204. package/lib/languages/zh-Hant.d.ts +21 -0
  205. package/lib/languages/zh-Hant.js +111 -0
  206. package/lib/n2words.d.ts +209 -0
  207. package/lib/n2words.js +474 -191
  208. package/package.json +106 -67
  209. package/dist/languages/ar.js +0 -2
  210. package/dist/languages/ar.js.map +0 -1
  211. package/dist/languages/az.js +0 -2
  212. package/dist/languages/az.js.map +0 -1
  213. package/dist/languages/bn.js +0 -2
  214. package/dist/languages/bn.js.map +0 -1
  215. package/dist/languages/cs.js +0 -2
  216. package/dist/languages/cs.js.map +0 -1
  217. package/dist/languages/da.js +0 -2
  218. package/dist/languages/da.js.map +0 -1
  219. package/dist/languages/de.js +0 -2
  220. package/dist/languages/de.js.map +0 -1
  221. package/dist/languages/el.js +0 -2
  222. package/dist/languages/el.js.map +0 -1
  223. package/dist/languages/en.js +0 -2
  224. package/dist/languages/en.js.map +0 -1
  225. package/dist/languages/es.js +0 -2
  226. package/dist/languages/es.js.map +0 -1
  227. package/dist/languages/fa.js +0 -2
  228. package/dist/languages/fa.js.map +0 -1
  229. package/dist/languages/fil.js +0 -2
  230. package/dist/languages/fil.js.map +0 -1
  231. package/dist/languages/fr-BE.js +0 -2
  232. package/dist/languages/fr-BE.js.map +0 -1
  233. package/dist/languages/fr.js +0 -2
  234. package/dist/languages/fr.js.map +0 -1
  235. package/dist/languages/gu.js +0 -2
  236. package/dist/languages/gu.js.map +0 -1
  237. package/dist/languages/he.js +0 -2
  238. package/dist/languages/he.js.map +0 -1
  239. package/dist/languages/hi.js +0 -2
  240. package/dist/languages/hi.js.map +0 -1
  241. package/dist/languages/hr.js +0 -2
  242. package/dist/languages/hr.js.map +0 -1
  243. package/dist/languages/hu.js +0 -2
  244. package/dist/languages/hu.js.map +0 -1
  245. package/dist/languages/id.js +0 -2
  246. package/dist/languages/id.js.map +0 -1
  247. package/dist/languages/it.js +0 -2
  248. package/dist/languages/it.js.map +0 -1
  249. package/dist/languages/ja.js +0 -2
  250. package/dist/languages/ja.js.map +0 -1
  251. package/dist/languages/kn.js +0 -2
  252. package/dist/languages/kn.js.map +0 -1
  253. package/dist/languages/ko.js +0 -2
  254. package/dist/languages/ko.js.map +0 -1
  255. package/dist/languages/lt.js +0 -2
  256. package/dist/languages/lt.js.map +0 -1
  257. package/dist/languages/lv.js +0 -2
  258. package/dist/languages/lv.js.map +0 -1
  259. package/dist/languages/mr.js +0 -2
  260. package/dist/languages/mr.js.map +0 -1
  261. package/dist/languages/ms.js +0 -2
  262. package/dist/languages/ms.js.map +0 -1
  263. package/dist/languages/nb.js +0 -2
  264. package/dist/languages/nb.js.map +0 -1
  265. package/dist/languages/nl.js +0 -2
  266. package/dist/languages/nl.js.map +0 -1
  267. package/dist/languages/pa-Guru.js +0 -2
  268. package/dist/languages/pa-Guru.js.map +0 -1
  269. package/dist/languages/pl.js +0 -2
  270. package/dist/languages/pl.js.map +0 -1
  271. package/dist/languages/pt.js +0 -2
  272. package/dist/languages/pt.js.map +0 -1
  273. package/dist/languages/ro.js +0 -2
  274. package/dist/languages/ro.js.map +0 -1
  275. package/dist/languages/ru.js +0 -2
  276. package/dist/languages/ru.js.map +0 -1
  277. package/dist/languages/sr-Latn.js +0 -2
  278. package/dist/languages/sr-Latn.js.map +0 -1
  279. package/dist/languages/sv.js +0 -2
  280. package/dist/languages/sv.js.map +0 -1
  281. package/dist/languages/sw.js +0 -2
  282. package/dist/languages/sw.js.map +0 -1
  283. package/dist/languages/ta.js +0 -2
  284. package/dist/languages/ta.js.map +0 -1
  285. package/dist/languages/te.js +0 -2
  286. package/dist/languages/te.js.map +0 -1
  287. package/dist/languages/th.js +0 -2
  288. package/dist/languages/th.js.map +0 -1
  289. package/dist/languages/tr.js +0 -2
  290. package/dist/languages/tr.js.map +0 -1
  291. package/dist/languages/uk.js +0 -2
  292. package/dist/languages/uk.js.map +0 -1
  293. package/dist/languages/ur.js +0 -2
  294. package/dist/languages/ur.js.map +0 -1
  295. package/dist/languages/vi.js +0 -2
  296. package/dist/languages/vi.js.map +0 -1
  297. package/dist/languages/zh-Hans.js +0 -2
  298. package/dist/languages/zh-Hans.js.map +0 -1
  299. package/typings/classes/abstract-language.d.ts +0 -144
  300. package/typings/classes/greedy-scale-language.d.ts +0 -148
  301. package/typings/classes/slavic-language.d.ts +0 -145
  302. package/typings/classes/south-asian-language.d.ts +0 -101
  303. package/typings/classes/turkic-language.d.ts +0 -42
  304. package/typings/languages/ar.d.ts +0 -93
  305. package/typings/languages/az.d.ts +0 -25
  306. package/typings/languages/bn.d.ts +0 -1
  307. package/typings/languages/cs.d.ts +0 -120
  308. package/typings/languages/da.d.ts +0 -53
  309. package/typings/languages/de.d.ts +0 -26
  310. package/typings/languages/el.d.ts +0 -11
  311. package/typings/languages/en.d.ts +0 -30
  312. package/typings/languages/es.d.ts +0 -43
  313. package/typings/languages/fa.d.ts +0 -81
  314. package/typings/languages/fil.d.ts +0 -12
  315. package/typings/languages/fr-BE.d.ts +0 -41
  316. package/typings/languages/fr.d.ts +0 -43
  317. package/typings/languages/gu.d.ts +0 -12
  318. package/typings/languages/he.d.ts +0 -197
  319. package/typings/languages/hi.d.ts +0 -1
  320. package/typings/languages/hr.d.ts +0 -110
  321. package/typings/languages/hu.d.ts +0 -37
  322. package/typings/languages/id.d.ts +0 -69
  323. package/typings/languages/it.d.ts +0 -51
  324. package/typings/languages/ja.d.ts +0 -58
  325. package/typings/languages/kn.d.ts +0 -11
  326. package/typings/languages/ko.d.ts +0 -25
  327. package/typings/languages/lt.d.ts +0 -110
  328. package/typings/languages/lv.d.ts +0 -99
  329. package/typings/languages/mr.d.ts +0 -12
  330. package/typings/languages/ms.d.ts +0 -37
  331. package/typings/languages/nb.d.ts +0 -27
  332. package/typings/languages/nl.d.ts +0 -65
  333. package/typings/languages/pa-Guru.d.ts +0 -1
  334. package/typings/languages/pl.d.ts +0 -116
  335. package/typings/languages/pt.d.ts +0 -39
  336. package/typings/languages/ro.d.ts +0 -229
  337. package/typings/languages/ru.d.ts +0 -108
  338. package/typings/languages/sr-Latn.d.ts +0 -98
  339. package/typings/languages/sv.d.ts +0 -30
  340. package/typings/languages/sw.d.ts +0 -1
  341. package/typings/languages/ta.d.ts +0 -1
  342. package/typings/languages/te.d.ts +0 -1
  343. package/typings/languages/th.d.ts +0 -1
  344. package/typings/languages/tr.d.ts +0 -46
  345. package/typings/languages/uk.d.ts +0 -117
  346. package/typings/languages/ur.d.ts +0 -1
  347. package/typings/languages/vi.d.ts +0 -116
  348. package/typings/languages/zh-Hans.d.ts +0 -57
  349. package/typings/n2words.d.ts +0 -177
@@ -1,37 +0,0 @@
1
- /**
2
- * Converts a number to Hungarian cardinal (written) form.
3
- *
4
- * @param {number|string|bigint} value The number to convert.
5
- * @param {Object} [options] Conversion options (see Hungarian class options).
6
- * @returns {string} The number expressed in Hungarian words.
7
- * @throws {TypeError} If value is NaN or invalid type.
8
- * @throws {Error} If value is an invalid number string.
9
- *
10
- * @example
11
- * convertToWords(42); // 'negyvenkettő'
12
- * convertToWords(21); // 'huszonegy'
13
- */
14
- export default function convertToWords(value: number | string | bigint, options?: any): string;
15
- /**
16
- * Hungarian language converter.
17
- *
18
- * Converts numbers to Hungarian words following Hungarian conventions:
19
- * - Agglutinative structure for compound numbers
20
- * - No spaces between tens and units (e.g., "huszonegy" = twenty-one)
21
- * - Special handling for "egy" (one) - often omitted as multiplier
22
- * - Vowel harmony in compound words
23
- *
24
- * Features:
25
- * - Compact number representations (húsz, harminc, negyven)
26
- * - Pre-composed twenties (huszonegy through huszonkilenc)
27
- * - "egész" as decimal separator (meaning "whole")
28
- * - Support for very large numbers (up to quadrilliards)
29
- */
30
- export class Hungarian extends GreedyScaleLanguage {
31
- tensToCardinal(number: any): string;
32
- hundredsToCardinal(number: any): string;
33
- thousandsToCardinal(number: any): string;
34
- bigNumberToCardinal(number: any): string;
35
- convertWholePart(number: any, zeroWord?: string): string;
36
- }
37
- import GreedyScaleLanguage from '../classes/greedy-scale-language.js';
@@ -1,69 +0,0 @@
1
- /**
2
- * Converts a number to Indonesian cardinal (written) form.
3
- *
4
- * @param {number|string|bigint} value The number to convert.
5
- * @param {Object} [options={}] Configuration options.
6
- * @returns {string} The number expressed in Indonesian words.
7
- * @throws {TypeError} If value is NaN or invalid type.
8
- * @throws {Error} If value is an invalid number string.
9
- */
10
- export default function convertToWords(value: number | string | bigint, options?: any): string;
11
- /**
12
- * Indonesian language converter.
13
- *
14
- * Converts numbers to Indonesian words following Indonesian conventions:
15
- * - Simple base-10 structure
16
- * - "Se-" prefix for one (e.g., "seratus" = one hundred, "seribu" = one thousand)
17
- * - Space-separated number components
18
- * - Straightforward grouping by thousands
19
- *
20
- * Key Features:
21
- * - Base number mapping (base) for single digits 0-9
22
- * - Magnitude scale (thousands) mapping powers of 10 to Indonesian words
23
- * - Group-based algorithm:
24
- * 1. Split number into groups of 3 digits
25
- * 2. For each group, convert ones/tens/hundreds using base and naming rules
26
- * 3. Apply "se-" prefix for 1 (seratus, seribu, sejuta)
27
- * 4. Combine with magnitude words
28
- * 5. Join all parts with spaces
29
- * - Regular patterns (puluh for tens, ratus for hundreds, ribu for thousands)
30
- * - Clear grouping: ribu (10³), juta (10⁶), miliar (10⁹), triliun (10¹²)
31
- *
32
- * Features:
33
- * - "Se-" prefix usage for singular units
34
- * - Support for very large numbers (up to decillions)
35
- */
36
- export class Indonesian extends AbstractLanguage {
37
- base: {
38
- 0: any[];
39
- 1: string[];
40
- 2: string[];
41
- 3: string[];
42
- 4: string[];
43
- 5: string[];
44
- 6: string[];
45
- 7: string[];
46
- 8: string[];
47
- 9: string[];
48
- };
49
- thousands: {
50
- 3: string;
51
- 6: string;
52
- 9: string;
53
- 12: string;
54
- 15: string;
55
- 18: string;
56
- 21: string;
57
- 24: string;
58
- 27: string;
59
- 30: string;
60
- 33: string;
61
- };
62
- splitBy3(number: any): any[][];
63
- spell(blocks: any): any[];
64
- getHundreds(number: any): any[];
65
- getTens(number: any): any;
66
- join(wordBlocks: any): string;
67
- convertWholePart(number: any): string;
68
- }
69
- import AbstractLanguage from '../classes/abstract-language.js';
@@ -1,51 +0,0 @@
1
- /**
2
- * Converts a number to Italian cardinal (written) form.
3
- *
4
- * @param {number|string|bigint} value The number to convert.
5
- * @param {Object} [options={}] Configuration options.
6
- * @returns {string} The number expressed in Italian words.
7
- * @throws {TypeError} If value is NaN or invalid type.
8
- * @throws {Error} If value is an invalid number string.
9
- */
10
- export default function convertToWords(value: number | string | bigint, options?: any): string;
11
- /**
12
- * Italian language converter.
13
- *
14
- * Converts numbers to Italian words following Italian conventions:
15
- * - Phonetic contractions (removes duplicate vowels: "ventotto" not "ventiotto")
16
- * - Accentuation rules for "tre" in compounds ("ventitré" not "ventitre")
17
- * - Special handling for "uno" and vowel agreement
18
- * - Complex composition patterns for large numbers
19
- *
20
- * Architecture Note:
21
- * Unlike other GreedyScaleLanguage subclasses, Italian uses a custom algorithm
22
- * rather than the standard highest-matching-scale approach. This is necessary
23
- * because Italian's word formation rules are irregular and context-dependent.
24
- * See tensToCardinal(), hundredsToCardinal(), and bigNumberToCardinal().
25
- *
26
- * Features:
27
- * - Vowel elision (e.g., "ventotto" not "ventiotto")
28
- * - Accentuation of final "tre" (ventitré, trentacinque - note: accent on compound tres)
29
- * - Exponent-based large number naming (milione, miliardo, trilione)
30
- * - Custom word construction for hundreds and thousands
31
- */
32
- export class Italian extends GreedyScaleLanguage {
33
- cardinalWords: string[];
34
- strTens: {
35
- 2: string;
36
- 3: string;
37
- 4: string;
38
- 6: string;
39
- };
40
- exponentPrefixes: string[];
41
- accentuate(string: any): any;
42
- omitIfZero(numberToString: any): any;
43
- phoneticContraction(string: any): any;
44
- tensToCardinal(number: any): any;
45
- hundredsToCardinal(number: any): any;
46
- thousandsToCardinal(number: any): string;
47
- exponentLengthToString(exponentLength: any): string;
48
- bigNumberToCardinal(number: any): string;
49
- convertWholePart(number: any): any;
50
- }
51
- import GreedyScaleLanguage from '../classes/greedy-scale-language.js';
@@ -1,58 +0,0 @@
1
- /**
2
- * Converts a value to cardinal (written) form in Japanese.
3
- *
4
- * @param {number|string|bigint} value - Number to convert.
5
- * @param {Object} [options] - Options for the converter.
6
- * @returns {string} Value in Japanese kanji numerals.
7
- * @throws {Error} If value is invalid.
8
- *
9
- * @example
10
- * convertToWords(42, { lang: 'ja' }); // '四十二'
11
- * convertToWords(1000, { lang: 'ja' }); // '千'
12
- * convertToWords(10000, { lang: 'ja' }); // '一万'
13
- */
14
- export default function convertToWords(value: number | string | bigint, options?: any): string;
15
- /**
16
- * Japanese language converter.
17
- *
18
- * Converts numbers to Japanese kanji numerals using the Sino-Japanese system:
19
- * - Uses kanji characters (一, 二, 三, etc.)
20
- * - Grouping by 万 (man, 10,000) and 億 (oku, 100,000,000)
21
- * - Unique scale units: 兆 (chō, trillion), 京 (kei, 10^16)
22
- * - Special rules for 1: omitted before 十 (10), 百 (100), 千 (1000), but kept for 万 and above
23
- *
24
- * Key Features:
25
- * - Sino-Japanese number system (standard for general counting)
26
- * - Grouping by powers of 10,000 (万-based system, not 1,000)
27
- * - Scale units: 万 (10^4), 億 (10^8), 兆 (10^12), 京 (10^16)
28
- * - Special handling of 一 (one) prefix
29
- * - Support for very large numbers up to 無量大数 (10^68)
30
- *
31
- * Algorithm:
32
- * 1. Split number into groups of 4 digits (万-based, not 3-digit thousand-based)
33
- * 2. Convert each group to kanji using special rules
34
- * 3. Append appropriate scale word (万, 億, 兆, etc.)
35
- * 4. Join all groups
36
- *
37
- * Special Rules:
38
- * - 10, 100, 1000: Don't use 一 prefix (十, 百, 千 not 一十, 一百, 一千)
39
- * - 10,000+: Keep 一 prefix (一万, 一億, 一兆)
40
- * - Zero: 零 or 〇 (both acceptable, 零 is more formal)
41
- */
42
- export class Japanese extends AbstractLanguage {
43
- scales: string[];
44
- /**
45
- * Converts a group of up to 4 digits to Japanese kanji.
46
- * Handles special rules for omitting 一 before 十, 百, 千.
47
- *
48
- * Rule: Within a group, omit 一 before 十/百/千 EXCEPT when:
49
- * - It's a lower group (not isTopGroup) AND
50
- * - It would be the only character in that position
51
- *
52
- * @param {bigint} num - Number from 0 to 9999
53
- * @param {boolean} isTopGroup - Whether this is the highest non-zero group
54
- * @returns {string} Japanese kanji representation
55
- */
56
- convertGroup(num: bigint, isTopGroup?: boolean): string;
57
- }
58
- import AbstractLanguage from '../classes/abstract-language.js';
@@ -1,11 +0,0 @@
1
- /**
2
- * Converts a number to its word representation in Kannada.
3
- * @param {number|string|bigint} value - The number to convert
4
- * @param {Object} [options={}] - Conversion options
5
- * @returns {string} The word representation of the number
6
- * @example
7
- * convertToWords(42) // 'ನಲವತ್ತೆರಡು'
8
- * convertToWords(1000) // 'ಒಂದು ಸಾವಿರ'
9
- * convertToWords(100000) // 'ಒಂದು ಲಕ್ಷ'
10
- */
11
- export default function convertToWords(value: number | string | bigint, options?: any): string;
@@ -1,25 +0,0 @@
1
- /**
2
- * Converts a number to Korean cardinal (written) form.
3
- *
4
- * @param {number|string|bigint} value The number to convert.
5
- * @param {Object} [options] Conversion options (see Korean class options).
6
- * @returns {string} The number expressed in Korean words.
7
- * @throws {TypeError} If value is NaN or invalid type.
8
- * @throws {Error} If value is an invalid number string.
9
- *
10
- * @example
11
- * convertToWords(42); // '사십이'
12
- * convertToWords(10001); // '만 일'
13
- */
14
- export default function convertToWords(value: number | string | bigint, options?: any): string;
15
- /**
16
- * Korean language converter.
17
- *
18
- * Features:
19
- * - Space-separated for large numbers (>= 만/10,000)
20
- * - Concatenated for smaller numbers
21
- * - Omits '일' (1) before multipliers
22
- */
23
- export class Korean extends GreedyScaleLanguage {
24
- }
25
- import GreedyScaleLanguage from '../classes/greedy-scale-language.js';
@@ -1,110 +0,0 @@
1
- /**
2
- * Converts a number to Lithuanian cardinal (written) form.
3
- *
4
- * @param {number|string|bigint} value The number to convert.
5
- * @param {Object} [options={}] Configuration options.
6
- * @param {boolean} [options.feminine=false] Use feminine forms for numbers.
7
- * @returns {string} The number expressed in Lithuanian words.
8
- * @throws {TypeError} If value is NaN or invalid type.
9
- * @throws {Error} If value is an invalid number string.
10
- */
11
- export default function convertToWords(value: number | string | bigint, options?: {
12
- feminine?: boolean;
13
- }): string;
14
- /**
15
- * @typedef {Object} SlavicOptions
16
- * @property {boolean} [feminine=false] Use feminine forms for numbers.
17
- */
18
- /**
19
- * Lithuanian language converter.
20
- *
21
- * Implements Lithuanian number words using the Slavic language pattern:
22
- * - Lithuanian number words (vienas/viena, du/dvi, trys, keturi...)
23
- * - Gender-aware forms (masculine/feminine)
24
- * - Baltic three-form pluralization (tūkstantis/tūkstančiai/tūkstančių)
25
- * - Lithuanian-specific declension patterns
26
- *
27
- * Key Features:
28
- * - Three-form pluralization system shared across Slavic/Baltic languages
29
- * * Form 1 (singular): 1 (e.g., "tūkstantis")
30
- * * Form 2 (few): 2-4, 22-24, 32-34... excluding teens (e.g., "tūkstančiai")
31
- * * Form 3 (many): all other numbers (e.g., "tūkstančių")
32
- * - Chunk-based decomposition (splits into groups of 3 digits: ones, thousands, millions, etc.)
33
- * - Large number handling via thousands[] array with indexed [singular, few, many] forms
34
- * - Gender-specific number forms for 1 and 2 (masculine/feminine dual forms)
35
- *
36
- * Features:
37
- * - Dual gender forms (vienas/viena, du/dvi, keturi/keturios)
38
- * - Complex declension patterns for large numbers
39
- * - Baltic language characteristics
40
- *
41
- * Inherits from SlavicLanguage as Lithuanian uses similar pluralization.
42
- */
43
- export class Lithuanian extends SlavicLanguage {
44
- ones: {
45
- 1: string;
46
- 2: string;
47
- 3: string;
48
- 4: string;
49
- 5: string;
50
- 6: string;
51
- 7: string;
52
- 8: string;
53
- 9: string;
54
- };
55
- onesFeminine: {
56
- 1: string;
57
- 2: string;
58
- 3: string;
59
- 4: string;
60
- 5: string;
61
- 6: string;
62
- 7: string;
63
- 8: string;
64
- 9: string;
65
- };
66
- tens: {
67
- 0: string;
68
- 1: string;
69
- 2: string;
70
- 3: string;
71
- 4: string;
72
- 5: string;
73
- 6: string;
74
- 7: string;
75
- 8: string;
76
- 9: string;
77
- };
78
- twenties: {
79
- 2: string;
80
- 3: string;
81
- 4: string;
82
- 5: string;
83
- 6: string;
84
- 7: string;
85
- 8: string;
86
- 9: string;
87
- };
88
- hundreds: string[];
89
- thousands: {
90
- 1: string[];
91
- 2: string[];
92
- 3: string[];
93
- 4: string[];
94
- 5: string[];
95
- 6: string[];
96
- 7: string[];
97
- 8: string[];
98
- 9: string[];
99
- 10: string[];
100
- };
101
- pluralize(n: any, forms: any): any;
102
- convertWholePart(number: any): string;
103
- }
104
- export type SlavicOptions = {
105
- /**
106
- * Use feminine forms for numbers.
107
- */
108
- feminine?: boolean;
109
- };
110
- import SlavicLanguage from '../classes/slavic-language.js';
@@ -1,99 +0,0 @@
1
- /**
2
- * Converts a number to Latvian cardinal (written) form.
3
- *
4
- * @param {number|string|bigint} value The number to convert.
5
- * @param {Object} [options={}] Configuration options.
6
- * @param {boolean} [options.feminine=false] Use feminine forms for numbers.
7
- * @returns {string} The number expressed in Latvian words.
8
- * @throws {TypeError} If value is NaN or invalid type.
9
- * @throws {Error} If value is an invalid number string.
10
- */
11
- export default function convertToWords(value: number | string | bigint, options?: {
12
- feminine?: boolean;
13
- }): string;
14
- /**
15
- * @typedef {Object} SlavicOptions
16
- * @property {boolean} [feminine=false] Use feminine forms for numbers.
17
- */
18
- /**
19
- * Latvian language converter.
20
- *
21
- * Implements Latvian number words using the Slavic language pattern:
22
- * - Latvian number words (viens, divi, trīs, četri, pieci...)
23
- * - Latvian-specific pluralization patterns
24
- * - Baltic grammatical structure
25
- * - Simplified gender handling compared to Lithuanian
26
- *
27
- * Key Features:
28
- * - Three-form pluralization system shared across Slavic/Baltic languages
29
- * * Form 1 (singular): 1 (e.g., "tūkstotis")
30
- * * Form 2 (few): 2-4, 22-24, 32-34... excluding teens (e.g., "tūkstoši")
31
- * * Form 3 (many): all other numbers (e.g., "tūkstošu")
32
- * - Chunk-based decomposition (splits into groups of 3 digits: ones, thousands, millions, etc.)
33
- * - Large number handling via thousands[] array with indexed [singular, few, many] forms
34
- *
35
- * Features:
36
- * - Latvian diacritical marks (ī, ā, ē, ū, etc.)
37
- * - Three-form pluralization (adapted for Latvian)
38
- * - Baltic number naming conventions
39
- * - Compound number formation (divdesmit, trīsdesmit)
40
- *
41
- * Inherits from SlavicLanguage for pluralization algorithms.
42
- */
43
- export class Latvian extends SlavicLanguage {
44
- ones: {
45
- 1: string;
46
- 2: string;
47
- 3: string;
48
- 4: string;
49
- 5: string;
50
- 6: string;
51
- 7: string;
52
- 8: string;
53
- 9: string;
54
- };
55
- tens: {
56
- 0: string;
57
- 1: string;
58
- 2: string;
59
- 3: string;
60
- 4: string;
61
- 5: string;
62
- 6: string;
63
- 7: string;
64
- 8: string;
65
- 9: string;
66
- };
67
- twenties: {
68
- 2: string;
69
- 3: string;
70
- 4: string;
71
- 5: string;
72
- 6: string;
73
- 7: string;
74
- 8: string;
75
- 9: string;
76
- };
77
- hundreds: string[];
78
- thousands: {
79
- 1: string[];
80
- 2: string[];
81
- 3: string[];
82
- 4: string[];
83
- 5: string[];
84
- 6: string[];
85
- 7: string[];
86
- 8: string[];
87
- 9: string[];
88
- 10: string[];
89
- };
90
- pluralize(n: any, forms: any): any;
91
- convertWholePart(number: any): string;
92
- }
93
- export type SlavicOptions = {
94
- /**
95
- * Use feminine forms for numbers.
96
- */
97
- feminine?: boolean;
98
- };
99
- import SlavicLanguage from '../classes/slavic-language.js';
@@ -1,12 +0,0 @@
1
- /**
2
- * Convert a number to Marathi words
3
- *
4
- * @param {number|string|bigint} value - The number to convert
5
- * @param {Object} [options={}] - Conversion options
6
- * @returns {string} The Marathi word representation
7
- * @example
8
- * convertToWords(42) // 'बेचाळीस'
9
- * convertToWords(1000) // 'एक हजार'
10
- * convertToWords(100000) // 'एक लाख'
11
- */
12
- export default function convertToWords(value: number | string | bigint, options?: any): string;
@@ -1,37 +0,0 @@
1
- export default function convertToWords(value: any, options?: {}): string;
2
- /**
3
- * Malay (Bahasa Melayu) language converter.
4
- *
5
- * Conventions:
6
- * - Base-10 structure
7
- * - "Se-" prefix for singular units (seratus, seribu, sejuta, sebilion, setrilion)
8
- * - Space-separated components (no conjunction like "dan" for tens/ones)
9
- * - Grouping by thousands (ribu, juta, bilion, trilion)
10
- */
11
- export class Malay extends AbstractLanguage {
12
- base: {
13
- 0: any[];
14
- 1: string[];
15
- 2: string[];
16
- 3: string[];
17
- 4: string[];
18
- 5: string[];
19
- 6: string[];
20
- 7: string[];
21
- 8: string[];
22
- 9: string[];
23
- };
24
- thousands: {
25
- 3: string;
26
- 6: string;
27
- 9: string;
28
- 12: string;
29
- };
30
- splitBy3(number: any): any[][];
31
- spell(blocks: any): any[];
32
- getHundreds(number: any): any[];
33
- getTens(number: any): any;
34
- join(wordBlocks: any): string;
35
- convertWholePart(number: any): string;
36
- }
37
- import AbstractLanguage from '../classes/abstract-language.js';
@@ -1,27 +0,0 @@
1
- /**
2
- * Converts a number to Norwegian cardinal (written) form.
3
- *
4
- * @param {number|string|bigint} value The number to convert.
5
- * @param {Object} [options] Conversion options (see Norwegian class options).
6
- * @returns {string} The number expressed in Norwegian words.
7
- * @throws {TypeError} If value is NaN or invalid type.
8
- * @throws {Error} If value is an invalid number string.
9
- *
10
- * @example
11
- * convertToWords(42); // 'førti-to'
12
- * convertToWords('1.5'); // 'en komma fem'
13
- */
14
- export default function convertToWords(value: number | string | bigint, options?: any): string;
15
- /**
16
- * Norwegian language converter.
17
- *
18
- * GreedyScaleLanguage with inline Norwegian merge rules:
19
- * - Hyphenation for compound numbers (e.g., "tjueen")
20
- * - "og" (and) for hundreds combinations
21
- * - Comma separation for non-magnitude additions
22
- * - Implicit '1' before tens and magnitudes
23
- * - Space separators for large numbers
24
- */
25
- export class Norwegian extends GreedyScaleLanguage {
26
- }
27
- import GreedyScaleLanguage from '../classes/greedy-scale-language.js';
@@ -1,65 +0,0 @@
1
- /**
2
- * Converts a number to Dutch cardinal (written) form.
3
- *
4
- * @param {number|string|bigint} value The number to convert.
5
- * @param {Object} [options] Conversion options (see Dutch class options).
6
- * @param {boolean} [options.includeOptionalAnd=false] Include optional 'en' (and) separator.
7
- * @param {boolean} [options.noHundredPairs=false] Don't combine hundreds with tens/units.
8
- * @param {boolean} [options.accentOne=true] Use accented 'één' for standalone 1.
9
- * @returns {string} The number expressed in Dutch words.
10
- * @throws {TypeError} If value is NaN or invalid type.
11
- * @throws {Error} If value is an invalid number string.
12
- *
13
- * @example
14
- * convertToWords(1); // 'één' (default accent)
15
- * convertToWords(1, { accentOne: false }); // 'een'
16
- * convertToWords(21); // 'eenentwintig' (no accent in compounds)
17
- * convertToWords(42); // 'tweeenveertig'
18
- * convertToWords('1.5'); // 'één komma vijf'
19
- */
20
- export default function convertToWords(value: number | string | bigint, options?: {
21
- includeOptionalAnd?: boolean;
22
- noHundredPairs?: boolean;
23
- accentOne?: boolean;
24
- }): string;
25
- /**
26
- * @typedef {Object} DutchOptions
27
- * @property {boolean} [includeOptionalAnd=false] Include optional "en" separator.
28
- * @property {boolean} [noHundredPairs=false] Disable comma before hundreds.
29
- * @property {boolean} [accentOne=true] Use accented "één" for one.
30
- */
31
- /**
32
- * Dutch language converter.
33
- *
34
- * Features:
35
- * - Optional "en" (and) separator for tens (includeOptionalAnd)
36
- * - Optional comma before hundreds (noHundredPairs)
37
- * - Compound word formation without hyphenation
38
- */
39
- export class Dutch extends GreedyScaleLanguage {
40
- /**
41
- * Initializes the Dutch converter with language-specific options.
42
- *
43
- * @param {DutchOptions} [options={}] Configuration options.
44
- */
45
- constructor({ includeOptionalAnd, noHundredPairs, accentOne }?: DutchOptions);
46
- includeOptionalAnd: boolean;
47
- noHundredPairs: boolean;
48
- accentOne: boolean;
49
- convertWholePart(value: any): string;
50
- }
51
- export type DutchOptions = {
52
- /**
53
- * Include optional "en" separator.
54
- */
55
- includeOptionalAnd?: boolean;
56
- /**
57
- * Disable comma before hundreds.
58
- */
59
- noHundredPairs?: boolean;
60
- /**
61
- * Use accented "één" for one.
62
- */
63
- accentOne?: boolean;
64
- };
65
- import GreedyScaleLanguage from '../classes/greedy-scale-language.js';
@@ -1 +0,0 @@
1
- export default function convertToWords(value: any, options?: {}): string;