n2words 3.1.0 → 4.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 (482) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/LICENSE +1 -1
  3. package/README.md +64 -184
  4. package/dist/am-ET.js +2 -0
  5. package/dist/am-ET.umd.js +2 -0
  6. package/dist/am-Latn-ET.js +2 -0
  7. package/dist/am-Latn-ET.umd.js +2 -0
  8. package/dist/ar-SA.js +2 -0
  9. package/dist/ar-SA.umd.js +2 -0
  10. package/dist/az-AZ.js +2 -0
  11. package/dist/az-AZ.umd.js +2 -0
  12. package/dist/bn-BD.js +2 -0
  13. package/dist/bn-BD.umd.js +2 -0
  14. package/dist/cs-CZ.js +2 -0
  15. package/dist/cs-CZ.umd.js +2 -0
  16. package/dist/da-DK.js +2 -0
  17. package/dist/da-DK.umd.js +2 -0
  18. package/dist/de-DE.js +2 -0
  19. package/dist/de-DE.umd.js +2 -0
  20. package/dist/el-GR.js +2 -0
  21. package/dist/el-GR.umd.js +2 -0
  22. package/dist/en-AU.js +2 -0
  23. package/dist/en-AU.umd.js +2 -0
  24. package/dist/en-BD.js +2 -0
  25. package/dist/en-BD.umd.js +2 -0
  26. package/dist/en-CA.js +2 -0
  27. package/dist/en-CA.umd.js +2 -0
  28. package/dist/en-GB.js +2 -0
  29. package/dist/en-GB.umd.js +2 -0
  30. package/dist/en-GH.js +2 -0
  31. package/dist/en-GH.umd.js +2 -0
  32. package/dist/en-IE.js +2 -0
  33. package/dist/en-IE.umd.js +2 -0
  34. package/dist/en-IN.js +2 -0
  35. package/dist/en-IN.umd.js +2 -0
  36. package/dist/en-KE.js +2 -0
  37. package/dist/en-KE.umd.js +2 -0
  38. package/dist/en-MY.js +2 -0
  39. package/dist/en-MY.umd.js +2 -0
  40. package/dist/en-NG.js +2 -0
  41. package/dist/en-NG.umd.js +2 -0
  42. package/dist/en-NZ.js +2 -0
  43. package/dist/en-NZ.umd.js +2 -0
  44. package/dist/en-PH.js +2 -0
  45. package/dist/en-PH.umd.js +2 -0
  46. package/dist/en-PK.js +2 -0
  47. package/dist/en-PK.umd.js +2 -0
  48. package/dist/en-SG.js +2 -0
  49. package/dist/en-SG.umd.js +2 -0
  50. package/dist/en-US.js +2 -0
  51. package/dist/en-US.umd.js +2 -0
  52. package/dist/en-ZA.js +2 -0
  53. package/dist/en-ZA.umd.js +2 -0
  54. package/dist/es-ES.js +2 -0
  55. package/dist/es-ES.umd.js +2 -0
  56. package/dist/es-MX.js +2 -0
  57. package/dist/es-MX.umd.js +2 -0
  58. package/dist/es-US.js +2 -0
  59. package/dist/es-US.umd.js +2 -0
  60. package/dist/fa-IR.js +2 -0
  61. package/dist/fa-IR.umd.js +2 -0
  62. package/dist/fi-FI.js +2 -0
  63. package/dist/fi-FI.umd.js +2 -0
  64. package/dist/fil-PH.js +2 -0
  65. package/dist/fil-PH.umd.js +2 -0
  66. package/dist/fr-BE.js +2 -0
  67. package/dist/fr-BE.umd.js +2 -0
  68. package/dist/fr-FR.js +2 -0
  69. package/dist/fr-FR.umd.js +2 -0
  70. package/dist/gu-IN.js +2 -0
  71. package/dist/gu-IN.umd.js +2 -0
  72. package/dist/ha-NG.js +2 -0
  73. package/dist/ha-NG.umd.js +2 -0
  74. package/dist/hbo-IL.js +2 -0
  75. package/dist/hbo-IL.umd.js +2 -0
  76. package/dist/he-IL.js +2 -0
  77. package/dist/he-IL.umd.js +2 -0
  78. package/dist/hi-IN.js +2 -0
  79. package/dist/hi-IN.umd.js +2 -0
  80. package/dist/hr-HR.js +2 -0
  81. package/dist/hr-HR.umd.js +2 -0
  82. package/dist/hu-HU.js +2 -0
  83. package/dist/hu-HU.umd.js +2 -0
  84. package/dist/id-ID.js +2 -0
  85. package/dist/id-ID.umd.js +2 -0
  86. package/dist/it-IT.js +2 -0
  87. package/dist/it-IT.umd.js +2 -0
  88. package/dist/ja-JP.js +2 -0
  89. package/dist/ja-JP.umd.js +2 -0
  90. package/dist/ka-GE.js +2 -0
  91. package/dist/ka-GE.umd.js +2 -0
  92. package/dist/kn-IN.js +2 -0
  93. package/dist/kn-IN.umd.js +2 -0
  94. package/dist/ko-KR.js +2 -0
  95. package/dist/ko-KR.umd.js +2 -0
  96. package/dist/lt-LT.js +2 -0
  97. package/dist/lt-LT.umd.js +2 -0
  98. package/dist/lv-LV.js +2 -0
  99. package/dist/lv-LV.umd.js +2 -0
  100. package/dist/mr-IN.js +2 -0
  101. package/dist/mr-IN.umd.js +2 -0
  102. package/dist/ms-MY.js +2 -0
  103. package/dist/ms-MY.umd.js +2 -0
  104. package/dist/nb-NO.js +2 -0
  105. package/dist/nb-NO.umd.js +2 -0
  106. package/dist/nl-NL.js +2 -0
  107. package/dist/nl-NL.umd.js +2 -0
  108. package/dist/pa-IN.js +2 -0
  109. package/dist/pa-IN.umd.js +2 -0
  110. package/dist/pl-PL.js +2 -0
  111. package/dist/pl-PL.umd.js +2 -0
  112. package/dist/pt-PT.js +2 -0
  113. package/dist/pt-PT.umd.js +2 -0
  114. package/dist/ro-RO.js +2 -0
  115. package/dist/ro-RO.umd.js +2 -0
  116. package/dist/ru-RU.js +2 -0
  117. package/dist/ru-RU.umd.js +2 -0
  118. package/dist/sr-Cyrl-RS.js +2 -0
  119. package/dist/sr-Cyrl-RS.umd.js +2 -0
  120. package/dist/sr-Latn-RS.js +2 -0
  121. package/dist/sr-Latn-RS.umd.js +2 -0
  122. package/dist/sv-SE.js +2 -0
  123. package/dist/sv-SE.umd.js +2 -0
  124. package/dist/sw-KE.js +2 -0
  125. package/dist/sw-KE.umd.js +2 -0
  126. package/dist/ta-IN.js +2 -0
  127. package/dist/ta-IN.umd.js +2 -0
  128. package/dist/te-IN.js +2 -0
  129. package/dist/te-IN.umd.js +2 -0
  130. package/dist/th-TH.js +2 -0
  131. package/dist/th-TH.umd.js +2 -0
  132. package/dist/tr-TR.js +2 -0
  133. package/dist/tr-TR.umd.js +2 -0
  134. package/dist/uk-UA.js +2 -0
  135. package/dist/uk-UA.umd.js +2 -0
  136. package/dist/ur-PK.js +2 -0
  137. package/dist/ur-PK.umd.js +2 -0
  138. package/dist/vi-VN.js +2 -0
  139. package/dist/vi-VN.umd.js +2 -0
  140. package/dist/yo-NG.js +2 -0
  141. package/dist/yo-NG.umd.js +2 -0
  142. package/dist/zh-Hans-CN.js +2 -0
  143. package/dist/zh-Hans-CN.umd.js +2 -0
  144. package/dist/zh-Hant-TW.js +2 -0
  145. package/dist/zh-Hant-TW.umd.js +2 -0
  146. package/package.json +47 -82
  147. package/src/am-ET.d.ts +40 -0
  148. package/src/am-ET.js +269 -0
  149. package/src/am-Latn-ET.d.ts +35 -0
  150. package/src/am-Latn-ET.js +264 -0
  151. package/src/ar-SA.d.ts +49 -0
  152. package/{lib/languages/ar.js → src/ar-SA.js} +177 -15
  153. package/src/az-AZ.d.ts +37 -0
  154. package/src/az-AZ.js +312 -0
  155. package/src/bn-BD.d.ts +36 -0
  156. package/{lib/languages/bn.js → src/bn-BD.js} +110 -6
  157. package/src/cs-CZ.d.ts +49 -0
  158. package/{lib/languages/cs.js → src/cs-CZ.js} +240 -14
  159. package/src/da-DK.d.ts +44 -0
  160. package/{lib/languages/da.js → src/da-DK.js} +131 -11
  161. package/src/de-DE.d.ts +57 -0
  162. package/src/de-DE.js +603 -0
  163. package/src/el-GR.d.ts +40 -0
  164. package/src/el-GR.js +418 -0
  165. package/src/en-AU.d.ts +47 -0
  166. package/src/en-AU.js +423 -0
  167. package/src/en-BD.d.ts +49 -0
  168. package/src/en-BD.js +415 -0
  169. package/src/en-CA.d.ts +63 -0
  170. package/src/en-CA.js +518 -0
  171. package/src/en-GB.d.ts +56 -0
  172. package/src/en-GB.js +469 -0
  173. package/src/en-GH.d.ts +11 -0
  174. package/src/en-GH.js +345 -0
  175. package/src/en-IE.d.ts +56 -0
  176. package/src/en-IE.js +479 -0
  177. package/src/en-IN.d.ts +49 -0
  178. package/src/en-IN.js +415 -0
  179. package/src/en-KE.d.ts +11 -0
  180. package/src/en-KE.js +345 -0
  181. package/src/en-MY.d.ts +11 -0
  182. package/src/en-MY.js +347 -0
  183. package/src/en-NG.d.ts +56 -0
  184. package/src/en-NG.js +479 -0
  185. package/src/en-NZ.d.ts +11 -0
  186. package/{lib/languages/en.js → src/en-NZ.js} +164 -31
  187. package/src/en-PH.d.ts +11 -0
  188. package/src/en-PH.js +345 -0
  189. package/src/en-PK.d.ts +49 -0
  190. package/src/en-PK.js +415 -0
  191. package/src/en-SG.d.ts +11 -0
  192. package/src/en-SG.js +345 -0
  193. package/src/en-US.d.ts +63 -0
  194. package/src/en-US.js +516 -0
  195. package/src/en-ZA.d.ts +56 -0
  196. package/src/en-ZA.js +478 -0
  197. package/src/es-ES.d.ts +65 -0
  198. package/src/es-ES.js +541 -0
  199. package/src/es-MX.d.ts +58 -0
  200. package/{lib/languages/es.js → src/es-MX.js} +228 -18
  201. package/src/es-US.d.ts +58 -0
  202. package/src/es-US.js +446 -0
  203. package/src/fa-IR.d.ts +38 -0
  204. package/src/fa-IR.js +246 -0
  205. package/src/fi-FI.d.ts +46 -0
  206. package/{lib/languages/fi.js → src/fi-FI.js} +152 -11
  207. package/src/fil-PH.d.ts +37 -0
  208. package/{lib/languages/fil.js → src/fil-PH.js} +144 -8
  209. package/src/fr-BE.d.ts +49 -0
  210. package/{lib/languages → src}/fr-BE.js +175 -13
  211. package/src/fr-FR.d.ts +63 -0
  212. package/{lib/languages/fr.js → src/fr-FR.js} +182 -16
  213. package/src/gu-IN.d.ts +35 -0
  214. package/{lib/languages/gu.js → src/gu-IN.js} +115 -6
  215. package/src/ha-NG.d.ts +37 -0
  216. package/{lib/languages/ha.js → src/ha-NG.js} +107 -8
  217. package/src/hbo-IL.d.ts +39 -0
  218. package/{lib/languages/hbo.js → src/hbo-IL.js} +211 -19
  219. package/src/he-IL.d.ts +37 -0
  220. package/src/he-IL.js +537 -0
  221. package/src/hi-IN.d.ts +36 -0
  222. package/{lib/languages/hi.js → src/hi-IN.js} +116 -6
  223. package/src/hr-HR.d.ts +42 -0
  224. package/src/hr-HR.js +463 -0
  225. package/src/hu-HU.d.ts +38 -0
  226. package/{lib/languages/hu.js → src/hu-HU.js} +164 -6
  227. package/src/id-ID.d.ts +38 -0
  228. package/{lib/languages/id.js → src/id-ID.js} +99 -8
  229. package/src/it-IT.d.ts +59 -0
  230. package/{lib/languages/it.js → src/it-IT.js} +179 -15
  231. package/src/ja-JP.d.ts +49 -0
  232. package/{lib/languages/ja.js → src/ja-JP.js} +111 -12
  233. package/src/ka-GE.d.ts +44 -0
  234. package/{lib/languages/ka.js → src/ka-GE.js} +113 -11
  235. package/src/kn-IN.d.ts +35 -0
  236. package/{lib/languages/kn.js → src/kn-IN.js} +115 -6
  237. package/src/ko-KR.d.ts +45 -0
  238. package/{lib/languages/ko.js → src/ko-KR.js} +94 -12
  239. package/src/lt-LT.d.ts +49 -0
  240. package/src/lt-LT.js +543 -0
  241. package/src/lv-LV.d.ts +49 -0
  242. package/src/lv-LV.js +595 -0
  243. package/src/mr-IN.d.ts +36 -0
  244. package/{lib/languages/mr.js → src/mr-IN.js} +116 -6
  245. package/src/ms-MY.d.ts +37 -0
  246. package/{lib/languages/ms.js → src/ms-MY.js} +111 -8
  247. package/src/nb-NO.d.ts +44 -0
  248. package/{lib/languages/nb.js → src/nb-NO.js} +153 -11
  249. package/src/nl-NL.d.ts +54 -0
  250. package/{lib/languages/nl.js → src/nl-NL.js} +260 -18
  251. package/src/pa-IN.d.ts +36 -0
  252. package/{lib/languages/pa.js → src/pa-IN.js} +116 -6
  253. package/src/pl-PL.d.ts +55 -0
  254. package/src/pl-PL.js +585 -0
  255. package/src/pt-PT.d.ts +45 -0
  256. package/{lib/languages/pt.js → src/pt-PT.js} +234 -12
  257. package/src/ro-RO.d.ts +44 -0
  258. package/{lib/languages/ro.js → src/ro-RO.js} +212 -18
  259. package/src/ru-RU.d.ts +50 -0
  260. package/src/ru-RU.js +535 -0
  261. package/src/sr-Cyrl-RS.d.ts +49 -0
  262. package/src/sr-Cyrl-RS.js +503 -0
  263. package/src/sr-Latn-RS.d.ts +49 -0
  264. package/src/sr-Latn-RS.js +503 -0
  265. package/src/sv-SE.d.ts +44 -0
  266. package/{lib/languages/sv.js → src/sv-SE.js} +136 -11
  267. package/src/sw-KE.d.ts +37 -0
  268. package/{lib/languages/sw.js → src/sw-KE.js} +117 -6
  269. package/src/ta-IN.d.ts +35 -0
  270. package/{lib/languages/ta.js → src/ta-IN.js} +109 -6
  271. package/src/te-IN.d.ts +35 -0
  272. package/{lib/languages/te.js → src/te-IN.js} +115 -6
  273. package/src/th-TH.d.ts +38 -0
  274. package/{lib/languages/th.js → src/th-TH.js} +99 -6
  275. package/src/tr-TR.d.ts +48 -0
  276. package/{lib/languages/tr.js → src/tr-TR.js} +168 -23
  277. package/src/uk-UA.d.ts +42 -0
  278. package/src/uk-UA.js +463 -0
  279. package/src/ur-PK.d.ts +36 -0
  280. package/{lib/languages/ur.js → src/ur-PK.js} +116 -6
  281. package/src/utils/expand-scientific.d.ts +32 -0
  282. package/src/utils/expand-scientific.js +65 -0
  283. package/src/utils/parse-cardinal.d.ts +14 -0
  284. package/{lib/utils/parse-numeric.js → src/utils/parse-cardinal.js} +14 -44
  285. package/src/utils/parse-currency.d.ts +14 -0
  286. package/src/utils/parse-currency.js +91 -0
  287. package/src/utils/parse-ordinal.d.ts +10 -0
  288. package/src/utils/parse-ordinal.js +103 -0
  289. package/src/vi-VN.d.ts +48 -0
  290. package/{lib/languages/vi.js → src/vi-VN.js} +102 -11
  291. package/src/yo-NG.d.ts +37 -0
  292. package/{lib/languages/yo.js → src/yo-NG.js} +109 -9
  293. package/src/zh-Hans-CN.d.ts +48 -0
  294. package/{lib/languages/zh-Hans.js → src/zh-Hans-CN.js} +140 -8
  295. package/src/zh-Hant-TW.d.ts +50 -0
  296. package/{lib/languages/zh-Hant.js → src/zh-Hant-TW.js} +139 -8
  297. package/dist/languages/am-Latn.js +0 -3
  298. package/dist/languages/am-Latn.js.map +0 -1
  299. package/dist/languages/am.js +0 -3
  300. package/dist/languages/am.js.map +0 -1
  301. package/dist/languages/ar.js +0 -3
  302. package/dist/languages/ar.js.map +0 -1
  303. package/dist/languages/az.js +0 -3
  304. package/dist/languages/az.js.map +0 -1
  305. package/dist/languages/bn.js +0 -3
  306. package/dist/languages/bn.js.map +0 -1
  307. package/dist/languages/cs.js +0 -3
  308. package/dist/languages/cs.js.map +0 -1
  309. package/dist/languages/da.js +0 -3
  310. package/dist/languages/da.js.map +0 -1
  311. package/dist/languages/de.js +0 -3
  312. package/dist/languages/de.js.map +0 -1
  313. package/dist/languages/el.js +0 -3
  314. package/dist/languages/el.js.map +0 -1
  315. package/dist/languages/en.js +0 -3
  316. package/dist/languages/en.js.map +0 -1
  317. package/dist/languages/es.js +0 -3
  318. package/dist/languages/es.js.map +0 -1
  319. package/dist/languages/fa.js +0 -3
  320. package/dist/languages/fa.js.map +0 -1
  321. package/dist/languages/fi.js +0 -3
  322. package/dist/languages/fi.js.map +0 -1
  323. package/dist/languages/fil.js +0 -3
  324. package/dist/languages/fil.js.map +0 -1
  325. package/dist/languages/fr-BE.js +0 -3
  326. package/dist/languages/fr-BE.js.map +0 -1
  327. package/dist/languages/fr.js +0 -3
  328. package/dist/languages/fr.js.map +0 -1
  329. package/dist/languages/gu.js +0 -3
  330. package/dist/languages/gu.js.map +0 -1
  331. package/dist/languages/ha.js +0 -3
  332. package/dist/languages/ha.js.map +0 -1
  333. package/dist/languages/hbo.js +0 -3
  334. package/dist/languages/hbo.js.map +0 -1
  335. package/dist/languages/he.js +0 -3
  336. package/dist/languages/he.js.map +0 -1
  337. package/dist/languages/hi.js +0 -3
  338. package/dist/languages/hi.js.map +0 -1
  339. package/dist/languages/hr.js +0 -3
  340. package/dist/languages/hr.js.map +0 -1
  341. package/dist/languages/hu.js +0 -3
  342. package/dist/languages/hu.js.map +0 -1
  343. package/dist/languages/id.js +0 -3
  344. package/dist/languages/id.js.map +0 -1
  345. package/dist/languages/it.js +0 -3
  346. package/dist/languages/it.js.map +0 -1
  347. package/dist/languages/ja.js +0 -3
  348. package/dist/languages/ja.js.map +0 -1
  349. package/dist/languages/ka.js +0 -3
  350. package/dist/languages/ka.js.map +0 -1
  351. package/dist/languages/kn.js +0 -3
  352. package/dist/languages/kn.js.map +0 -1
  353. package/dist/languages/ko.js +0 -3
  354. package/dist/languages/ko.js.map +0 -1
  355. package/dist/languages/lt.js +0 -3
  356. package/dist/languages/lt.js.map +0 -1
  357. package/dist/languages/lv.js +0 -3
  358. package/dist/languages/lv.js.map +0 -1
  359. package/dist/languages/mr.js +0 -3
  360. package/dist/languages/mr.js.map +0 -1
  361. package/dist/languages/ms.js +0 -3
  362. package/dist/languages/ms.js.map +0 -1
  363. package/dist/languages/nb.js +0 -3
  364. package/dist/languages/nb.js.map +0 -1
  365. package/dist/languages/nl.js +0 -3
  366. package/dist/languages/nl.js.map +0 -1
  367. package/dist/languages/pa.js +0 -3
  368. package/dist/languages/pa.js.map +0 -1
  369. package/dist/languages/pl.js +0 -3
  370. package/dist/languages/pl.js.map +0 -1
  371. package/dist/languages/pt.js +0 -3
  372. package/dist/languages/pt.js.map +0 -1
  373. package/dist/languages/ro.js +0 -3
  374. package/dist/languages/ro.js.map +0 -1
  375. package/dist/languages/ru.js +0 -3
  376. package/dist/languages/ru.js.map +0 -1
  377. package/dist/languages/sr-Cyrl.js +0 -3
  378. package/dist/languages/sr-Cyrl.js.map +0 -1
  379. package/dist/languages/sr-Latn.js +0 -3
  380. package/dist/languages/sr-Latn.js.map +0 -1
  381. package/dist/languages/sv.js +0 -3
  382. package/dist/languages/sv.js.map +0 -1
  383. package/dist/languages/sw.js +0 -3
  384. package/dist/languages/sw.js.map +0 -1
  385. package/dist/languages/ta.js +0 -3
  386. package/dist/languages/ta.js.map +0 -1
  387. package/dist/languages/te.js +0 -3
  388. package/dist/languages/te.js.map +0 -1
  389. package/dist/languages/th.js +0 -3
  390. package/dist/languages/th.js.map +0 -1
  391. package/dist/languages/tr.js +0 -3
  392. package/dist/languages/tr.js.map +0 -1
  393. package/dist/languages/uk.js +0 -3
  394. package/dist/languages/uk.js.map +0 -1
  395. package/dist/languages/ur.js +0 -3
  396. package/dist/languages/ur.js.map +0 -1
  397. package/dist/languages/vi.js +0 -3
  398. package/dist/languages/vi.js.map +0 -1
  399. package/dist/languages/yo.js +0 -3
  400. package/dist/languages/yo.js.map +0 -1
  401. package/dist/languages/zh-Hans.js +0 -3
  402. package/dist/languages/zh-Hans.js.map +0 -1
  403. package/dist/languages/zh-Hant.js +0 -3
  404. package/dist/languages/zh-Hant.js.map +0 -1
  405. package/dist/n2words.js +0 -3
  406. package/dist/n2words.js.map +0 -1
  407. package/lib/languages/am-Latn.d.ts +0 -7
  408. package/lib/languages/am-Latn.js +0 -159
  409. package/lib/languages/am.d.ts +0 -7
  410. package/lib/languages/am.js +0 -159
  411. package/lib/languages/ar.d.ts +0 -17
  412. package/lib/languages/az.d.ts +0 -7
  413. package/lib/languages/az.js +0 -171
  414. package/lib/languages/bn.d.ts +0 -7
  415. package/lib/languages/cs.d.ts +0 -18
  416. package/lib/languages/da.d.ts +0 -14
  417. package/lib/languages/de.d.ts +0 -17
  418. package/lib/languages/de.js +0 -320
  419. package/lib/languages/el.d.ts +0 -14
  420. package/lib/languages/el.js +0 -236
  421. package/lib/languages/en.d.ts +0 -17
  422. package/lib/languages/es.d.ts +0 -21
  423. package/lib/languages/fa.d.ts +0 -7
  424. package/lib/languages/fa.js +0 -134
  425. package/lib/languages/fi.d.ts +0 -14
  426. package/lib/languages/fil.d.ts +0 -7
  427. package/lib/languages/fr-BE.d.ts +0 -11
  428. package/lib/languages/fr.d.ts +0 -21
  429. package/lib/languages/gu.d.ts +0 -7
  430. package/lib/languages/ha.d.ts +0 -7
  431. package/lib/languages/hbo.d.ts +0 -13
  432. package/lib/languages/he.d.ts +0 -13
  433. package/lib/languages/he.js +0 -265
  434. package/lib/languages/hi.d.ts +0 -7
  435. package/lib/languages/hr.d.ts +0 -11
  436. package/lib/languages/hr.js +0 -224
  437. package/lib/languages/hu.d.ts +0 -7
  438. package/lib/languages/id.d.ts +0 -7
  439. package/lib/languages/it.d.ts +0 -19
  440. package/lib/languages/ja.d.ts +0 -17
  441. package/lib/languages/ka.d.ts +0 -17
  442. package/lib/languages/kn.d.ts +0 -7
  443. package/lib/languages/ko.d.ts +0 -14
  444. package/lib/languages/lt.d.ts +0 -18
  445. package/lib/languages/lt.js +0 -301
  446. package/lib/languages/lv.d.ts +0 -18
  447. package/lib/languages/lv.js +0 -312
  448. package/lib/languages/mr.d.ts +0 -7
  449. package/lib/languages/ms.d.ts +0 -7
  450. package/lib/languages/nb.d.ts +0 -14
  451. package/lib/languages/nl.d.ts +0 -26
  452. package/lib/languages/pa.d.ts +0 -7
  453. package/lib/languages/pl.d.ts +0 -22
  454. package/lib/languages/pl.js +0 -317
  455. package/lib/languages/pt.d.ts +0 -17
  456. package/lib/languages/ro.d.ts +0 -18
  457. package/lib/languages/ru.d.ts +0 -11
  458. package/lib/languages/ru.js +0 -245
  459. package/lib/languages/sr-Cyrl.d.ts +0 -11
  460. package/lib/languages/sr-Cyrl.js +0 -221
  461. package/lib/languages/sr-Latn.d.ts +0 -11
  462. package/lib/languages/sr-Latn.js +0 -221
  463. package/lib/languages/sv.d.ts +0 -14
  464. package/lib/languages/sw.d.ts +0 -7
  465. package/lib/languages/ta.d.ts +0 -7
  466. package/lib/languages/te.d.ts +0 -7
  467. package/lib/languages/th.d.ts +0 -7
  468. package/lib/languages/tr.d.ts +0 -18
  469. package/lib/languages/uk.d.ts +0 -11
  470. package/lib/languages/uk.js +0 -224
  471. package/lib/languages/ur.d.ts +0 -7
  472. package/lib/languages/vi.d.ts +0 -17
  473. package/lib/languages/yo.d.ts +0 -7
  474. package/lib/languages/zh-Hans.d.ts +0 -11
  475. package/lib/languages/zh-Hant.d.ts +0 -11
  476. package/lib/n2words.d.ts +0 -55
  477. package/lib/n2words.js +0 -126
  478. package/lib/utils/parse-numeric.d.ts +0 -17
  479. /package/{lib → src}/utils/is-plain-object.d.ts +0 -0
  480. /package/{lib → src}/utils/is-plain-object.js +0 -0
  481. /package/{lib → src}/utils/validate-options.d.ts +0 -0
  482. /package/{lib → src}/utils/validate-options.js +0 -0
