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.
- package/CHANGELOG.md +44 -0
- package/LICENSE +1 -1
- package/README.md +64 -184
- package/dist/am-ET.js +2 -0
- package/dist/am-ET.umd.js +2 -0
- package/dist/am-Latn-ET.js +2 -0
- package/dist/am-Latn-ET.umd.js +2 -0
- package/dist/ar-SA.js +2 -0
- package/dist/ar-SA.umd.js +2 -0
- package/dist/az-AZ.js +2 -0
- package/dist/az-AZ.umd.js +2 -0
- package/dist/bn-BD.js +2 -0
- package/dist/bn-BD.umd.js +2 -0
- package/dist/cs-CZ.js +2 -0
- package/dist/cs-CZ.umd.js +2 -0
- package/dist/da-DK.js +2 -0
- package/dist/da-DK.umd.js +2 -0
- package/dist/de-DE.js +2 -0
- package/dist/de-DE.umd.js +2 -0
- package/dist/el-GR.js +2 -0
- package/dist/el-GR.umd.js +2 -0
- package/dist/en-AU.js +2 -0
- package/dist/en-AU.umd.js +2 -0
- package/dist/en-BD.js +2 -0
- package/dist/en-BD.umd.js +2 -0
- package/dist/en-CA.js +2 -0
- package/dist/en-CA.umd.js +2 -0
- package/dist/en-GB.js +2 -0
- package/dist/en-GB.umd.js +2 -0
- package/dist/en-GH.js +2 -0
- package/dist/en-GH.umd.js +2 -0
- package/dist/en-IE.js +2 -0
- package/dist/en-IE.umd.js +2 -0
- package/dist/en-IN.js +2 -0
- package/dist/en-IN.umd.js +2 -0
- package/dist/en-KE.js +2 -0
- package/dist/en-KE.umd.js +2 -0
- package/dist/en-MY.js +2 -0
- package/dist/en-MY.umd.js +2 -0
- package/dist/en-NG.js +2 -0
- package/dist/en-NG.umd.js +2 -0
- package/dist/en-NZ.js +2 -0
- package/dist/en-NZ.umd.js +2 -0
- package/dist/en-PH.js +2 -0
- package/dist/en-PH.umd.js +2 -0
- package/dist/en-PK.js +2 -0
- package/dist/en-PK.umd.js +2 -0
- package/dist/en-SG.js +2 -0
- package/dist/en-SG.umd.js +2 -0
- package/dist/en-US.js +2 -0
- package/dist/en-US.umd.js +2 -0
- package/dist/en-ZA.js +2 -0
- package/dist/en-ZA.umd.js +2 -0
- package/dist/es-ES.js +2 -0
- package/dist/es-ES.umd.js +2 -0
- package/dist/es-MX.js +2 -0
- package/dist/es-MX.umd.js +2 -0
- package/dist/es-US.js +2 -0
- package/dist/es-US.umd.js +2 -0
- package/dist/fa-IR.js +2 -0
- package/dist/fa-IR.umd.js +2 -0
- package/dist/fi-FI.js +2 -0
- package/dist/fi-FI.umd.js +2 -0
- package/dist/fil-PH.js +2 -0
- package/dist/fil-PH.umd.js +2 -0
- package/dist/fr-BE.js +2 -0
- package/dist/fr-BE.umd.js +2 -0
- package/dist/fr-FR.js +2 -0
- package/dist/fr-FR.umd.js +2 -0
- package/dist/gu-IN.js +2 -0
- package/dist/gu-IN.umd.js +2 -0
- package/dist/ha-NG.js +2 -0
- package/dist/ha-NG.umd.js +2 -0
- package/dist/hbo-IL.js +2 -0
- package/dist/hbo-IL.umd.js +2 -0
- package/dist/he-IL.js +2 -0
- package/dist/he-IL.umd.js +2 -0
- package/dist/hi-IN.js +2 -0
- package/dist/hi-IN.umd.js +2 -0
- package/dist/hr-HR.js +2 -0
- package/dist/hr-HR.umd.js +2 -0
- package/dist/hu-HU.js +2 -0
- package/dist/hu-HU.umd.js +2 -0
- package/dist/id-ID.js +2 -0
- package/dist/id-ID.umd.js +2 -0
- package/dist/it-IT.js +2 -0
- package/dist/it-IT.umd.js +2 -0
- package/dist/ja-JP.js +2 -0
- package/dist/ja-JP.umd.js +2 -0
- package/dist/ka-GE.js +2 -0
- package/dist/ka-GE.umd.js +2 -0
- package/dist/kn-IN.js +2 -0
- package/dist/kn-IN.umd.js +2 -0
- package/dist/ko-KR.js +2 -0
- package/dist/ko-KR.umd.js +2 -0
- package/dist/lt-LT.js +2 -0
- package/dist/lt-LT.umd.js +2 -0
- package/dist/lv-LV.js +2 -0
- package/dist/lv-LV.umd.js +2 -0
- package/dist/mr-IN.js +2 -0
- package/dist/mr-IN.umd.js +2 -0
- package/dist/ms-MY.js +2 -0
- package/dist/ms-MY.umd.js +2 -0
- package/dist/nb-NO.js +2 -0
- package/dist/nb-NO.umd.js +2 -0
- package/dist/nl-NL.js +2 -0
- package/dist/nl-NL.umd.js +2 -0
- package/dist/pa-IN.js +2 -0
- package/dist/pa-IN.umd.js +2 -0
- package/dist/pl-PL.js +2 -0
- package/dist/pl-PL.umd.js +2 -0
- package/dist/pt-PT.js +2 -0
- package/dist/pt-PT.umd.js +2 -0
- package/dist/ro-RO.js +2 -0
- package/dist/ro-RO.umd.js +2 -0
- package/dist/ru-RU.js +2 -0
- package/dist/ru-RU.umd.js +2 -0
- package/dist/sr-Cyrl-RS.js +2 -0
- package/dist/sr-Cyrl-RS.umd.js +2 -0
- package/dist/sr-Latn-RS.js +2 -0
- package/dist/sr-Latn-RS.umd.js +2 -0
- package/dist/sv-SE.js +2 -0
- package/dist/sv-SE.umd.js +2 -0
- package/dist/sw-KE.js +2 -0
- package/dist/sw-KE.umd.js +2 -0
- package/dist/ta-IN.js +2 -0
- package/dist/ta-IN.umd.js +2 -0
- package/dist/te-IN.js +2 -0
- package/dist/te-IN.umd.js +2 -0
- package/dist/th-TH.js +2 -0
- package/dist/th-TH.umd.js +2 -0
- package/dist/tr-TR.js +2 -0
- package/dist/tr-TR.umd.js +2 -0
- package/dist/uk-UA.js +2 -0
- package/dist/uk-UA.umd.js +2 -0
- package/dist/ur-PK.js +2 -0
- package/dist/ur-PK.umd.js +2 -0
- package/dist/vi-VN.js +2 -0
- package/dist/vi-VN.umd.js +2 -0
- package/dist/yo-NG.js +2 -0
- package/dist/yo-NG.umd.js +2 -0
- package/dist/zh-Hans-CN.js +2 -0
- package/dist/zh-Hans-CN.umd.js +2 -0
- package/dist/zh-Hant-TW.js +2 -0
- package/dist/zh-Hant-TW.umd.js +2 -0
- package/package.json +47 -82
- package/src/am-ET.d.ts +40 -0
- package/src/am-ET.js +269 -0
- package/src/am-Latn-ET.d.ts +35 -0
- package/src/am-Latn-ET.js +264 -0
- package/src/ar-SA.d.ts +49 -0
- package/{lib/languages/ar.js → src/ar-SA.js} +177 -15
- package/src/az-AZ.d.ts +37 -0
- package/src/az-AZ.js +312 -0
- package/src/bn-BD.d.ts +36 -0
- package/{lib/languages/bn.js → src/bn-BD.js} +110 -6
- package/src/cs-CZ.d.ts +49 -0
- package/{lib/languages/cs.js → src/cs-CZ.js} +240 -14
- package/src/da-DK.d.ts +44 -0
- package/{lib/languages/da.js → src/da-DK.js} +131 -11
- package/src/de-DE.d.ts +57 -0
- package/src/de-DE.js +603 -0
- package/src/el-GR.d.ts +40 -0
- package/src/el-GR.js +418 -0
- package/src/en-AU.d.ts +47 -0
- package/src/en-AU.js +423 -0
- package/src/en-BD.d.ts +49 -0
- package/src/en-BD.js +415 -0
- package/src/en-CA.d.ts +63 -0
- package/src/en-CA.js +518 -0
- package/src/en-GB.d.ts +56 -0
- package/src/en-GB.js +469 -0
- package/src/en-GH.d.ts +11 -0
- package/src/en-GH.js +345 -0
- package/src/en-IE.d.ts +56 -0
- package/src/en-IE.js +479 -0
- package/src/en-IN.d.ts +49 -0
- package/src/en-IN.js +415 -0
- package/src/en-KE.d.ts +11 -0
- package/src/en-KE.js +345 -0
- package/src/en-MY.d.ts +11 -0
- package/src/en-MY.js +347 -0
- package/src/en-NG.d.ts +56 -0
- package/src/en-NG.js +479 -0
- package/src/en-NZ.d.ts +11 -0
- package/{lib/languages/en.js → src/en-NZ.js} +164 -31
- package/src/en-PH.d.ts +11 -0
- package/src/en-PH.js +345 -0
- package/src/en-PK.d.ts +49 -0
- package/src/en-PK.js +415 -0
- package/src/en-SG.d.ts +11 -0
- package/src/en-SG.js +345 -0
- package/src/en-US.d.ts +63 -0
- package/src/en-US.js +516 -0
- package/src/en-ZA.d.ts +56 -0
- package/src/en-ZA.js +478 -0
- package/src/es-ES.d.ts +65 -0
- package/src/es-ES.js +541 -0
- package/src/es-MX.d.ts +58 -0
- package/{lib/languages/es.js → src/es-MX.js} +228 -18
- package/src/es-US.d.ts +58 -0
- package/src/es-US.js +446 -0
- package/src/fa-IR.d.ts +38 -0
- package/src/fa-IR.js +246 -0
- package/src/fi-FI.d.ts +46 -0
- package/{lib/languages/fi.js → src/fi-FI.js} +152 -11
- package/src/fil-PH.d.ts +37 -0
- package/{lib/languages/fil.js → src/fil-PH.js} +144 -8
- package/src/fr-BE.d.ts +49 -0
- package/{lib/languages → src}/fr-BE.js +175 -13
- package/src/fr-FR.d.ts +63 -0
- package/{lib/languages/fr.js → src/fr-FR.js} +182 -16
- package/src/gu-IN.d.ts +35 -0
- package/{lib/languages/gu.js → src/gu-IN.js} +115 -6
- package/src/ha-NG.d.ts +37 -0
- package/{lib/languages/ha.js → src/ha-NG.js} +107 -8
- package/src/hbo-IL.d.ts +39 -0
- package/{lib/languages/hbo.js → src/hbo-IL.js} +211 -19
- package/src/he-IL.d.ts +37 -0
- package/src/he-IL.js +537 -0
- package/src/hi-IN.d.ts +36 -0
- package/{lib/languages/hi.js → src/hi-IN.js} +116 -6
- package/src/hr-HR.d.ts +42 -0
- package/src/hr-HR.js +463 -0
- package/src/hu-HU.d.ts +38 -0
- package/{lib/languages/hu.js → src/hu-HU.js} +164 -6
- package/src/id-ID.d.ts +38 -0
- package/{lib/languages/id.js → src/id-ID.js} +99 -8
- package/src/it-IT.d.ts +59 -0
- package/{lib/languages/it.js → src/it-IT.js} +179 -15
- package/src/ja-JP.d.ts +49 -0
- package/{lib/languages/ja.js → src/ja-JP.js} +111 -12
- package/src/ka-GE.d.ts +44 -0
- package/{lib/languages/ka.js → src/ka-GE.js} +113 -11
- package/src/kn-IN.d.ts +35 -0
- package/{lib/languages/kn.js → src/kn-IN.js} +115 -6
- package/src/ko-KR.d.ts +45 -0
- package/{lib/languages/ko.js → src/ko-KR.js} +94 -12
- package/src/lt-LT.d.ts +49 -0
- package/src/lt-LT.js +543 -0
- package/src/lv-LV.d.ts +49 -0
- package/src/lv-LV.js +595 -0
- package/src/mr-IN.d.ts +36 -0
- package/{lib/languages/mr.js → src/mr-IN.js} +116 -6
- package/src/ms-MY.d.ts +37 -0
- package/{lib/languages/ms.js → src/ms-MY.js} +111 -8
- package/src/nb-NO.d.ts +44 -0
- package/{lib/languages/nb.js → src/nb-NO.js} +153 -11
- package/src/nl-NL.d.ts +54 -0
- package/{lib/languages/nl.js → src/nl-NL.js} +260 -18
- package/src/pa-IN.d.ts +36 -0
- package/{lib/languages/pa.js → src/pa-IN.js} +116 -6
- package/src/pl-PL.d.ts +55 -0
- package/src/pl-PL.js +585 -0
- package/src/pt-PT.d.ts +45 -0
- package/{lib/languages/pt.js → src/pt-PT.js} +234 -12
- package/src/ro-RO.d.ts +44 -0
- package/{lib/languages/ro.js → src/ro-RO.js} +212 -18
- package/src/ru-RU.d.ts +50 -0
- package/src/ru-RU.js +535 -0
- package/src/sr-Cyrl-RS.d.ts +49 -0
- package/src/sr-Cyrl-RS.js +503 -0
- package/src/sr-Latn-RS.d.ts +49 -0
- package/src/sr-Latn-RS.js +503 -0
- package/src/sv-SE.d.ts +44 -0
- package/{lib/languages/sv.js → src/sv-SE.js} +136 -11
- package/src/sw-KE.d.ts +37 -0
- package/{lib/languages/sw.js → src/sw-KE.js} +117 -6
- package/src/ta-IN.d.ts +35 -0
- package/{lib/languages/ta.js → src/ta-IN.js} +109 -6
- package/src/te-IN.d.ts +35 -0
- package/{lib/languages/te.js → src/te-IN.js} +115 -6
- package/src/th-TH.d.ts +38 -0
- package/{lib/languages/th.js → src/th-TH.js} +99 -6
- package/src/tr-TR.d.ts +48 -0
- package/{lib/languages/tr.js → src/tr-TR.js} +168 -23
- package/src/uk-UA.d.ts +42 -0
- package/src/uk-UA.js +463 -0
- package/src/ur-PK.d.ts +36 -0
- package/{lib/languages/ur.js → src/ur-PK.js} +116 -6
- package/src/utils/expand-scientific.d.ts +32 -0
- package/src/utils/expand-scientific.js +65 -0
- package/src/utils/parse-cardinal.d.ts +14 -0
- package/{lib/utils/parse-numeric.js → src/utils/parse-cardinal.js} +14 -44
- package/src/utils/parse-currency.d.ts +14 -0
- package/src/utils/parse-currency.js +91 -0
- package/src/utils/parse-ordinal.d.ts +10 -0
- package/src/utils/parse-ordinal.js +103 -0
- package/src/vi-VN.d.ts +48 -0
- package/{lib/languages/vi.js → src/vi-VN.js} +102 -11
- package/src/yo-NG.d.ts +37 -0
- package/{lib/languages/yo.js → src/yo-NG.js} +109 -9
- package/src/zh-Hans-CN.d.ts +48 -0
- package/{lib/languages/zh-Hans.js → src/zh-Hans-CN.js} +140 -8
- package/src/zh-Hant-TW.d.ts +50 -0
- package/{lib/languages/zh-Hant.js → src/zh-Hant-TW.js} +139 -8
- package/dist/languages/am-Latn.js +0 -3
- package/dist/languages/am-Latn.js.map +0 -1
- package/dist/languages/am.js +0 -3
- package/dist/languages/am.js.map +0 -1
- package/dist/languages/ar.js +0 -3
- package/dist/languages/ar.js.map +0 -1
- package/dist/languages/az.js +0 -3
- package/dist/languages/az.js.map +0 -1
- package/dist/languages/bn.js +0 -3
- package/dist/languages/bn.js.map +0 -1
- package/dist/languages/cs.js +0 -3
- package/dist/languages/cs.js.map +0 -1
- package/dist/languages/da.js +0 -3
- package/dist/languages/da.js.map +0 -1
- package/dist/languages/de.js +0 -3
- package/dist/languages/de.js.map +0 -1
- package/dist/languages/el.js +0 -3
- package/dist/languages/el.js.map +0 -1
- package/dist/languages/en.js +0 -3
- package/dist/languages/en.js.map +0 -1
- package/dist/languages/es.js +0 -3
- package/dist/languages/es.js.map +0 -1
- package/dist/languages/fa.js +0 -3
- package/dist/languages/fa.js.map +0 -1
- package/dist/languages/fi.js +0 -3
- package/dist/languages/fi.js.map +0 -1
- package/dist/languages/fil.js +0 -3
- package/dist/languages/fil.js.map +0 -1
- package/dist/languages/fr-BE.js +0 -3
- package/dist/languages/fr-BE.js.map +0 -1
- package/dist/languages/fr.js +0 -3
- package/dist/languages/fr.js.map +0 -1
- package/dist/languages/gu.js +0 -3
- package/dist/languages/gu.js.map +0 -1
- package/dist/languages/ha.js +0 -3
- package/dist/languages/ha.js.map +0 -1
- package/dist/languages/hbo.js +0 -3
- package/dist/languages/hbo.js.map +0 -1
- package/dist/languages/he.js +0 -3
- package/dist/languages/he.js.map +0 -1
- package/dist/languages/hi.js +0 -3
- package/dist/languages/hi.js.map +0 -1
- package/dist/languages/hr.js +0 -3
- package/dist/languages/hr.js.map +0 -1
- package/dist/languages/hu.js +0 -3
- package/dist/languages/hu.js.map +0 -1
- package/dist/languages/id.js +0 -3
- package/dist/languages/id.js.map +0 -1
- package/dist/languages/it.js +0 -3
- package/dist/languages/it.js.map +0 -1
- package/dist/languages/ja.js +0 -3
- package/dist/languages/ja.js.map +0 -1
- package/dist/languages/ka.js +0 -3
- package/dist/languages/ka.js.map +0 -1
- package/dist/languages/kn.js +0 -3
- package/dist/languages/kn.js.map +0 -1
- package/dist/languages/ko.js +0 -3
- package/dist/languages/ko.js.map +0 -1
- package/dist/languages/lt.js +0 -3
- package/dist/languages/lt.js.map +0 -1
- package/dist/languages/lv.js +0 -3
- package/dist/languages/lv.js.map +0 -1
- package/dist/languages/mr.js +0 -3
- package/dist/languages/mr.js.map +0 -1
- package/dist/languages/ms.js +0 -3
- package/dist/languages/ms.js.map +0 -1
- package/dist/languages/nb.js +0 -3
- package/dist/languages/nb.js.map +0 -1
- package/dist/languages/nl.js +0 -3
- package/dist/languages/nl.js.map +0 -1
- package/dist/languages/pa.js +0 -3
- package/dist/languages/pa.js.map +0 -1
- package/dist/languages/pl.js +0 -3
- package/dist/languages/pl.js.map +0 -1
- package/dist/languages/pt.js +0 -3
- package/dist/languages/pt.js.map +0 -1
- package/dist/languages/ro.js +0 -3
- package/dist/languages/ro.js.map +0 -1
- package/dist/languages/ru.js +0 -3
- package/dist/languages/ru.js.map +0 -1
- package/dist/languages/sr-Cyrl.js +0 -3
- package/dist/languages/sr-Cyrl.js.map +0 -1
- package/dist/languages/sr-Latn.js +0 -3
- package/dist/languages/sr-Latn.js.map +0 -1
- package/dist/languages/sv.js +0 -3
- package/dist/languages/sv.js.map +0 -1
- package/dist/languages/sw.js +0 -3
- package/dist/languages/sw.js.map +0 -1
- package/dist/languages/ta.js +0 -3
- package/dist/languages/ta.js.map +0 -1
- package/dist/languages/te.js +0 -3
- package/dist/languages/te.js.map +0 -1
- package/dist/languages/th.js +0 -3
- package/dist/languages/th.js.map +0 -1
- package/dist/languages/tr.js +0 -3
- package/dist/languages/tr.js.map +0 -1
- package/dist/languages/uk.js +0 -3
- package/dist/languages/uk.js.map +0 -1
- package/dist/languages/ur.js +0 -3
- package/dist/languages/ur.js.map +0 -1
- package/dist/languages/vi.js +0 -3
- package/dist/languages/vi.js.map +0 -1
- package/dist/languages/yo.js +0 -3
- package/dist/languages/yo.js.map +0 -1
- package/dist/languages/zh-Hans.js +0 -3
- package/dist/languages/zh-Hans.js.map +0 -1
- package/dist/languages/zh-Hant.js +0 -3
- package/dist/languages/zh-Hant.js.map +0 -1
- package/dist/n2words.js +0 -3
- package/dist/n2words.js.map +0 -1
- package/lib/languages/am-Latn.d.ts +0 -7
- package/lib/languages/am-Latn.js +0 -159
- package/lib/languages/am.d.ts +0 -7
- package/lib/languages/am.js +0 -159
- package/lib/languages/ar.d.ts +0 -17
- package/lib/languages/az.d.ts +0 -7
- package/lib/languages/az.js +0 -171
- package/lib/languages/bn.d.ts +0 -7
- package/lib/languages/cs.d.ts +0 -18
- package/lib/languages/da.d.ts +0 -14
- package/lib/languages/de.d.ts +0 -17
- package/lib/languages/de.js +0 -320
- package/lib/languages/el.d.ts +0 -14
- package/lib/languages/el.js +0 -236
- package/lib/languages/en.d.ts +0 -17
- package/lib/languages/es.d.ts +0 -21
- package/lib/languages/fa.d.ts +0 -7
- package/lib/languages/fa.js +0 -134
- package/lib/languages/fi.d.ts +0 -14
- package/lib/languages/fil.d.ts +0 -7
- package/lib/languages/fr-BE.d.ts +0 -11
- package/lib/languages/fr.d.ts +0 -21
- package/lib/languages/gu.d.ts +0 -7
- package/lib/languages/ha.d.ts +0 -7
- package/lib/languages/hbo.d.ts +0 -13
- package/lib/languages/he.d.ts +0 -13
- package/lib/languages/he.js +0 -265
- package/lib/languages/hi.d.ts +0 -7
- package/lib/languages/hr.d.ts +0 -11
- package/lib/languages/hr.js +0 -224
- package/lib/languages/hu.d.ts +0 -7
- package/lib/languages/id.d.ts +0 -7
- package/lib/languages/it.d.ts +0 -19
- package/lib/languages/ja.d.ts +0 -17
- package/lib/languages/ka.d.ts +0 -17
- package/lib/languages/kn.d.ts +0 -7
- package/lib/languages/ko.d.ts +0 -14
- package/lib/languages/lt.d.ts +0 -18
- package/lib/languages/lt.js +0 -301
- package/lib/languages/lv.d.ts +0 -18
- package/lib/languages/lv.js +0 -312
- package/lib/languages/mr.d.ts +0 -7
- package/lib/languages/ms.d.ts +0 -7
- package/lib/languages/nb.d.ts +0 -14
- package/lib/languages/nl.d.ts +0 -26
- package/lib/languages/pa.d.ts +0 -7
- package/lib/languages/pl.d.ts +0 -22
- package/lib/languages/pl.js +0 -317
- package/lib/languages/pt.d.ts +0 -17
- package/lib/languages/ro.d.ts +0 -18
- package/lib/languages/ru.d.ts +0 -11
- package/lib/languages/ru.js +0 -245
- package/lib/languages/sr-Cyrl.d.ts +0 -11
- package/lib/languages/sr-Cyrl.js +0 -221
- package/lib/languages/sr-Latn.d.ts +0 -11
- package/lib/languages/sr-Latn.js +0 -221
- package/lib/languages/sv.d.ts +0 -14
- package/lib/languages/sw.d.ts +0 -7
- package/lib/languages/ta.d.ts +0 -7
- package/lib/languages/te.d.ts +0 -7
- package/lib/languages/th.d.ts +0 -7
- package/lib/languages/tr.d.ts +0 -18
- package/lib/languages/uk.d.ts +0 -11
- package/lib/languages/uk.js +0 -224
- package/lib/languages/ur.d.ts +0 -7
- package/lib/languages/vi.d.ts +0 -17
- package/lib/languages/yo.d.ts +0 -7
- package/lib/languages/zh-Hans.d.ts +0 -11
- package/lib/languages/zh-Hant.d.ts +0 -11
- package/lib/n2words.d.ts +0 -55
- package/lib/n2words.js +0 -126
- package/lib/utils/parse-numeric.d.ts +0 -17
- /package/{lib → src}/utils/is-plain-object.d.ts +0 -0
- /package/{lib → src}/utils/is-plain-object.js +0 -0
- /package/{lib → src}/utils/validate-options.d.ts +0 -0
- /package/{lib → src}/utils/validate-options.js +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Swedish language converter
|
|
2
|
+
* Swedish (Sweden) language converter
|
|
3
3
|
*
|
|
4
|
-
*
|
|
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 {
|
|
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.
|
|
47
|
-
const hundreds = Math.
|
|
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
|
-
*
|
|
269
|
-
*
|
|
270
|
-
*
|
|
299
|
+
* toCardinal(42) // 'fyrtio-två'
|
|
300
|
+
* toCardinal(101) // 'hundra och ett'
|
|
301
|
+
* toCardinal(1000000) // 'en miljon'
|
|
271
302
|
*/
|
|
272
|
-
function
|
|
273
|
-
const { isNegative, integerPart, decimalPart } =
|
|
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 {
|
|
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
|
|
2
|
+
* Swahili (Kenya) language converter
|
|
3
3
|
*
|
|
4
|
-
*
|
|
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 {
|
|
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
|
|
132
|
-
const { isNegative, integerPart, decimalPart } =
|
|
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 {
|
|
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
|
|
2
|
+
* Tamil (India) language converter
|
|
3
3
|
*
|
|
4
|
-
*
|
|
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 {
|
|
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
|
|
146
|
-
const { isNegative, integerPart, decimalPart } =
|
|
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 {
|
|
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;
|