n2words 3.0.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 +59 -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/src/bn-BD.js +270 -0
- package/src/cs-CZ.d.ts +49 -0
- package/{lib/languages/cs.js → src/cs-CZ.js} +249 -40
- package/src/da-DK.d.ts +44 -0
- package/{lib/languages/da.js → src/da-DK.js} +136 -23
- 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/src/en-NZ.js +375 -0
- 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} +237 -47
- 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/src/fi-FI.js +379 -0
- package/src/fil-PH.d.ts +37 -0
- package/{lib/languages/fil.js → src/fil-PH.js} +149 -24
- package/src/fr-BE.d.ts +49 -0
- package/src/fr-BE.js +453 -0
- package/src/fr-FR.d.ts +63 -0
- package/{lib/languages/fr.js → src/fr-FR.js} +200 -47
- package/src/gu-IN.d.ts +35 -0
- package/src/gu-IN.js +259 -0
- package/src/ha-NG.d.ts +37 -0
- package/{lib/languages/ha.js → src/ha-NG.js} +110 -16
- package/src/hbo-IL.d.ts +39 -0
- package/{lib/languages/hbo.js → src/hbo-IL.js} +217 -43
- package/src/he-IL.d.ts +37 -0
- package/src/he-IL.js +537 -0
- package/src/hi-IN.d.ts +36 -0
- package/src/hi-IN.js +280 -0
- 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} +106 -20
- package/src/it-IT.d.ts +59 -0
- package/src/it-IT.js +506 -0
- package/src/ja-JP.d.ts +49 -0
- package/{lib/languages/ja.js → src/ja-JP.js} +119 -32
- package/src/ka-GE.d.ts +44 -0
- package/src/ka-GE.js +393 -0
- package/src/kn-IN.d.ts +35 -0
- package/{lib/languages/kn.js → src/kn-IN.js} +156 -34
- package/src/ko-KR.d.ts +45 -0
- package/{lib/languages/ko.js → src/ko-KR.js} +99 -24
- 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/src/mr-IN.js +260 -0
- package/src/ms-MY.d.ts +37 -0
- package/{lib/languages/ms.js → src/ms-MY.js} +118 -20
- package/src/nb-NO.d.ts +44 -0
- package/{lib/languages/nb.js → src/nb-NO.js} +165 -33
- package/src/nl-NL.d.ts +54 -0
- package/{lib/languages/nl.js → src/nl-NL.js} +271 -47
- package/src/pa-IN.d.ts +36 -0
- package/src/pa-IN.js +268 -0
- package/src/pl-PL.d.ts +55 -0
- package/src/pl-PL.js +585 -0
- package/src/pt-PT.d.ts +45 -0
- package/src/pt-PT.js +514 -0
- 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} +149 -34
- 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} +163 -47
- package/src/te-IN.d.ts +35 -0
- package/{lib/languages/te.js → src/te-IN.js} +147 -46
- 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/src/tr-TR.js +397 -0
- package/src/uk-UA.d.ts +42 -0
- package/src/uk-UA.js +463 -0
- package/src/ur-PK.d.ts +36 -0
- package/src/ur-PK.js +268 -0
- 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} +124 -53
- package/src/yo-NG.d.ts +37 -0
- package/src/yo-NG.js +403 -0
- 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/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/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 -164
- package/lib/languages/am.d.ts +0 -7
- package/lib/languages/am.js +0 -164
- package/lib/languages/ar.d.ts +0 -17
- package/lib/languages/az.d.ts +0 -7
- package/lib/languages/az.js +0 -176
- package/lib/languages/bn.d.ts +0 -7
- package/lib/languages/bn.js +0 -145
- 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 -332
- package/lib/languages/el.d.ts +0 -14
- package/lib/languages/el.js +0 -243
- package/lib/languages/en.d.ts +0 -17
- package/lib/languages/en.js +0 -256
- 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/fi.js +0 -245
- package/lib/languages/fil.d.ts +0 -7
- package/lib/languages/fr-BE.d.ts +0 -11
- package/lib/languages/fr-BE.js +0 -300
- package/lib/languages/fr.d.ts +0 -21
- package/lib/languages/gu.d.ts +0 -7
- package/lib/languages/gu.js +0 -137
- 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 -276
- package/lib/languages/hi.d.ts +0 -7
- package/lib/languages/hi.js +0 -145
- package/lib/languages/hr.d.ts +0 -11
- package/lib/languages/hr.js +0 -218
- 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/it.js +0 -377
- package/lib/languages/ja.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 -310
- package/lib/languages/lv.d.ts +0 -18
- package/lib/languages/lv.js +0 -321
- package/lib/languages/mr.d.ts +0 -7
- package/lib/languages/mr.js +0 -137
- 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/pa.js +0 -163
- package/lib/languages/pl.d.ts +0 -22
- package/lib/languages/pl.js +0 -330
- package/lib/languages/pt.d.ts +0 -17
- package/lib/languages/pt.js +0 -306
- package/lib/languages/ro.d.ts +0 -18
- package/lib/languages/ru.d.ts +0 -11
- package/lib/languages/ru.js +0 -240
- package/lib/languages/sr-Cyrl.d.ts +0 -11
- package/lib/languages/sr-Cyrl.js +0 -215
- package/lib/languages/sr-Latn.d.ts +0 -11
- package/lib/languages/sr-Latn.js +0 -215
- 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/tr.js +0 -263
- package/lib/languages/uk.d.ts +0 -11
- package/lib/languages/uk.js +0 -218
- package/lib/languages/ur.d.ts +0 -7
- package/lib/languages/ur.js +0 -163
- package/lib/languages/vi.d.ts +0 -17
- package/lib/languages/zh-Hans.d.ts +0 -11
- package/lib/languages/zh-Hant.d.ts +0 -11
- package/lib/n2words.d.ts +0 -53
- package/lib/n2words.js +0 -122
- 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
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ordinal value parsing utility.
|
|
3
|
+
* Optimized parser for ordinal conversion - accepts only positive integers.
|
|
4
|
+
* @module parse-ordinal
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { expandScientificNotation, hasScientificNotation } from './expand-scientific.js'
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Parses a value for ordinal conversion.
|
|
11
|
+
* Ordinals require positive integers only (no zero, negatives, or decimals).
|
|
12
|
+
*
|
|
13
|
+
* @param {number|string|bigint} value - The value to parse
|
|
14
|
+
* @returns {bigint} The positive integer value
|
|
15
|
+
* @throws {TypeError} If value is not number, string, or bigint
|
|
16
|
+
* @throws {RangeError} If value is zero, negative, or has a decimal part
|
|
17
|
+
*/
|
|
18
|
+
export function parseOrdinalValue (value) {
|
|
19
|
+
const type = typeof value
|
|
20
|
+
|
|
21
|
+
// BigInt: simplest case
|
|
22
|
+
if (type === 'bigint') {
|
|
23
|
+
if (value <= 0n) {
|
|
24
|
+
throw new RangeError('Ordinals must be positive integers')
|
|
25
|
+
}
|
|
26
|
+
return value
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// Number: fast path for safe integers
|
|
30
|
+
if (type === 'number') {
|
|
31
|
+
if (!Number.isFinite(value)) {
|
|
32
|
+
throw new RangeError('Ordinals must be finite numbers')
|
|
33
|
+
}
|
|
34
|
+
if (!Number.isInteger(value)) {
|
|
35
|
+
throw new RangeError('Ordinals must be whole numbers')
|
|
36
|
+
}
|
|
37
|
+
if (value <= 0) {
|
|
38
|
+
throw new RangeError('Ordinals must be positive integers')
|
|
39
|
+
}
|
|
40
|
+
return BigInt(value)
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// String input
|
|
44
|
+
if (type === 'string') {
|
|
45
|
+
return parseOrdinalString(value)
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
throw new TypeError(
|
|
49
|
+
`Invalid value type: expected number, string, or bigint, received ${type}`
|
|
50
|
+
)
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Parses a string for ordinal conversion.
|
|
55
|
+
*
|
|
56
|
+
* @param {string} value - The string to parse
|
|
57
|
+
* @returns {bigint} The positive integer value
|
|
58
|
+
* @throws {RangeError} If string is not a valid positive integer
|
|
59
|
+
*/
|
|
60
|
+
function parseOrdinalString (value) {
|
|
61
|
+
const trimmed = value.trim()
|
|
62
|
+
|
|
63
|
+
if (trimmed.length === 0) {
|
|
64
|
+
throw new RangeError('Ordinals cannot be empty strings')
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// Quick rejection for obvious non-ordinals
|
|
68
|
+
if (trimmed[0] === '-') {
|
|
69
|
+
throw new RangeError('Ordinals cannot be negative')
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
if (trimmed.includes('.')) {
|
|
73
|
+
throw new RangeError('Ordinals must be whole numbers')
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// Handle scientific notation with full precision expansion
|
|
77
|
+
if (hasScientificNotation(trimmed)) {
|
|
78
|
+
const expanded = expandScientificNotation(trimmed)
|
|
79
|
+
|
|
80
|
+
// Check if expansion resulted in a decimal
|
|
81
|
+
if (expanded.includes('.')) {
|
|
82
|
+
throw new RangeError('Ordinals must be whole numbers')
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
const result = BigInt(expanded)
|
|
86
|
+
if (result <= 0n) {
|
|
87
|
+
throw new RangeError('Ordinals must be positive integers')
|
|
88
|
+
}
|
|
89
|
+
return result
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// Parse as BigInt directly
|
|
93
|
+
try {
|
|
94
|
+
const result = BigInt(trimmed)
|
|
95
|
+
if (result <= 0n) {
|
|
96
|
+
throw new RangeError('Ordinals must be positive integers')
|
|
97
|
+
}
|
|
98
|
+
return result
|
|
99
|
+
} catch (e) {
|
|
100
|
+
if (e instanceof RangeError) throw e
|
|
101
|
+
throw new RangeError(`Invalid ordinal format: "${value}"`)
|
|
102
|
+
}
|
|
103
|
+
}
|
package/src/vi-VN.d.ts
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts a numeric value to Vietnamese words.
|
|
3
|
+
*
|
|
4
|
+
* This is the main public API. It accepts any valid numeric input
|
|
5
|
+
* (number, string, or bigint) and handles parsing internally.
|
|
6
|
+
*
|
|
7
|
+
* @param {number | string | bigint} value - The numeric value to convert
|
|
8
|
+
* @returns {string} The number in Vietnamese words
|
|
9
|
+
* @throws {TypeError} If value is not a valid numeric type
|
|
10
|
+
* @throws {Error} If value is not a valid number format
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* toCardinal(42) // 'bốn mươi hai'
|
|
14
|
+
* toCardinal(101) // 'một trăm lẻ một'
|
|
15
|
+
* toCardinal(1000000) // 'một triệu'
|
|
16
|
+
*/
|
|
17
|
+
export function toCardinal(value: number | string | bigint): string;
|
|
18
|
+
/**
|
|
19
|
+
* Converts a numeric value to Vietnamese ordinal words.
|
|
20
|
+
*
|
|
21
|
+
* @param {number | string | bigint} value - The numeric value to convert (positive integer)
|
|
22
|
+
* @returns {string} The number as ordinal words
|
|
23
|
+
* @throws {TypeError} If value is not a valid numeric type
|
|
24
|
+
* @throws {RangeError} If value is negative, zero, or has a decimal part
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* toOrdinal(1) // 'thứ nhất'
|
|
28
|
+
* toOrdinal(2) // 'thứ hai'
|
|
29
|
+
* toOrdinal(10) // 'thứ mười'
|
|
30
|
+
*/
|
|
31
|
+
export function toOrdinal(value: number | string | bigint): string;
|
|
32
|
+
/**
|
|
33
|
+
* Converts a numeric value to Vietnamese currency words (Dong).
|
|
34
|
+
*
|
|
35
|
+
* Vietnamese Dong has no subunit in modern usage (xu are historical).
|
|
36
|
+
* Amounts are rounded to whole đồng.
|
|
37
|
+
*
|
|
38
|
+
* @param {number | string | bigint} value - The currency amount to convert
|
|
39
|
+
* @returns {string} The amount in Vietnamese currency words
|
|
40
|
+
* @throws {TypeError} If value is not a valid numeric type
|
|
41
|
+
* @throws {Error} If value is not a valid number format
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* toCurrency(42) // 'bốn mươi hai đồng'
|
|
45
|
+
* toCurrency(1000) // 'một nghìn đồng'
|
|
46
|
+
* toCurrency(-5) // 'âm năm đồng'
|
|
47
|
+
*/
|
|
48
|
+
export function toCurrency(value: number | string | bigint): string;
|
|
@@ -1,19 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Vietnamese language converter
|
|
2
|
+
* Vietnamese (Vietnam) language converter
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* Self-contained module with its own input validation, ready for subpath exports.
|
|
4
|
+
* CLDR: vi-VN | Vietnamese as used in Vietnam
|
|
6
5
|
*
|
|
7
|
-
*
|
|
8
|
-
* This eliminates all per-call string manipulation for segment conversion.
|
|
9
|
-
*
|
|
10
|
-
* Vietnamese-specific rules (handled in precomputation):
|
|
6
|
+
* Vietnamese-specific rules:
|
|
11
7
|
* - Special pronunciation: "lăm" for 5 in tens position, "mốt" for final 1
|
|
12
8
|
* - "Lẻ" (odd/extra) marker when tens place is zero after hundreds/scales
|
|
13
9
|
* - Short scale system with Vietnamese words (nghìn, triệu, tỷ)
|
|
14
10
|
*/
|
|
15
11
|
|
|
16
|
-
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'
|
|
17
15
|
|
|
18
16
|
// ============================================================================
|
|
19
17
|
// Vocabulary (module-level constants)
|
|
@@ -37,17 +35,30 @@ const NEGATIVE = 'âm'
|
|
|
37
35
|
const DECIMAL_SEP = 'phẩy'
|
|
38
36
|
const LE = 'lẻ' // "odd/extra" marker for gaps
|
|
39
37
|
|
|
38
|
+
// ============================================================================
|
|
39
|
+
// Ordinal Vocabulary
|
|
40
|
+
// ============================================================================
|
|
41
|
+
|
|
42
|
+
const ORDINAL_PREFIX = 'thứ'
|
|
43
|
+
// First is special: "thứ nhất" (not "thứ một")
|
|
44
|
+
const ORDINAL_ONE = 'nhất'
|
|
45
|
+
|
|
46
|
+
// ============================================================================
|
|
47
|
+
// Currency Vocabulary (Vietnamese Dong)
|
|
48
|
+
// ============================================================================
|
|
49
|
+
|
|
50
|
+
const DONG = 'đồng'
|
|
51
|
+
|
|
40
52
|
// Special forms
|
|
41
53
|
const MOT_FINAL = 'mốt' // 1 in tens position (21, 31, etc.)
|
|
42
54
|
const LAM = 'lăm' // 5 in tens position (25, 35, etc.)
|
|
43
55
|
|
|
44
56
|
// ============================================================================
|
|
45
|
-
//
|
|
57
|
+
// Segment Building
|
|
46
58
|
// ============================================================================
|
|
47
59
|
|
|
48
60
|
/**
|
|
49
61
|
* Builds word for 0-99 with special forms (mốt, lăm).
|
|
50
|
-
* Only used during table construction.
|
|
51
62
|
*/
|
|
52
63
|
function buildBelowHundred (n) {
|
|
53
64
|
if (n === 0) return ONES[0]
|
|
@@ -63,7 +74,7 @@ function buildBelowHundred (n) {
|
|
|
63
74
|
|
|
64
75
|
// 20-99
|
|
65
76
|
const ones = n % 10
|
|
66
|
-
const tens = Math.
|
|
77
|
+
const tens = Math.trunc(n / 10)
|
|
67
78
|
const tensWord = ONES[tens] + ' mươi'
|
|
68
79
|
|
|
69
80
|
if (ones === 0) return tensWord
|
|
@@ -74,12 +85,11 @@ function buildBelowHundred (n) {
|
|
|
74
85
|
|
|
75
86
|
/**
|
|
76
87
|
* Builds segment word for 0-999.
|
|
77
|
-
* Only used during table construction.
|
|
78
88
|
*/
|
|
79
89
|
function buildSegment (n) {
|
|
80
90
|
if (n === 0) return ''
|
|
81
91
|
|
|
82
|
-
const hundreds = Math.
|
|
92
|
+
const hundreds = Math.trunc(n / 100)
|
|
83
93
|
const remainder = n % 100
|
|
84
94
|
|
|
85
95
|
let result = ''
|
|
@@ -101,37 +111,23 @@ function buildSegment (n) {
|
|
|
101
111
|
} else {
|
|
102
112
|
// 10-99 after hundreds
|
|
103
113
|
if (result) result += ' '
|
|
104
|
-
result +=
|
|
114
|
+
result += buildBelowHundred(remainder)
|
|
105
115
|
}
|
|
106
116
|
}
|
|
107
117
|
|
|
108
118
|
return result
|
|
109
119
|
}
|
|
110
120
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
for (let i = 0; i < 1000; i++) {
|
|
122
|
-
SEGMENTS[i] = buildSegment(i)
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
// Precompute "lẻ" prefixed versions for small remainders after scale words
|
|
126
|
-
// LE_SEGMENTS[n] gives "lẻ X" for n in range 1-99
|
|
127
|
-
const LE_SEGMENTS = new Array(100)
|
|
128
|
-
LE_SEGMENTS[0] = ''
|
|
129
|
-
for (let i = 1; i < 10; i++) {
|
|
130
|
-
// Use "năm" not "lăm" after lẻ
|
|
131
|
-
LE_SEGMENTS[i] = LE + ' ' + (i === 5 ? 'năm' : ONES[i])
|
|
132
|
-
}
|
|
133
|
-
for (let i = 10; i < 100; i++) {
|
|
134
|
-
LE_SEGMENTS[i] = LE + ' ' + BELOW_100[i]
|
|
121
|
+
/**
|
|
122
|
+
* Builds "lẻ" prefixed word for small remainders (1-99) after scale words.
|
|
123
|
+
*/
|
|
124
|
+
function buildLeSegment (n) {
|
|
125
|
+
if (n === 0) return ''
|
|
126
|
+
if (n < 10) {
|
|
127
|
+
// Use "năm" not "lăm" after lẻ
|
|
128
|
+
return LE + ' ' + (n === 5 ? 'năm' : ONES[n])
|
|
129
|
+
}
|
|
130
|
+
return LE + ' ' + buildBelowHundred(n)
|
|
135
131
|
}
|
|
136
132
|
|
|
137
133
|
// ============================================================================
|
|
@@ -147,14 +143,14 @@ for (let i = 10; i < 100; i++) {
|
|
|
147
143
|
function integerToWords (n) {
|
|
148
144
|
if (n === 0n) return ZERO
|
|
149
145
|
|
|
150
|
-
// Fast path: numbers < 100
|
|
146
|
+
// Fast path: numbers < 100
|
|
151
147
|
if (n < 100n) {
|
|
152
|
-
return
|
|
148
|
+
return buildBelowHundred(Number(n))
|
|
153
149
|
}
|
|
154
150
|
|
|
155
|
-
// Fast path: numbers < 1000
|
|
151
|
+
// Fast path: numbers < 1000
|
|
156
152
|
if (n < 1000n) {
|
|
157
|
-
return
|
|
153
|
+
return buildSegment(Number(n))
|
|
158
154
|
}
|
|
159
155
|
|
|
160
156
|
// Fast path: numbers < 1,000,000 (thousands)
|
|
@@ -162,7 +158,7 @@ function integerToWords (n) {
|
|
|
162
158
|
const thousands = Number(n / 1000n)
|
|
163
159
|
const remainder = Number(n % 1000n)
|
|
164
160
|
|
|
165
|
-
const thousandsWords =
|
|
161
|
+
const thousandsWords = buildSegment(thousands) + ' ' + SCALES[1]
|
|
166
162
|
|
|
167
163
|
if (remainder === 0) {
|
|
168
164
|
return thousandsWords
|
|
@@ -170,10 +166,10 @@ function integerToWords (n) {
|
|
|
170
166
|
|
|
171
167
|
// Check if remainder needs "lẻ" marker (< 100)
|
|
172
168
|
if (remainder < 100) {
|
|
173
|
-
return thousandsWords + ' ' +
|
|
169
|
+
return thousandsWords + ' ' + buildLeSegment(remainder)
|
|
174
170
|
}
|
|
175
171
|
|
|
176
|
-
return thousandsWords + ' ' +
|
|
172
|
+
return thousandsWords + ' ' + buildSegment(remainder)
|
|
177
173
|
}
|
|
178
174
|
|
|
179
175
|
// For numbers >= 1,000,000, use scale decomposition
|
|
@@ -212,7 +208,7 @@ function buildLargeNumberWords (n) {
|
|
|
212
208
|
for (let i = 0; i < segments.length; i++) {
|
|
213
209
|
const segment = segments[i]
|
|
214
210
|
if (segment !== 0) {
|
|
215
|
-
const words =
|
|
211
|
+
const words = buildSegment(segment)
|
|
216
212
|
if (words) {
|
|
217
213
|
if (scaleIndex > 0) {
|
|
218
214
|
parts.push(words + ' ' + SCALES[scaleIndex])
|
|
@@ -237,7 +233,7 @@ function buildLargeNumberWords (n) {
|
|
|
237
233
|
for (let i = 1; i < partsLen - 1; i++) {
|
|
238
234
|
result += ' ' + parts[i]
|
|
239
235
|
}
|
|
240
|
-
return result + ' ' +
|
|
236
|
+
return result + ' ' + buildLeSegment(lastSegment)
|
|
241
237
|
}
|
|
242
238
|
|
|
243
239
|
// Join with spaces
|
|
@@ -287,12 +283,12 @@ function decimalPartToWords (decimalPart) {
|
|
|
287
283
|
* @throws {Error} If value is not a valid number format
|
|
288
284
|
*
|
|
289
285
|
* @example
|
|
290
|
-
*
|
|
291
|
-
*
|
|
292
|
-
*
|
|
286
|
+
* toCardinal(42) // 'bốn mươi hai'
|
|
287
|
+
* toCardinal(101) // 'một trăm lẻ một'
|
|
288
|
+
* toCardinal(1000000) // 'một triệu'
|
|
293
289
|
*/
|
|
294
|
-
function
|
|
295
|
-
const { isNegative, integerPart, decimalPart } =
|
|
290
|
+
function toCardinal (value) {
|
|
291
|
+
const { isNegative, integerPart, decimalPart } = parseCardinalValue(value)
|
|
296
292
|
|
|
297
293
|
let result = ''
|
|
298
294
|
|
|
@@ -309,8 +305,83 @@ function toWords (value) {
|
|
|
309
305
|
return result
|
|
310
306
|
}
|
|
311
307
|
|
|
308
|
+
// ============================================================================
|
|
309
|
+
// ORDINAL: toOrdinal(value)
|
|
310
|
+
// ============================================================================
|
|
311
|
+
|
|
312
|
+
/**
|
|
313
|
+
* Converts a non-negative integer to Vietnamese ordinal words.
|
|
314
|
+
*
|
|
315
|
+
* Vietnamese ordinals use "thứ" prefix + cardinal number.
|
|
316
|
+
* Special case: "thứ nhất" for 1st (not "thứ một").
|
|
317
|
+
*
|
|
318
|
+
* @param {bigint} n - Positive integer to convert
|
|
319
|
+
* @returns {string} Vietnamese ordinal words
|
|
320
|
+
*/
|
|
321
|
+
function integerToOrdinal (n) {
|
|
322
|
+
// Special case: 1st is "thứ nhất"
|
|
323
|
+
if (n === 1n) {
|
|
324
|
+
return ORDINAL_PREFIX + ' ' + ORDINAL_ONE
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
// All others: "thứ" + cardinal
|
|
328
|
+
return ORDINAL_PREFIX + ' ' + integerToWords(n)
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
/**
|
|
332
|
+
* Converts a numeric value to Vietnamese ordinal words.
|
|
333
|
+
*
|
|
334
|
+
* @param {number | string | bigint} value - The numeric value to convert (positive integer)
|
|
335
|
+
* @returns {string} The number as ordinal words
|
|
336
|
+
* @throws {TypeError} If value is not a valid numeric type
|
|
337
|
+
* @throws {RangeError} If value is negative, zero, or has a decimal part
|
|
338
|
+
*
|
|
339
|
+
* @example
|
|
340
|
+
* toOrdinal(1) // 'thứ nhất'
|
|
341
|
+
* toOrdinal(2) // 'thứ hai'
|
|
342
|
+
* toOrdinal(10) // 'thứ mười'
|
|
343
|
+
*/
|
|
344
|
+
function toOrdinal (value) {
|
|
345
|
+
const integerPart = parseOrdinalValue(value)
|
|
346
|
+
return integerToOrdinal(integerPart)
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
// ============================================================================
|
|
350
|
+
// CURRENCY: toCurrency(value)
|
|
351
|
+
// ============================================================================
|
|
352
|
+
|
|
353
|
+
/**
|
|
354
|
+
* Converts a numeric value to Vietnamese currency words (Dong).
|
|
355
|
+
*
|
|
356
|
+
* Vietnamese Dong has no subunit in modern usage (xu are historical).
|
|
357
|
+
* Amounts are rounded to whole đồng.
|
|
358
|
+
*
|
|
359
|
+
* @param {number | string | bigint} value - The currency amount to convert
|
|
360
|
+
* @returns {string} The amount in Vietnamese currency words
|
|
361
|
+
* @throws {TypeError} If value is not a valid numeric type
|
|
362
|
+
* @throws {Error} If value is not a valid number format
|
|
363
|
+
*
|
|
364
|
+
* @example
|
|
365
|
+
* toCurrency(42) // 'bốn mươi hai đồng'
|
|
366
|
+
* toCurrency(1000) // 'một nghìn đồng'
|
|
367
|
+
* toCurrency(-5) // 'âm năm đồng'
|
|
368
|
+
*/
|
|
369
|
+
function toCurrency (value) {
|
|
370
|
+
const { isNegative, dollars: dong } = parseCurrencyValue(value)
|
|
371
|
+
|
|
372
|
+
let result = ''
|
|
373
|
+
if (isNegative) {
|
|
374
|
+
result = NEGATIVE + ' '
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
result += integerToWords(dong)
|
|
378
|
+
result += ' ' + DONG
|
|
379
|
+
|
|
380
|
+
return result
|
|
381
|
+
}
|
|
382
|
+
|
|
312
383
|
// ============================================================================
|
|
313
384
|
// Public API
|
|
314
385
|
// ============================================================================
|
|
315
386
|
|
|
316
|
-
export {
|
|
387
|
+
export { toCardinal, toOrdinal, toCurrency }
|
package/src/yo-NG.d.ts
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts a numeric value to Yoruba words.
|
|
3
|
+
*
|
|
4
|
+
* @param {number | string | bigint} value - The numeric value to convert
|
|
5
|
+
* @returns {string} The number in Yoruba words
|
|
6
|
+
*/
|
|
7
|
+
export function toCardinal(value: number | string | bigint): string;
|
|
8
|
+
/**
|
|
9
|
+
* Converts a numeric value to Yoruba 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) // 'àkọ́kọ́'
|
|
18
|
+
* toOrdinal(2) // 'ìkejì'
|
|
19
|
+
* toOrdinal(3) // 'ìkẹẹ̀ta'
|
|
20
|
+
*/
|
|
21
|
+
export function toOrdinal(value: number | string | bigint): string;
|
|
22
|
+
/**
|
|
23
|
+
* Converts a numeric value to Yoruba currency words (Nigerian Naira).
|
|
24
|
+
*
|
|
25
|
+
* Uses náírà (naira) and kọ́bọ̀ (kobo).
|
|
26
|
+
*
|
|
27
|
+
* @param {number | string | bigint} value - The currency amount to convert
|
|
28
|
+
* @returns {string} The amount in Yoruba 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) // 'èjì lé lógójì náírà'
|
|
34
|
+
* toCurrency(1.50) // 'ọ̀kan náírà àti àádọ́ta kọ́bọ̀'
|
|
35
|
+
* toCurrency(-5) // 'àìní àrùn náírà'
|
|
36
|
+
*/
|
|
37
|
+
export function toCurrency(value: number | string | bigint): string;
|