@@ -1,7 +1,7 @@
1
1
  /**
2
- * Swedish language converter - Functional Implementation
2
+ * Swedish (Sweden) language converter
3
3
  *
4
- * Self-contained module with its own input validation, ready for subpath exports.
4
+ * CLDR: sv-SE | Swedish as used in Sweden
5
5
  *
6
6
  * Key features:
7
7
  * - Hyphenation for tens-ones (tjugo-ett)
@@ -11,7 +11,9 @@
11
11
  * - Long scale naming with -ard forms
12
12
  */
13
13
 
14
- import { parseNumericValue } from '../utils/parse-numeric.js'
14
+ import { parseCardinalValue } from './utils/parse-cardinal.js'
15
+ import { parseCurrencyValue } from './utils/parse-currency.js'
16
+ import { parseOrdinalValue } from './utils/parse-ordinal.js'
15
17
 
16
18
  // ============================================================================
17
19
  // Vocabulary (module-level constants)
@@ -31,6 +33,35 @@ const DECIMAL_SEP = 'komma'
31
33
  // Scale words (long scale with -ard forms)
32
34
  const SCALES = ['tusen', 'miljon', 'miljard', 'biljon', 'biljard', 'triljon', 'triljard', 'kvadriljon']
33
35
 
36
+ // ============================================================================
37
+ // Ordinal Vocabulary
38
+ // ============================================================================
39
+
40
+ // Swedish ordinals: 1st-2nd use -a (första, andra), then -de suffix
41
+ // Numbers ending in 1, 2 (except 11, 12) use special forms
42
+ const ORDINAL_ONES = {
43
+ 1: 'första',
44
+ 2: 'andra',
45
+ 3: 'tredje',
46
+ 4: 'fjärde',
47
+ 5: 'femte',
48
+ 6: 'sjätte',
49
+ 7: 'sjunde',
50
+ 8: 'åttonde',
51
+ 9: 'nionde',
52
+ 10: 'tionde',
53
+ 11: 'elfte',
54
+ 12: 'tolfte'
55
+ }
56
+
57
+ // ============================================================================
58
+ // Currency Vocabulary (Swedish Krona)
59
+ // ============================================================================
60
+
61
+ const KRONA = 'krona'
62
+ const KRONOR = 'kronor' // plural
63
+ const ORE = 'öre' // same singular and plural
64
+
34
65
  // ============================================================================
