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
package/src/en-AU.js
ADDED
|
@@ -0,0 +1,423 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* English (Australia) language converter
|
|
3
|
+
*
|
|
4
|
+
* CLDR: en-AU | English as used in Australia
|
|
5
|
+
*
|
|
6
|
+
* Key features:
|
|
7
|
+
* - Western numbering system (short scale: billion = 10^9)
|
|
8
|
+
* - British-style "and" after hundreds
|
|
9
|
+
* - Australian Dollar currency (AUD)
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import { parseCardinalValue } from './utils/parse-cardinal.js'
|
|
13
|
+
import { parseCurrencyValue } from './utils/parse-currency.js'
|
|
14
|
+
import { parseOrdinalValue } from './utils/parse-ordinal.js'
|
|
15
|
+
import { validateOptions } from './utils/validate-options.js'
|
|
16
|
+
|
|
17
|
+
// ============================================================================
|
|
18
|
+
// Vocabulary (module-level constants)
|
|
19
|
+
// ============================================================================
|
|
20
|
+
|
|
21
|
+
const ONES = ['', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
|
|
22
|
+
const TEENS = ['ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen']
|
|
23
|
+
const TENS = ['', '', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety']
|
|
24
|
+
|
|
25
|
+
const SCALES = [
|
|
26
|
+
'thousand', 'million', 'billion', 'trillion', 'quadrillion',
|
|
27
|
+
'quintillion', 'sextillion', 'septillion', 'octillion', 'nonillion',
|
|
28
|
+
'decillion', 'undecillion', 'duodecillion', 'tredecillion', 'quattuordecillion',
|
|
29
|
+
'quindecillion', 'sexdecillion', 'septendecillion', 'octodecillion', 'novemdecillion',
|
|
30
|
+
'vigintillion'
|
|
31
|
+
]
|
|
32
|
+
|
|
33
|
+
const HUNDRED = 'hundred'
|
|
34
|
+
const ZERO = 'zero'
|
|
35
|
+
const NEGATIVE = 'minus'
|
|
36
|
+
const DECIMAL_SEP = 'point'
|
|
37
|
+
|
|
38
|
+
// Ordinal vocabulary
|
|
39
|
+
const ORDINAL_ONES = ['', 'first', 'second', 'third', 'fourth', 'fifth', 'sixth', 'seventh', 'eighth', 'ninth']
|
|
40
|
+
const ORDINAL_TEENS = ['tenth', 'eleventh', 'twelfth', 'thirteenth', 'fourteenth', 'fifteenth', 'sixteenth', 'seventeenth', 'eighteenth', 'nineteenth']
|
|
41
|
+
const ORDINAL_TENS = ['', '', 'twentieth', 'thirtieth', 'fortieth', 'fiftieth', 'sixtieth', 'seventieth', 'eightieth', 'ninetieth']
|
|
42
|
+
|
|
43
|
+
// Currency vocabulary (Australian Dollar)
|
|
44
|
+
const DOLLAR = 'dollar'
|
|
45
|
+
const DOLLARS = 'dollars'
|
|
46
|
+
const CENT = 'cent'
|
|
47
|
+
const CENTS = 'cents'
|
|
48
|
+
|
|
49
|
+
// ============================================================================
|
|
50
|
+
// Segment Building
|
|
51
|
+
// ============================================================================
|
|
52
|
+
|
|
53
|
+
// Reusable result object to avoid allocation per call
|
|
54
|
+
const segmentResult = { word: '', hasHundred: false }
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Builds words for a 0-999 segment (British-style with "and" after hundreds).
|
|
58
|
+
*
|
|
59
|
+
* @param {number} n - Number 0-999
|
|
60
|
+
* @returns {{ word: string, hasHundred: boolean }}
|
|
61
|
+
*/
|
|
62
|
+
function buildSegment (n) {
|
|
63
|
+
if (n === 0) {
|
|
64
|
+
segmentResult.word = ''
|
|
65
|
+
segmentResult.hasHundred = false
|
|
66
|
+
return segmentResult
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
const ones = n % 10
|
|
70
|
+
const tens = Math.trunc(n / 10) % 10
|
|
71
|
+
const hundreds = Math.trunc(n / 100)
|
|
72
|
+
|
|
73
|
+
// Build tens-ones part first
|
|
74
|
+
let tensOnes = ''
|
|
75
|
+
if (tens === 1) {
|
|
76
|
+
tensOnes = TEENS[ones]
|
|
77
|
+
} else if (tens >= 2) {
|
|
78
|
+
tensOnes = ones > 0 ? TENS[tens] + '-' + ONES[ones] : TENS[tens]
|
|
79
|
+
} else if (ones > 0) {
|
|
80
|
+
tensOnes = ONES[ones]
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// Hundreds place (British-style: always "and" after hundreds)
|
|
84
|
+
if (hundreds > 0) {
|
|
85
|
+
if (tensOnes) {
|
|
86
|
+
segmentResult.word = ONES[hundreds] + ' ' + HUNDRED + ' and ' + tensOnes
|
|
87
|
+
} else {
|
|
88
|
+
segmentResult.word = ONES[hundreds] + ' ' + HUNDRED
|
|
89
|
+
}
|
|
90
|
+
segmentResult.hasHundred = true
|
|
91
|
+
} else {
|
|
92
|
+
segmentResult.word = tensOnes
|
|
93
|
+
segmentResult.hasHundred = false
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
return segmentResult
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// ============================================================================
|
|
100
|
+
// Conversion Functions
|
|
101
|
+
// ============================================================================
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Converts a non-negative integer to English words.
|
|
105
|
+
*
|
|
106
|
+
* @param {bigint} n - Non-negative integer to convert
|
|
107
|
+
* @returns {string} English words
|
|
108
|
+
*/
|
|
109
|
+
function integerToWords (n) {
|
|
110
|
+
if (n === 0n) return ZERO
|
|
111
|
+
|
|
112
|
+
// Fast path: numbers < 1000
|
|
113
|
+
if (n < 1000n) {
|
|
114
|
+
return buildSegment(Number(n)).word
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// Fast path: numbers < 1,000,000
|
|
118
|
+
if (n < 1_000_000n) {
|
|
119
|
+
const thousands = Number(n / 1000n)
|
|
120
|
+
const remainder = Number(n % 1000n)
|
|
121
|
+
|
|
122
|
+
const { word: thousandsWord } = buildSegment(thousands)
|
|
123
|
+
let result = thousandsWord + ' ' + SCALES[0]
|
|
124
|
+
|
|
125
|
+
if (remainder > 0) {
|
|
126
|
+
const { word: remainderWord, hasHundred } = buildSegment(remainder)
|
|
127
|
+
result += hasHundred ? ' ' + remainderWord : ' and ' + remainderWord
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
return result
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// For numbers >= 1,000,000, use scale decomposition
|
|
134
|
+
return buildLargeNumberWords(n)
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Builds words for numbers >= 1,000,000.
|
|
139
|
+
*
|
|
140
|
+
* @param {bigint} n - Number >= 1,000,000
|
|
141
|
+
* @returns {string} English words
|
|
142
|
+
*/
|
|
143
|
+
function buildLargeNumberWords (n) {
|
|
144
|
+
const segments = []
|
|
145
|
+
let temp = n
|
|
146
|
+
while (temp > 0n) {
|
|
147
|
+
segments.push(Number(temp % 1000n))
|
|
148
|
+
temp = temp / 1000n
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
let firstNonZeroIdx = -1
|
|
152
|
+
for (let i = 0; i < segments.length; i++) {
|
|
153
|
+
if (segments[i] !== 0) {
|
|
154
|
+
firstNonZeroIdx = i
|
|
155
|
+
break
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
let result = ''
|
|
160
|
+
let prevWasScale = false
|
|
161
|
+
|
|
162
|
+
for (let i = segments.length - 1; i >= 0; i--) {
|
|
163
|
+
const segment = segments[i]
|
|
164
|
+
if (segment === 0) continue
|
|
165
|
+
|
|
166
|
+
const { word, hasHundred } = buildSegment(segment)
|
|
167
|
+
const isLastSegment = (i === firstNonZeroIdx)
|
|
168
|
+
|
|
169
|
+
if (result && isLastSegment && prevWasScale && !hasHundred) {
|
|
170
|
+
result += ' and'
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
if (result) result += ' '
|
|
174
|
+
result += word
|
|
175
|
+
|
|
176
|
+
if (i > 0) {
|
|
177
|
+
result += ' ' + SCALES[i - 1]
|
|
178
|
+
prevWasScale = true
|
|
179
|
+
} else {
|
|
180
|
+
prevWasScale = false
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
return result
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* Converts decimal digits to English words.
|
|
189
|
+
*
|
|
190
|
+
* @param {string} decimalPart - Decimal digits (without the point)
|
|
191
|
+
* @returns {string} English words for decimal part
|
|
192
|
+
*/
|
|
193
|
+
function decimalPartToWords (decimalPart) {
|
|
194
|
+
let result = ''
|
|
195
|
+
|
|
196
|
+
let i = 0
|
|
197
|
+
while (i < decimalPart.length && decimalPart[i] === '0') {
|
|
198
|
+
if (result) result += ' '
|
|
199
|
+
result += ZERO
|
|
200
|
+
i++
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
const remainder = decimalPart.slice(i)
|
|
204
|
+
if (remainder) {
|
|
205
|
+
if (result) result += ' '
|
|
206
|
+
result += integerToWords(BigInt(remainder))
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
return result
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* Converts a numeric value to Australian English words.
|
|
214
|
+
*
|
|
215
|
+
* @param {number | string | bigint} value - The numeric value to convert
|
|
216
|
+
* @returns {string} The number in English words
|
|
217
|
+
* @throws {TypeError} If value is not a valid numeric type
|
|
218
|
+
* @throws {Error} If value is not a valid number format
|
|
219
|
+
*
|
|
220
|
+
* @example
|
|
221
|
+
* toCardinal(42) // 'forty-two'
|
|
222
|
+
* toCardinal(101) // 'one hundred and one'
|
|
223
|
+
* toCardinal(1000000) // 'one million'
|
|
224
|
+
*/
|
|
225
|
+
function toCardinal (value) {
|
|
226
|
+
const { isNegative, integerPart, decimalPart } = parseCardinalValue(value)
|
|
227
|
+
|
|
228
|
+
let result = ''
|
|
229
|
+
|
|
230
|
+
if (isNegative) {
|
|
231
|
+
result = NEGATIVE + ' '
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
result += integerToWords(integerPart)
|
|
235
|
+
|
|
236
|
+
if (decimalPart) {
|
|
237
|
+
result += ' ' + DECIMAL_SEP + ' ' + decimalPartToWords(decimalPart)
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
return result
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
// ============================================================================
|
|
244
|
+
// ORDINAL: toOrdinal(value)
|
|
245
|
+
// ============================================================================
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* Builds ordinal words for a 0-999 segment.
|
|
249
|
+
*
|
|
250
|
+
* @param {number} n - Number 0-999
|
|
251
|
+
* @returns {string} Ordinal words for this segment
|
|
252
|
+
*/
|
|
253
|
+
function buildOrdinalSegment (n) {
|
|
254
|
+
const ones = n % 10
|
|
255
|
+
const tens = Math.trunc(n / 10) % 10
|
|
256
|
+
const hundreds = Math.trunc(n / 100)
|
|
257
|
+
|
|
258
|
+
let tensOnesOrdinal = ''
|
|
259
|
+
if (tens === 1) {
|
|
260
|
+
tensOnesOrdinal = ORDINAL_TEENS[ones]
|
|
261
|
+
} else if (tens >= 2) {
|
|
262
|
+
if (ones > 0) {
|
|
263
|
+
tensOnesOrdinal = TENS[tens] + '-' + ORDINAL_ONES[ones]
|
|
264
|
+
} else {
|
|
265
|
+
tensOnesOrdinal = ORDINAL_TENS[tens]
|
|
266
|
+
}
|
|
267
|
+
} else if (ones > 0) {
|
|
268
|
+
tensOnesOrdinal = ORDINAL_ONES[ones]
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
if (hundreds > 0) {
|
|
272
|
+
if (tensOnesOrdinal) {
|
|
273
|
+
return ONES[hundreds] + ' ' + HUNDRED + ' ' + tensOnesOrdinal
|
|
274
|
+
} else {
|
|
275
|
+
return ONES[hundreds] + ' hundredth'
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
return tensOnesOrdinal
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
/**
|
|
283
|
+
* Converts a positive integer to ordinal words.
|
|
284
|
+
*
|
|
285
|
+
* @param {bigint} n - Positive integer to convert
|
|
286
|
+
* @returns {string} Ordinal English words
|
|
287
|
+
*/
|
|
288
|
+
function integerToOrdinal (n) {
|
|
289
|
+
if (n < 1000n) {
|
|
290
|
+
return buildOrdinalSegment(Number(n))
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
if (n < 1_000_000n) {
|
|
294
|
+
const thousands = Number(n / 1000n)
|
|
295
|
+
const remainder = Number(n % 1000n)
|
|
296
|
+
|
|
297
|
+
if (remainder === 0) {
|
|
298
|
+
return buildSegment(thousands).word + ' ' + SCALES[0] + 'th'
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
const { word: thousandsWord } = buildSegment(thousands)
|
|
302
|
+
return thousandsWord + ' ' + SCALES[0] + ' ' + buildOrdinalSegment(remainder)
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
return buildLargeOrdinal(n)
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
/**
|
|
309
|
+
* Builds ordinal words for numbers >= 1,000,000.
|
|
310
|
+
*
|
|
311
|
+
* @param {bigint} n - Number >= 1,000,000
|
|
312
|
+
* @returns {string} Ordinal English words
|
|
313
|
+
*/
|
|
314
|
+
function buildLargeOrdinal (n) {
|
|
315
|
+
const segments = []
|
|
316
|
+
let temp = n
|
|
317
|
+
while (temp > 0n) {
|
|
318
|
+
segments.push(Number(temp % 1000n))
|
|
319
|
+
temp = temp / 1000n
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
let lowestNonZeroIdx = 0
|
|
323
|
+
for (let i = 0; i < segments.length; i++) {
|
|
324
|
+
if (segments[i] !== 0) {
|
|
325
|
+
lowestNonZeroIdx = i
|
|
326
|
+
break
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
let result = ''
|
|
331
|
+
|
|
332
|
+
for (let i = segments.length - 1; i >= 0; i--) {
|
|
333
|
+
const segment = segments[i]
|
|
334
|
+
if (segment === 0) continue
|
|
335
|
+
|
|
336
|
+
const isLowestSegment = (i === lowestNonZeroIdx)
|
|
337
|
+
|
|
338
|
+
if (result) result += ' '
|
|
339
|
+
|
|
340
|
+
if (isLowestSegment) {
|
|
341
|
+
if (i === 0) {
|
|
342
|
+
result += buildOrdinalSegment(segment)
|
|
343
|
+
} else {
|
|
344
|
+
result += buildSegment(segment).word + ' ' + SCALES[i - 1] + 'th'
|
|
345
|
+
}
|
|
346
|
+
} else {
|
|
347
|
+
result += buildSegment(segment).word
|
|
348
|
+
if (i > 0) {
|
|
349
|
+
result += ' ' + SCALES[i - 1]
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
return result
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
/**
|
|
358
|
+
* Converts a numeric value to Australian English ordinal words.
|
|
359
|
+
*
|
|
360
|
+
* @param {number | string | bigint} value - The numeric value to convert (must be a positive integer)
|
|
361
|
+
* @returns {string} The number as ordinal words
|
|
362
|
+
* @throws {TypeError} If value is not a valid numeric type
|
|
363
|
+
* @throws {RangeError} If value is negative, zero, or has a decimal part
|
|
364
|
+
*
|
|
365
|
+
* @example
|
|
366
|
+
* toOrdinal(1) // 'first'
|
|
367
|
+
* toOrdinal(42) // 'forty-second'
|
|
368
|
+
* toOrdinal(100) // 'one hundredth'
|
|
369
|
+
*/
|
|
370
|
+
function toOrdinal (value) {
|
|
371
|
+
const integerPart = parseOrdinalValue(value)
|
|
372
|
+
return integerToOrdinal(integerPart)
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
// ============================================================================
|
|
376
|
+
// CURRENCY: toCurrency(value, options?)
|
|
377
|
+
// ============================================================================
|
|
378
|
+
|
|
379
|
+
/**
|
|
380
|
+
* Converts a numeric value to Australian English currency words.
|
|
381
|
+
*
|
|
382
|
+
* @param {number | string | bigint} value - The currency amount to convert
|
|
383
|
+
* @param {Object} [options] - Optional configuration
|
|
384
|
+
* @param {boolean} [options.and=true] - Use "and" between dollars and cents
|
|
385
|
+
* @returns {string} The amount in Australian English currency words
|
|
386
|
+
* @throws {TypeError} If value is not a valid numeric type
|
|
387
|
+
* @throws {Error} If value is not a valid number format
|
|
388
|
+
*
|
|
389
|
+
* @example
|
|
390
|
+
* toCurrency(42.50) // 'forty-two dollars and fifty cents'
|
|
391
|
+
* toCurrency(1) // 'one dollar'
|
|
392
|
+
* toCurrency(0.99) // 'ninety-nine cents'
|
|
393
|
+
* toCurrency(42.50, { and: false }) // 'forty-two dollars fifty cents'
|
|
394
|
+
*/
|
|
395
|
+
function toCurrency (value, options) {
|
|
396
|
+
options = validateOptions(options)
|
|
397
|
+
const { isNegative, dollars, cents } = parseCurrencyValue(value)
|
|
398
|
+
const { and: useAnd = true } = options
|
|
399
|
+
|
|
400
|
+
let result = ''
|
|
401
|
+
if (isNegative) result = NEGATIVE + ' '
|
|
402
|
+
|
|
403
|
+
if (dollars > 0n || cents === 0n) {
|
|
404
|
+
result += integerToWords(dollars)
|
|
405
|
+
result += ' ' + (dollars === 1n ? DOLLAR : DOLLARS)
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
if (cents > 0n) {
|
|
409
|
+
if (dollars > 0n) {
|
|
410
|
+
result += useAnd ? ' and ' : ' '
|
|
411
|
+
}
|
|
412
|
+
result += integerToWords(cents)
|
|
413
|
+
result += ' ' + (cents === 1n ? CENT : CENTS)
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
return result
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
// ============================================================================
|
|
420
|
+
// Public API
|
|
421
|
+
// ============================================================================
|
|
422
|
+
|
|
423
|
+
export { toCardinal, toOrdinal, toCurrency }
|
package/src/en-BD.d.ts
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts a numeric value to English words using Indian numbering.
|
|
3
|
+
*
|
|
4
|
+
* @param {number | string | bigint} value - The numeric value to convert
|
|
5
|
+
* @returns {string} The number in English words
|
|
6
|
+
* @throws {TypeError} If value is not a valid numeric type
|
|
7
|
+
* @throws {Error} If value is not a valid number format
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* toCardinal(42) // 'forty-two'
|
|
11
|
+
* toCardinal(100000) // 'one lakh'
|
|
12
|
+
* toCardinal(10000000) // 'one crore'
|
|
13
|
+
* toCardinal(1234567) // 'twelve lakh thirty-four thousand five hundred and sixty-seven'
|
|
14
|
+
*/
|
|
15
|
+
export function toCardinal(value: number | string | bigint): string;
|
|
16
|
+
/**
|
|
17
|
+
* Converts a numeric value to English ordinal words using Indian numbering.
|
|
18
|
+
*
|
|
19
|
+
* @param {number | string | bigint} value - The numeric value to convert (must be a positive integer)
|
|
20
|
+
* @returns {string} The number as ordinal words
|
|
21
|
+
* @throws {TypeError} If value is not a valid numeric type
|
|
22
|
+
* @throws {RangeError} If value is negative, zero, or has a decimal part
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* toOrdinal(1) // 'first'
|
|
26
|
+
* toOrdinal(100000) // 'one lakhth'
|
|
27
|
+
* toOrdinal(100001) // 'one lakh first'
|
|
28
|
+
*/
|
|
29
|
+
export function toOrdinal(value: number | string | bigint): string;
|
|
30
|
+
/**
|
|
31
|
+
* Converts a numeric value to Bangladeshi English currency words.
|
|
32
|
+
*
|
|
33
|
+
* @param {number | string | bigint} value - The currency amount to convert
|
|
34
|
+
* @param {Object} [options] - Optional configuration
|
|
35
|
+
* @param {boolean} [options.and=true] - Use "and" between taka and paise
|
|
36
|
+
* @returns {string} The amount in Bangladeshi English currency words
|
|
37
|
+
* @throws {TypeError} If value is not a valid numeric type
|
|
38
|
+
* @throws {Error} If value is not a valid number format
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* toCurrency(42.50) // 'forty-two taka and fifty paise'
|
|
42
|
+
* toCurrency(100000) // 'one lakh taka'
|
|
43
|
+
* toCurrency(1) // 'one taka'
|
|
44
|
+
* toCurrency(0.50) // 'fifty paise'
|
|
45
|
+
* toCurrency(42.50, { and: false }) // 'forty-two taka fifty paise'
|
|
46
|
+
*/
|
|
47
|
+
export function toCurrency(value: number | string | bigint, options?: {
|
|
48
|
+
and?: boolean | undefined;
|
|
49
|
+
}): string;
|