35
66
  // Segment Building
36
67
  // ============================================================================
@@ -43,8 +74,8 @@ function buildSegment (n) {
43
74
  if (n === 0) return { word: '', hasHundred: false, lessThan100: false }
44
75
 
45
76
  const ones = n % 10
46
- const tens = Math.floor(n / 10) % 10
47
- const hundreds = Math.floor(n / 100)
77
+ const tens = Math.trunc(n / 10) % 10
78
+ const hundreds = Math.trunc(n / 100)
48
79
 
49
80
  const parts = []
50
81
  let hasHundred = false
@@ -265,12 +296,12 @@ function decimalPartToWords (decimalPart) {
265
296
  * @throws {Error} If value is not a valid number format
266
297
  *
267
298
  * @example
268
- * toWords(42) // 'fyrtio-två'
269
- * toWords(101) // 'hundra och ett'
270
- * toWords(1000000) // 'en miljon'
299
+ * toCardinal(42) // 'fyrtio-två'
300
+ * toCardinal(101) // 'hundra och ett'
301
+ * toCardinal(1000000) // 'en miljon'
271
302
  */
272
- function toWords (value) {
273
- const { isNegative, integerPart, decimalPart } = parseNumericValue(value)
303
+ function toCardinal (value) {
304
+ const { isNegative, integerPart, decimalPart } = parseCardinalValue(value)
274
305
 
275
306
  let result = ''
276
307
 
@@ -287,8 +318,102 @@ function toWords (value) {
287
318
  return result
288
319
  }
289
320
 
321
+ // ============================================================================
322
+ // ORDINAL: toOrdinal(value)
323
+ // ============================================================================
324
+
325
+ /**
326
+ * Converts a non-negative integer to Swedish ordinal words.
327
+ *
328
+ * Swedish ordinals: första (1st), andra (2nd), tredje (3rd), etc.
329
+ * Most use cardinal + de suffix, with special forms 1-12.
330
+ *
331
+ * @param {bigint} n - Positive integer to convert
332
+ * @returns {string} Swedish ordinal words
333
+ */
334
+ function integerToOrdinal (n) {
335
+ // Special forms for 1-12
336
+ if (n >= 1n && n <= 12n) {
337
+ return ORDINAL_ONES[Number(n)]
338
+ }
339
+
340
+ // For numbers > 12, add -de suffix to cardinal
341
+ // But need to handle endings in 1, 2 specially
342
+ const cardinal = integerToWords(n)
343
+
344
+ // Numbers ending in ett -> första pattern not used for compound
345
+ // Swedish ordinals mostly add -de for >12
346
+ return cardinal + 'de'
347
+ }
348
+
349
+ /**
350
+ * Converts a numeric value to Swedish ordinal words.
351
+ *
352
+ * @param {number | string | bigint} value - The numeric value to convert (positive integer)
353
+ * @returns {string} The number as ordinal words
354
+ * @throws {TypeError} If value is not a valid numeric type
355
+ * @throws {RangeError} If value is negative, zero, or has a decimal part
356
+ *
357
+ * @example
358
+ * toOrdinal(1) // 'första'
359
+ * toOrdinal(2) // 'andra'
360
+ * toOrdinal(21) // 'tjugo-ettde'
361
+ */
362
+ function toOrdinal (value) {
363
+ const integerPart = parseOrdinalValue(value)
364
+ return integerToOrdinal(integerPart)
365
+ }
366
+
367
+ // ============================================================================
368
+ // CURRENCY: toCurrency(value)
369
+ // ============================================================================
370
+
371
+ /**
372
+ * Converts a numeric value to Swedish currency words (Swedish Krona).
373
+ *
374
+ * Uses krona/kronor and öre (100 öre = 1 krona).
375
+ *
376
+ * @param {number | string | bigint} value - The currency amount to convert
377
+ * @returns {string} The amount in Swedish currency words
378
+ * @throws {TypeError} If value is not a valid numeric type
379
+ * @throws {Error} If value is not a valid number format
380
+ *
381
+ * @example
382
+ * toCurrency(1) // 'en krona'
383
+ * toCurrency(42) // 'fyrtio-två kronor'
384
+ * toCurrency(1.50) // 'en krona och femtio öre'
385
+ */
386
+ function toCurrency (value) {
387
+ const { isNegative, dollars: kronor, cents: ore } = parseCurrencyValue(value)
388
+
389
+ let result = ''
390
+ if (isNegative) {
391
+ result = NEGATIVE + ' '
392
+ }
393
+
394
+ // Kronor part
395
+ if (kronor > 0n || ore === 0n) {
396
+ // Use "en" for 1 krona (not "ett")
397
+ if (kronor === 1n) {
398
+ result += 'en ' + KRONA
399
+ } else {
400
+ result += integerToWords(kronor) + ' ' + KRONOR
401
+ }
402
+ }
403
+
404
+ // Öre part
405
+ if (ore > 0n) {
406
+ if (kronor > 0n) {
407
+ result += ' och '
408
+ }
409
+ result += integerToWords(ore) + ' ' + ORE
410
+ }
411
+
412
+ return result
413
+ }
414
+
290
415
  // ============================================================================
291
416
  // Public API
292
417
  // ============================================================================
293
418
 
294
- export { toWords }
419
+ export { toCardinal, toOrdinal, toCurrency }
package/src/sw-KE.d.ts ADDED
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Converts a numeric value to Swahili words.
3
+ *
4
+ * @param {number | string | bigint} value - The numeric value to convert
5
+ * @returns {string} The number in Swahili words
6
+ */
7
+ export function toCardinal(value: number | string | bigint): string;
8
+ /**
9
+ * Converts a numeric value to Swahili ordinal words.
10
+ *
11
+ * @param {number | string | bigint} value - The numeric value to convert (positive integer)
12
+ * @returns {string} The number as ordinal words
13
+ * @throws {TypeError} If value is not a valid numeric type
14
+ * @throws {RangeError} If value is negative, zero, or has a decimal part
15
+ *
16
+ * @example
17
+ * toOrdinal(1) // 'wa kwanza'
18
+ * toOrdinal(2) // 'wa pili'
19
+ * toOrdinal(10) // 'wa kumi'
20
+ */
21
+ export function toOrdinal(value: number | string | bigint): string;
22
+ /**
23
+ * Converts a numeric value to Swahili currency words (Kenyan Shilling).
24
+ *
25
+ * Uses shilingi and senti (100 senti = 1 shilingi).
26
+ *
27
+ * @param {number | string | bigint} value - The currency amount to convert
28
+ * @returns {string} The amount in Swahili currency words
29
+ * @throws {TypeError} If value is not a valid numeric type
30
+ * @throws {Error} If value is not a valid number format
31
+ *
32
+ * @example
33
+ * toCurrency(42) // 'shilingi arobaini na mbili'
34
+ * toCurrency(1.50) // 'shilingi moja na senti hamsini'
35
+ * toCurrency(-5) // 'minus shilingi tano'
36
+ */
37
+ export function toCurrency(value: number | string | bigint): string;
@@ -1,7 +1,7 @@
1
1
  /**
2
- * Swahili language converter - Functional Implementation
2
+ * Swahili (Kenya) language converter
3
3
  *
4
- * Self-contained converter with precomputed lookup tables.
4
+ * CLDR: sw-KE | Swahili as used in Kenya
5
5
  *
6
6
  * Key features:
7
7
  * - "na" connector for compound numbers
@@ -9,7 +9,9 @@
9
9
  * - Scale words: elfu, milioni, bilioni
10
10
  */
11
11
 
12
- import { parseNumericValue } from '../utils/parse-numeric.js'
12
+ import { parseCardinalValue } from './utils/parse-cardinal.js'
13
+ import { parseCurrencyValue } from './utils/parse-currency.js'
14
+ import { parseOrdinalValue } from './utils/parse-ordinal.js'
13
15
 
14
16
  // ============================================================================
15
17
  // Vocabulary
@@ -24,6 +26,32 @@ const ZERO = 'sifuri'
24
26
  const NEGATIVE = 'minus'
25
27
  const DECIMAL_SEP = 'nukta'
26
28
 
29
+ // ============================================================================
30
+ // Ordinal Vocabulary
31
+ // ============================================================================
32
+
33
+ // Swahili ordinals use "wa" + cardinal: wa kwanza (1st), wa pili (2nd)
34
+ // First few have special forms
35
+ const ORDINAL_ONES = {
36
+ 1: 'wa kwanza',
37
+ 2: 'wa pili',
38
+ 3: 'wa tatu',
39
+ 4: 'wa nne',
40
+ 5: 'wa tano',
41
+ 6: 'wa sita',
42
+ 7: 'wa saba',
43
+ 8: 'wa nane',
44
+ 9: 'wa tisa'
45
+ }
46
+ const ORDINAL_PREFIX = 'wa'
47
+
48
+ // ============================================================================
49
+ // Currency Vocabulary (Kenyan Shilling)
50
+ // ============================================================================
51
+
52
+ const SHILLING = 'shilingi'
53
+ const CENT = 'senti'
54
+
27
55
  // ============================================================================
28
56
  // Conversion Functions
29
57
  // ============================================================================
@@ -128,8 +156,8 @@ function decimalPartToWords (decimalPart) {
128
156
  * @param {number | string | bigint} value - The numeric value to convert
129
157
  * @returns {string} The number in Swahili words
130
158
  */
131
- function toWords (value) {
132
- const { isNegative, integerPart, decimalPart } = parseNumericValue(value)
159
+ function toCardinal (value) {
160
+ const { isNegative, integerPart, decimalPart } = parseCardinalValue(value)
133
161
 
134
162
  let result = ''
135
163
 
@@ -146,8 +174,91 @@ function toWords (value) {
146
174
  return result
147
175
  }
148
176
 
177
+ // ============================================================================
178
+ // ORDINAL: toOrdinal(value)
179
+ // ============================================================================
180
+
181
+ /**
182
+ * Converts a non-negative integer to Swahili ordinal words.
183
+ *
184
+ * Swahili ordinals: wa kwanza (1st), wa pili (2nd), wa tatu (3rd), etc.
185
+ *
186
+ * @param {bigint} n - Positive integer to convert
187
+ * @returns {string} Swahili ordinal words
188
+ */
189
+ function integerToOrdinal (n) {
190
+ // Special forms for 1-9
191
+ if (n >= 1n && n <= 9n) {
192
+ return ORDINAL_ONES[Number(n)]
193
+ }
194
+
195
+ // For 10+, use "wa" prefix + cardinal
196
+ return ORDINAL_PREFIX + ' ' + integerToWords(n)
197
+ }
198
+
199
+ /**
200
+ * Converts a numeric value to Swahili ordinal words.
201
+ *
202
+ * @param {number | string | bigint} value - The numeric value to convert (positive integer)
203
+ * @returns {string} The number as ordinal words
204
+ * @throws {TypeError} If value is not a valid numeric type
205
+ * @throws {RangeError} If value is negative, zero, or has a decimal part
206
+ *
207
+ * @example
208
+ * toOrdinal(1) // 'wa kwanza'
209
+ * toOrdinal(2) // 'wa pili'
210
+ * toOrdinal(10) // 'wa kumi'
211
+ */
212
+ function toOrdinal (value) {
213
+ const integerPart = parseOrdinalValue(value)
214
+ return integerToOrdinal(integerPart)
215
+ }
216
+
217
+ // ============================================================================
218
+ // CURRENCY: toCurrency(value)
219
+ // ============================================================================
220
+
221
+ /**
222
+ * Converts a numeric value to Swahili currency words (Kenyan Shilling).
223
+ *
224
+ * Uses shilingi and senti (100 senti = 1 shilingi).
225
+ *
226
+ * @param {number | string | bigint} value - The currency amount to convert
227
+ * @returns {string} The amount in Swahili currency words
228
+ * @throws {TypeError} If value is not a valid numeric type
229
+ * @throws {Error} If value is not a valid number format
230
+ *
231
+ * @example
232
+ * toCurrency(42) // 'shilingi arobaini na mbili'
233
+ * toCurrency(1.50) // 'shilingi moja na senti hamsini'
234
+ * toCurrency(-5) // 'minus shilingi tano'
235
+ */
236
+ function toCurrency (value) {
237
+ const { isNegative, dollars: shillings, cents: senti } = parseCurrencyValue(value)
238
+
239
+ let result = ''
240
+ if (isNegative) {
241
+ result = NEGATIVE + ' '
242
+ }
243
+
244
+ // Shillings part
245
+ if (shillings > 0n || senti === 0n) {
246
+ result += SHILLING + ' ' + integerToWords(shillings)
247
+ }
248
+
249
+ // Senti part
250
+ if (senti > 0n) {
251
+ if (shillings > 0n) {
252
+ result += ' na '
253
+ }
254
+ result += CENT + ' ' + integerToWords(senti)
255
+ }
256
+
257
+ return result
258
+ }
259
+
149
260
  // ============================================================================
150
261
  // Exports
151
262
  // ============================================================================
152
263
 
153
- export { toWords }
264
+ export { toCardinal, toOrdinal, toCurrency }
package/src/ta-IN.d.ts ADDED
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Converts a numeric value to Tamil words.
3
+ *
4
+ * @param {number | string | bigint} value - The numeric value to convert
5
+ * @returns {string} The number in Tamil words
6
+ */
7
+ export function toCardinal(value: number | string | bigint): string;
8
+ /**
9
+ * Converts a numeric value to Tamil ordinal words.
10
+ *
11
+ * @param {number | string | bigint} value - The numeric value to convert (positive integer)
12
+ * @returns {string} The number as ordinal words
13
+ * @throws {TypeError} If value is not a valid numeric type
14
+ * @throws {RangeError} If value is negative, zero, or has a decimal part
15
+ *
16
+ * @example
17
+ * toOrdinal(1) // 'முதல்'
18
+ * toOrdinal(2) // 'இரண்டாவது'
19
+ * toOrdinal(10) // 'பத்துஆவது'
20
+ */
21
+ export function toOrdinal(value: number | string | bigint): string;
22
+ /**
23
+ * Converts a numeric value to Tamil currency words (Indian Rupee).
24
+ *
25
+ * @param {number | string | bigint} value - The currency amount to convert
26
+ * @returns {string} The amount in Tamil currency words
27
+ * @throws {TypeError} If value is not a valid numeric type
28
+ * @throws {Error} If value is not a valid number format
29
+ *
30
+ * @example
31
+ * toCurrency(42.50) // 'நாற்பத்திரண்டு ரூபாய் ஐம்பது பைசா'
32
+ * toCurrency(1) // 'ஒன்று ரூபாய்'
33
+ * toCurrency(0.01) // 'ஒன்று பைசா'
34
+ */
35
+ export function toCurrency(value: number | string | bigint): string;
@@ -1,7 +1,7 @@
1
1
  /**
2
- * Tamil language converter - Functional Implementation
2
+ * Tamil (India) language converter
3
3
  *
4
- * Self-contained module with its own input validation, ready for subpath exports.
4
+ * CLDR: ta-IN | Tamil as used in India
5
5
  *
6
6
  * Key features:
7
7
  * - Indian numbering system (ஆயிரம், லட்சம், கோடி)
@@ -13,7 +13,9 @@
13
13
  * - BigInt modulo for efficient segment extraction
14
14
  */
15
15
 
16
- import { parseNumericValue } from '../utils/parse-numeric.js'
16
+ import { parseCardinalValue } from './utils/parse-cardinal.js'
17
+ import { parseCurrencyValue } from './utils/parse-currency.js'
18
+ import { parseOrdinalValue } from './utils/parse-ordinal.js'
17
19
 
18
20
  // ============================================================================
19
21
  // Vocabulary
@@ -23,6 +25,26 @@ const ZERO = 'பூஜ்ஜியம்'
23
25
  const NEGATIVE = 'மைனஸ்'
24
26
  const DECIMAL_SEP = 'புள்ளி'
25
27
 
28
+ // ============================================================================
29
+ // Ordinal Vocabulary
30
+ // ============================================================================
31
+
32
+ // Ordinal suffix
33
+ const ORDINAL_SUFFIX = 'ஆவது'
34
+
35
+ // Special ordinals for first few numbers
36
+ const ORDINAL_SPECIAL = ['', 'முதல்', 'இரண்டாவது', 'மூன்றாவது', 'நான்காவது', 'ஐந்தாவது', 'ஆறாவது']
37
+
38
+ // ============================================================================
39
+ // Currency Vocabulary (Indian Rupee)
40
+ // ============================================================================
41
+
42
+ // Rupee (singular/plural same in Tamil)
43
+ const RUPEE = 'ரூபாய்'
44
+
45
+ // Paisa (singular/plural same in Tamil)
46
+ const PAISA = 'பைசா'
47
+
26
48
  const BELOW_HUNDRED = [
27
49
  'பூஜ்ஜியம்', 'ஒன்று', 'இரண்டு', 'மூன்று', 'நான்கு', 'ஐந்து', 'ஆறு', 'ஏழு', 'எட்டு', 'ஒன்பது',
28
50
  'பத்து', 'பதினொன்று', 'பன்னிரண்டு', 'பதிமூன்று', 'பதினான்கு', 'பதினைந்து', 'பதினாறு', 'பதினேழு', 'பதினெட்டு', 'பத்தொன்பது',
@@ -142,8 +164,8 @@ function decimalPartToWords (decimalPart) {
142
164
  * @param {number | string | bigint} value - The numeric value to convert
143
165
  * @returns {string} The number in Tamil words
144
166
  */
145
- function toWords (value) {
146
- const { isNegative, integerPart, decimalPart } = parseNumericValue(value)
167
+ function toCardinal (value) {
168
+ const { isNegative, integerPart, decimalPart } = parseCardinalValue(value)
147
169
 
148
170
  let result = ''
149
171
 
@@ -160,8 +182,89 @@ function toWords (value) {
160
182
  return result
161
183
  }
162
184
 
185
+ // ============================================================================
186
+ // ORDINAL: toOrdinal(value)
187
+ // ============================================================================
188
+
189
+ /**
190
+ * Converts a positive integer to Tamil ordinal words.
191
+ *
192
+ * Tamil ordinals: First has special form, 2-6 have special suffixes, then -ஆவது suffix.
193
+ *
194
+ * @param {bigint} n - Positive integer to convert
195
+ * @returns {string} Tamil ordinal words
196
+ */
197
+ function integerToOrdinal (n) {
198
+ // Special ordinals for 1-6
199
+ if (n >= 1n && n <= 6n) {
200
+ return ORDINAL_SPECIAL[Number(n)]
201
+ }
202
+
203
+ // For 7 and above, add suffix to cardinal
204
+ const cardinal = integerToWords(n)
205
+ return cardinal + ORDINAL_SUFFIX
206
+ }
207
+
208
+ /**
209
+ * Converts a numeric value to Tamil ordinal words.
210
+ *
211
+ * @param {number | string | bigint} value - The numeric value to convert (positive integer)
212
+ * @returns {string} The number as ordinal words
213
+ * @throws {TypeError} If value is not a valid numeric type
214
+ * @throws {RangeError} If value is negative, zero, or has a decimal part
215
+ *
216
+ * @example
217
+ * toOrdinal(1) // 'முதல்'
218
+ * toOrdinal(2) // 'இரண்டாவது'
219
+ * toOrdinal(10) // 'பத்துஆவது'
220
+ */
221
+ function toOrdinal (value) {
222
+ const integerPart = parseOrdinalValue(value)
223
+ return integerToOrdinal(integerPart)
224
+ }
225
+
226
+ // ============================================================================
227
+ // CURRENCY: toCurrency(value, options?)
228
+ // ============================================================================
229
+
230
+ /**
231
+ * Converts a numeric value to Tamil currency words (Indian Rupee).
232
+ *
233
+ * @param {number | string | bigint} value - The currency amount to convert
234
+ * @returns {string} The amount in Tamil currency words
235
+ * @throws {TypeError} If value is not a valid numeric type
236
+ * @throws {Error} If value is not a valid number format
237
+ *
238
+ * @example
239
+ * toCurrency(42.50) // 'நாற்பத்திரண்டு ரூபாய் ஐம்பது பைசா'
240
+ * toCurrency(1) // 'ஒன்று ரூபாய்'
241
+ * toCurrency(0.01) // 'ஒன்று பைசா'
242
+ */
243
+ function toCurrency (value) {
244
+ const { isNegative, dollars: rupees, cents: paise } = parseCurrencyValue(value)
245
+
246
+ // Build result
247
+ let result = ''
248
+ if (isNegative) result = NEGATIVE + ' '
249
+
250
+ // Rupees part - show if non-zero, or if no paise
251
+ if (rupees > 0n || paise === 0n) {
252
+ result += integerToWords(rupees) + ' ' + RUPEE
253
+ }
254
+
255
+ // Paise part
256
+ if (paise > 0n) {
257
+ if (rupees > 0n) {
258
+ result += ' '
259
+ }
260
+ result += integerToWords(paise) + ' ' + PAISA
261
+ }
262
+
263
+ return result
264
+ }
265
+
163
266
  // ============================================================================
164
267
  // Exports
165
268
  // ============================================================================
166
269
 
167
- export { toWords }
270
+ export { toCardinal, toOrdinal, toCurrency }
package/src/te-IN.d.ts ADDED
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Converts a numeric value to Telugu words.
3
+ *
4
+ * @param {number | string | bigint} value - The numeric value to convert
5
+ * @returns {string} The number in Telugu words
6
+ */
7
+ export function toCardinal(value: number | string | bigint): string;
8
+ /**
9
+ * Converts a numeric value to Telugu ordinal words.
10
+ *
11
+ * @param {number | string | bigint} value - The numeric value to convert (positive integer)
12
+ * @returns {string} The number as ordinal words
13
+ * @throws {TypeError} If value is not a valid numeric type
14
+ * @throws {RangeError} If value is negative, zero, or has a decimal part
15
+ *
16
+ * @example
17
+ * toOrdinal(1) // 'మొదటి'
18
+ * toOrdinal(2) // 'రెండవ'
19
+ * toOrdinal(10) // 'పదివ'
20
+ */
21
+ export function toOrdinal(value: number | string | bigint): string;
22
+ /**
23
+ * Converts a numeric value to Telugu currency words (Indian Rupee).
24
+ *
25
+ * @param {number | string | bigint} value - The currency amount to convert
26
+ * @returns {string} The amount in Telugu currency words
27
+ * @throws {TypeError} If value is not a valid numeric type
28
+ * @throws {Error} If value is not a valid number format
29
+ *
30
+ * @example
31
+ * toCurrency(42.50) // 'నలభై రెండు రూపాయలు యాభై పైసలు'
32
+ * toCurrency(1) // 'ఒకటి రూపాయి'
33
+ * toCurrency(0.01) // 'ఒకటి పైసా'
34
+ */
35
+ export function toCurrency(value: number | string | bigint): string;