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
package/src/fr-BE.js
ADDED
|
@@ -0,0 +1,453 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* French (Belgium) language converter
|
|
3
|
+
*
|
|
4
|
+
* CLDR: fr-BE | French as used in Belgium
|
|
5
|
+
*
|
|
6
|
+
* Belgian French differences from standard French:
|
|
7
|
+
* - septante (70) instead of soixante-dix
|
|
8
|
+
* - nonante (90) instead of quatre-vingt-dix
|
|
9
|
+
* - Keeps quatre-vingts (80) like standard French
|
|
10
|
+
* - Uses "septante et un" (71), "nonante et un" (91)
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import { parseCardinalValue } from './utils/parse-cardinal.js'
|
|
14
|
+
import { parseCurrencyValue } from './utils/parse-currency.js'
|
|
15
|
+
import { parseOrdinalValue } from './utils/parse-ordinal.js'
|
|
16
|
+
import { validateOptions } from './utils/validate-options.js'
|
|
17
|
+
|
|
18
|
+
// ============================================================================
|
|
19
|
+
// Vocabulary
|
|
20
|
+
// ============================================================================
|
|
21
|
+
|
|
22
|
+
const ONES = ['', 'un', 'deux', 'trois', 'quatre', 'cinq', 'six', 'sept', 'huit', 'neuf']
|
|
23
|
+
const TEENS = ['dix', 'onze', 'douze', 'treize', 'quatorze', 'quinze', 'seize', 'dix-sept', 'dix-huit', 'dix-neuf']
|
|
24
|
+
const TENS = ['', '', 'vingt', 'trente', 'quarante', 'cinquante', 'soixante', 'septante', 'quatre-vingt', 'nonante']
|
|
25
|
+
|
|
26
|
+
// Scale words (long scale with -ard forms)
|
|
27
|
+
const SCALES = ['million', 'billion', 'trillion', 'quadrillion']
|
|
28
|
+
const SCALES_ARD = ['milliard', 'billiard', 'trilliard', 'quadrilliard']
|
|
29
|
+
|
|
30
|
+
const THOUSAND = 'mille'
|
|
31
|
+
const HUNDRED = 'cent'
|
|
32
|
+
const ZERO = 'zéro'
|
|
33
|
+
const NEGATIVE = 'moins'
|
|
34
|
+
const DECIMAL_SEP = 'virgule'
|
|
35
|
+
|
|
36
|
+
// ============================================================================
|
|
37
|
+
// Ordinal Vocabulary
|
|
38
|
+
// ============================================================================
|
|
39
|
+
|
|
40
|
+
// Ordinal suffix
|
|
41
|
+
const ORDINAL_SUFFIX = 'ième'
|
|
42
|
+
|
|
43
|
+
// Special ordinals
|
|
44
|
+
const PREMIER = 'premier'
|
|
45
|
+
|
|
46
|
+
// ============================================================================
|
|
47
|
+
// Currency Vocabulary (Euro)
|
|
48
|
+
// ============================================================================
|
|
49
|
+
|
|
50
|
+
const EURO = 'euro'
|
|
51
|
+
const EUROS = 'euros'
|
|
52
|
+
const CENTIME = 'centime'
|
|
53
|
+
const CENTIMES = 'centimes'
|
|
54
|
+
|
|
55
|
+
// ============================================================================
|
|
56
|
+
// Segment Building
|
|
57
|
+
// ============================================================================
|
|
58
|
+
|
|
59
|
+
function buildSegment (n) {
|
|
60
|
+
if (n === 0) return { word: '', endsWithCents: false, endsWithVingts: false }
|
|
61
|
+
|
|
62
|
+
const tensOnes = n % 100
|
|
63
|
+
const hundreds = Math.trunc(n / 100)
|
|
64
|
+
|
|
65
|
+
const parts = []
|
|
66
|
+
let endsWithCents = false
|
|
67
|
+
let endsWithVingts = false
|
|
68
|
+
|
|
69
|
+
// Hundreds
|
|
70
|
+
if (hundreds > 0) {
|
|
71
|
+
if (hundreds === 1) {
|
|
72
|
+
parts.push(HUNDRED)
|
|
73
|
+
} else {
|
|
74
|
+
if (tensOnes === 0) {
|
|
75
|
+
parts.push(ONES[hundreds] + ' ' + HUNDRED + 's')
|
|
76
|
+
endsWithCents = true
|
|
77
|
+
} else {
|
|
78
|
+
parts.push(ONES[hundreds] + ' ' + HUNDRED)
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// Tens and ones - Belgian pattern
|
|
84
|
+
if (tensOnes === 0) {
|
|
85
|
+
// Just hundreds
|
|
86
|
+
} else if (tensOnes < 10) {
|
|
87
|
+
parts.push(ONES[tensOnes])
|
|
88
|
+
} else if (tensOnes < 17) {
|
|
89
|
+
parts.push(TEENS[tensOnes - 10])
|
|
90
|
+
} else if (tensOnes < 20) {
|
|
91
|
+
parts.push(TEENS[tensOnes - 10])
|
|
92
|
+
} else if (tensOnes < 70) {
|
|
93
|
+
// 20-69: standard pattern
|
|
94
|
+
const t = Math.trunc(tensOnes / 10)
|
|
95
|
+
const o = tensOnes % 10
|
|
96
|
+
if (o === 0) {
|
|
97
|
+
parts.push(TENS[t])
|
|
98
|
+
} else if (o === 1) {
|
|
99
|
+
parts.push(TENS[t] + ' et ' + ONES[1])
|
|
100
|
+
} else {
|
|
101
|
+
parts.push(TENS[t] + '-' + ONES[o])
|
|
102
|
+
}
|
|
103
|
+
} else if (tensOnes < 80) {
|
|
104
|
+
// 70-79: septante pattern (Belgian)
|
|
105
|
+
const o = tensOnes % 10
|
|
106
|
+
if (o === 0) {
|
|
107
|
+
parts.push('septante')
|
|
108
|
+
} else if (o === 1) {
|
|
109
|
+
parts.push('septante et ' + ONES[1])
|
|
110
|
+
} else {
|
|
111
|
+
parts.push('septante-' + ONES[o])
|
|
112
|
+
}
|
|
113
|
+
} else if (tensOnes === 80) {
|
|
114
|
+
// 80: quatre-vingts (same as standard)
|
|
115
|
+
parts.push('quatre-vingts')
|
|
116
|
+
endsWithVingts = true
|
|
117
|
+
} else if (tensOnes < 90) {
|
|
118
|
+
// 81-89: quatre-vingt-X (same as standard)
|
|
119
|
+
const remainder = tensOnes - 80
|
|
120
|
+
parts.push('quatre-vingt-' + ONES[remainder])
|
|
121
|
+
} else {
|
|
122
|
+
// 90-99: nonante pattern (Belgian)
|
|
123
|
+
const o = tensOnes % 10
|
|
124
|
+
if (o === 0) {
|
|
125
|
+
parts.push('nonante')
|
|
126
|
+
} else if (o === 1) {
|
|
127
|
+
parts.push('nonante et ' + ONES[1])
|
|
128
|
+
} else {
|
|
129
|
+
parts.push('nonante-' + ONES[o])
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
return { word: parts.join(' '), endsWithCents, endsWithVingts }
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// ============================================================================
|
|
137
|
+
// Helper Functions
|
|
138
|
+
// ============================================================================
|
|
139
|
+
|
|
140
|
+
function getScaleWord (scaleIndex, segment) {
|
|
141
|
+
if (scaleIndex === 1) return THOUSAND
|
|
142
|
+
|
|
143
|
+
if (scaleIndex % 2 === 0) {
|
|
144
|
+
const arrayIndex = (scaleIndex / 2) - 1
|
|
145
|
+
const baseWord = SCALES[arrayIndex]
|
|
146
|
+
if (!baseWord) return ''
|
|
147
|
+
return segment > 1n ? baseWord + 's' : baseWord
|
|
148
|
+
} else {
|
|
149
|
+
const arrayIndex = ((scaleIndex - 1) / 2) - 1
|
|
150
|
+
const ardWord = SCALES_ARD[arrayIndex]
|
|
151
|
+
if (!ardWord) return THOUSAND
|
|
152
|
+
return segment > 1n ? ardWord + 's' : ardWord
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
// ============================================================================
|
|
157
|
+
// Conversion Functions
|
|
158
|
+
// ============================================================================
|
|
159
|
+
|
|
160
|
+
function integerToWords (n, withHyphen = false) {
|
|
161
|
+
if (n === 0n) return ZERO
|
|
162
|
+
|
|
163
|
+
if (n < 1000n) {
|
|
164
|
+
const { word } = buildSegment(Number(n))
|
|
165
|
+
return withHyphen ? word.replace(/ /g, '-') : word
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
if (n < 1_000_000n) {
|
|
169
|
+
const thousands = Number(n / 1000n)
|
|
170
|
+
const remainder = Number(n % 1000n)
|
|
171
|
+
|
|
172
|
+
let result
|
|
173
|
+
if (thousands === 1) {
|
|
174
|
+
result = THOUSAND
|
|
175
|
+
} else {
|
|
176
|
+
const { word: thousandsWord, endsWithCents, endsWithVingts } = buildSegment(thousands)
|
|
177
|
+
let adjustedWord = thousandsWord
|
|
178
|
+
if (endsWithCents || endsWithVingts) {
|
|
179
|
+
adjustedWord = thousandsWord.slice(0, -1)
|
|
180
|
+
}
|
|
181
|
+
result = adjustedWord + (withHyphen ? '-' : ' ') + THOUSAND
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
if (remainder > 0) {
|
|
185
|
+
const { word: remainderWord } = buildSegment(remainder)
|
|
186
|
+
result += (withHyphen ? '-' : ' ') + remainderWord
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
if (withHyphen) {
|
|
190
|
+
result = result.replace(/ /g, '-')
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
return result
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
return buildLargeNumberWords(n, withHyphen)
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
function buildLargeNumberWords (n, withHyphen) {
|
|
200
|
+
const numStr = n.toString()
|
|
201
|
+
const len = numStr.length
|
|
202
|
+
|
|
203
|
+
const segments = []
|
|
204
|
+
const segmentSize = 3
|
|
205
|
+
|
|
206
|
+
const remainderLen = len % segmentSize
|
|
207
|
+
let pos = 0
|
|
208
|
+
if (remainderLen > 0) {
|
|
209
|
+
segments.push(Number(numStr.slice(0, remainderLen)))
|
|
210
|
+
pos = remainderLen
|
|
211
|
+
}
|
|
212
|
+
while (pos < len) {
|
|
213
|
+
segments.push(Number(numStr.slice(pos, pos + segmentSize)))
|
|
214
|
+
pos += segmentSize
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
const parts = []
|
|
218
|
+
let scaleIndex = segments.length - 1
|
|
219
|
+
|
|
220
|
+
for (let i = 0; i < segments.length; i++) {
|
|
221
|
+
const segment = segments[i]
|
|
222
|
+
|
|
223
|
+
if (segment !== 0) {
|
|
224
|
+
const scaleWord = scaleIndex > 0 ? getScaleWord(scaleIndex, BigInt(segment)) : ''
|
|
225
|
+
const { word: segWords, endsWithCents, endsWithVingts } = buildSegment(segment)
|
|
226
|
+
|
|
227
|
+
if (scaleIndex === 0) {
|
|
228
|
+
parts.push(segWords)
|
|
229
|
+
} else if (scaleIndex === 1) {
|
|
230
|
+
if (segment === 1) {
|
|
231
|
+
parts.push(THOUSAND)
|
|
232
|
+
} else {
|
|
233
|
+
let adjustedWord = segWords
|
|
234
|
+
if (endsWithCents || endsWithVingts) {
|
|
235
|
+
adjustedWord = segWords.slice(0, -1)
|
|
236
|
+
}
|
|
237
|
+
parts.push(adjustedWord)
|
|
238
|
+
parts.push(scaleWord)
|
|
239
|
+
}
|
|
240
|
+
} else {
|
|
241
|
+
parts.push(segWords)
|
|
242
|
+
parts.push(scaleWord)
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
scaleIndex--
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
const sep = withHyphen ? '-' : ' '
|
|
250
|
+
let result = parts.join(sep)
|
|
251
|
+
|
|
252
|
+
if (withHyphen) {
|
|
253
|
+
result = result.replace(/ /g, '-')
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
return result
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
function decimalPartToWords (decimalPart, withHyphen) {
|
|
260
|
+
let result = ''
|
|
261
|
+
const sep = withHyphen ? '-' : ' '
|
|
262
|
+
|
|
263
|
+
let i = 0
|
|
264
|
+
while (i < decimalPart.length && decimalPart[i] === '0') {
|
|
265
|
+
if (result) result += sep
|
|
266
|
+
result += ZERO
|
|
267
|
+
i++
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
const remainder = decimalPart.slice(i)
|
|
271
|
+
if (remainder) {
|
|
272
|
+
if (result) result += sep
|
|
273
|
+
result += integerToWords(BigInt(remainder), withHyphen)
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
return result
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
/**
|
|
280
|
+
* Converts a numeric value to Belgian French words.
|
|
281
|
+
*
|
|
282
|
+
* @param {number | string | bigint} value - The numeric value to convert
|
|
283
|
+
* @param {Object} [options] - Optional configuration
|
|
284
|
+
* @param {boolean} [options.withHyphenSeparator=false] - Use hyphens between words
|
|
285
|
+
* @returns {string} The number in Belgian French words
|
|
286
|
+
*/
|
|
287
|
+
function toCardinal (value, options) {
|
|
288
|
+
options = validateOptions(options)
|
|
289
|
+
const { isNegative, integerPart, decimalPart } = parseCardinalValue(value)
|
|
290
|
+
|
|
291
|
+
// Apply option defaults
|
|
292
|
+
const { withHyphenSeparator = false } = options
|
|
293
|
+
|
|
294
|
+
let result = ''
|
|
295
|
+
const sep = withHyphenSeparator ? '-' : ' '
|
|
296
|
+
|
|
297
|
+
if (isNegative) {
|
|
298
|
+
result = NEGATIVE + sep
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
result += integerToWords(integerPart, withHyphenSeparator)
|
|
302
|
+
|
|
303
|
+
if (decimalPart) {
|
|
304
|
+
result += sep + DECIMAL_SEP + sep + decimalPartToWords(decimalPart, withHyphenSeparator)
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
return result
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
// ============================================================================
|
|
311
|
+
// ORDINAL: toOrdinal(value)
|
|
312
|
+
// ============================================================================
|
|
313
|
+
|
|
314
|
+
/**
|
|
315
|
+
* Converts a cardinal number word to its ordinal form.
|
|
316
|
+
* Rules:
|
|
317
|
+
* - 1 → premier (special case)
|
|
318
|
+
* - Drop final -e before adding -ième (quatre → quatrième)
|
|
319
|
+
* - cinq → cinquième (add -u- before -ième)
|
|
320
|
+
* - neuf → neuvième (f → v before -ième)
|
|
321
|
+
*
|
|
322
|
+
* @param {string} cardinalWord - Cardinal word to convert
|
|
323
|
+
* @returns {string} Ordinal form
|
|
324
|
+
*/
|
|
325
|
+
function cardinalToOrdinal (cardinalWord) {
|
|
326
|
+
// Handle special endings
|
|
327
|
+
if (cardinalWord.endsWith('cinq')) {
|
|
328
|
+
// cinq → cinquième (add 'u')
|
|
329
|
+
return cardinalWord + 'u' + ORDINAL_SUFFIX
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
if (cardinalWord.endsWith('neuf')) {
|
|
333
|
+
// neuf → neuvième (f → v)
|
|
334
|
+
return cardinalWord.slice(0, -1) + 'v' + ORDINAL_SUFFIX
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
// Drop plural -s from cents/vingts/millions/etc. (quatre-vingts → quatre-vingtième)
|
|
338
|
+
// Note: "trois", "six" also end in s but that's not a plural
|
|
339
|
+
if (cardinalWord.endsWith('cents') ||
|
|
340
|
+
cardinalWord.endsWith('vingts') ||
|
|
341
|
+
cardinalWord.endsWith('millions') ||
|
|
342
|
+
cardinalWord.endsWith('milliards') ||
|
|
343
|
+
cardinalWord.endsWith('billions') ||
|
|
344
|
+
cardinalWord.endsWith('billiards') ||
|
|
345
|
+
cardinalWord.endsWith('trillions') ||
|
|
346
|
+
cardinalWord.endsWith('trilliards') ||
|
|
347
|
+
cardinalWord.endsWith('quadrillions') ||
|
|
348
|
+
cardinalWord.endsWith('quadrilliards')) {
|
|
349
|
+
return cardinalWord.slice(0, -1) + ORDINAL_SUFFIX
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
// Drop final -e before adding -ième (quatre → quatrième)
|
|
353
|
+
if (cardinalWord.endsWith('e')) {
|
|
354
|
+
return cardinalWord.slice(0, -1) + ORDINAL_SUFFIX
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
// Default: just add -ième
|
|
358
|
+
return cardinalWord + ORDINAL_SUFFIX
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
/**
|
|
362
|
+
* Converts a positive integer to Belgian French ordinal words.
|
|
363
|
+
*
|
|
364
|
+
* @param {bigint} n - Positive integer
|
|
365
|
+
* @returns {string} Belgian French ordinal words
|
|
366
|
+
*/
|
|
367
|
+
function integerToOrdinal (n) {
|
|
368
|
+
// Special case: 1 → premier
|
|
369
|
+
if (n === 1n) {
|
|
370
|
+
return PREMIER
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
// Get cardinal form and convert to ordinal
|
|
374
|
+
const cardinalWord = integerToWords(n, false)
|
|
375
|
+
return cardinalToOrdinal(cardinalWord)
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
/**
|
|
379
|
+
* Converts a numeric value to Belgian French ordinal words.
|
|
380
|
+
*
|
|
381
|
+
* Belgian French ordinals: premier (1st), then cardinal + ième.
|
|
382
|
+
* Special rules: quatre→quatrième, cinq→cinquième, neuf→neuvième.
|
|
383
|
+
*
|
|
384
|
+
* @param {number | string | bigint} value - The numeric value to convert (positive integer)
|
|
385
|
+
* @returns {string} The number as ordinal words
|
|
386
|
+
* @throws {TypeError} If value is not a valid numeric type
|
|
387
|
+
* @throws {RangeError} If value is negative, zero, or has a decimal part
|
|
388
|
+
*
|
|
389
|
+
* @example
|
|
390
|
+
* toOrdinal(1) // 'premier'
|
|
391
|
+
* toOrdinal(2) // 'deuxième'
|
|
392
|
+
* toOrdinal(70) // 'septantième'
|
|
393
|
+
* toOrdinal(90) // 'nonantième'
|
|
394
|
+
*/
|
|
395
|
+
function toOrdinal (value) {
|
|
396
|
+
const integerPart = parseOrdinalValue(value)
|
|
397
|
+
return integerToOrdinal(integerPart)
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
// ============================================================================
|
|
401
|
+
// CURRENCY: toCurrency(value, options?)
|
|
402
|
+
// ============================================================================
|
|
403
|
+
|
|
404
|
+
/**
|
|
405
|
+
* Converts a numeric value to Belgian French currency words (Euro).
|
|
406
|
+
*
|
|
407
|
+
* @param {number | string | bigint} value - The currency amount to convert
|
|
408
|
+
* @param {Object} [options] - Optional configuration
|
|
409
|
+
* @param {boolean} [options.and=true] - Use "et" between euros and centimes
|
|
410
|
+
* @returns {string} The amount in Belgian French currency words
|
|
411
|
+
* @throws {TypeError} If value is not a valid numeric type
|
|
412
|
+
* @throws {Error} If value is not a valid number format
|
|
413
|
+
*
|
|
414
|
+
* @example
|
|
415
|
+
* toCurrency(42.50) // 'quarante-deux euros et cinquante centimes'
|
|
416
|
+
* toCurrency(1) // 'un euro'
|
|
417
|
+
* toCurrency(0.99) // 'nonante-neuf centimes'
|
|
418
|
+
* toCurrency(0.01) // 'un centime'
|
|
419
|
+
* toCurrency(42.50, { and: false }) // 'quarante-deux euros cinquante centimes'
|
|
420
|
+
*/
|
|
421
|
+
function toCurrency (value, options) {
|
|
422
|
+
options = validateOptions(options)
|
|
423
|
+
const { isNegative, dollars: euros, cents: centimes } = parseCurrencyValue(value)
|
|
424
|
+
const { and: useAnd = true } = options
|
|
425
|
+
|
|
426
|
+
// Build result
|
|
427
|
+
let result = ''
|
|
428
|
+
if (isNegative) result = NEGATIVE + ' '
|
|
429
|
+
|
|
430
|
+
// Euros part
|
|
431
|
+
if (euros > 0n || centimes === 0n) {
|
|
432
|
+
result += integerToWords(euros, false)
|
|
433
|
+
// In French, 0 and 1 are singular: "zéro euro", "un euro"
|
|
434
|
+
result += ' ' + (euros <= 1n ? EURO : EUROS)
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
// Centimes part
|
|
438
|
+
if (centimes > 0n) {
|
|
439
|
+
if (euros > 0n) {
|
|
440
|
+
result += useAnd ? ' et ' : ' '
|
|
441
|
+
}
|
|
442
|
+
result += integerToWords(centimes, false)
|
|
443
|
+
result += ' ' + (centimes === 1n ? CENTIME : CENTIMES)
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
return result
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
// ============================================================================
|
|
450
|
+
// Exports
|
|
451
|
+
// ============================================================================
|
|
452
|
+
|
|
453
|
+
export { toCardinal, toOrdinal, toCurrency }
|
package/src/fr-FR.d.ts
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts a numeric value to French 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
|
+
* @param {Object} [options] - Optional configuration
|
|
9
|
+
* @param {boolean} [options.withHyphenSeparator=false] - Use hyphens between all words
|
|
10
|
+
* @returns {string} The number in French words
|
|
11
|
+
* @throws {TypeError} If value is not a valid numeric type
|
|
12
|
+
* @throws {Error} If value is not a valid number format
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* toCardinal(21) // 'vingt et un'
|
|
16
|
+
* toCardinal(80) // 'quatre-vingts'
|
|
17
|
+
* toCardinal(1000000) // 'un million'
|
|
18
|
+
*/
|
|
19
|
+
export function toCardinal(value: number | string | bigint, options?: {
|
|
20
|
+
withHyphenSeparator?: boolean | undefined;
|
|
21
|
+
}): string;
|
|
22
|
+
/**
|
|
23
|
+
* Converts a numeric value to French ordinal words.
|
|
24
|
+
*
|
|
25
|
+
* French ordinals: premier (1st), then cardinal + ième.
|
|
26
|
+
* Special rules: quatre→quatrième, cinq→cinquième, neuf→neuvième.
|
|
27
|
+
*
|
|
28
|
+
* @param {number | string | bigint} value - The numeric value to convert (positive integer)
|
|
29
|
+
* @returns {string} The number as ordinal words
|
|
30
|
+
* @throws {TypeError} If value is not a valid numeric type
|
|
31
|
+
* @throws {RangeError} If value is negative, zero, or has a decimal part
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* toOrdinal(1) // 'premier'
|
|
35
|
+
* toOrdinal(2) // 'deuxième'
|
|
36
|
+
* toOrdinal(4) // 'quatrième'
|
|
37
|
+
* toOrdinal(5) // 'cinquième'
|
|
38
|
+
* toOrdinal(9) // 'neuvième'
|
|
39
|
+
* toOrdinal(21) // 'vingt et unième'
|
|
40
|
+
* toOrdinal(100) // 'centième'
|
|
41
|
+
* toOrdinal(1000) // 'millième'
|
|
42
|
+
*/
|
|
43
|
+
export function toOrdinal(value: number | string | bigint): string;
|
|
44
|
+
/**
|
|
45
|
+
* Converts a numeric value to French currency words (Euro).
|
|
46
|
+
*
|
|
47
|
+
* @param {number | string | bigint} value - The currency amount to convert
|
|
48
|
+
* @param {Object} [options] - Optional configuration
|
|
49
|
+
* @param {boolean} [options.and=true] - Use "et" between euros and centimes
|
|
50
|
+
* @returns {string} The amount in French currency words
|
|
51
|
+
* @throws {TypeError} If value is not a valid numeric type
|
|
52
|
+
* @throws {Error} If value is not a valid number format
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* toCurrency(42.50) // 'quarante-deux euros et cinquante centimes'
|
|
56
|
+
* toCurrency(1) // 'un euro'
|
|
57
|
+
* toCurrency(0.99) // 'quatre-vingt-dix-neuf centimes'
|
|
58
|
+
* toCurrency(0.01) // 'un centime'
|
|
59
|
+
* toCurrency(42.50, { and: false }) // 'quarante-deux euros cinquante centimes'
|
|
60
|
+
*/
|
|
61
|
+
export function toCurrency(value: number | string | bigint, options?: {
|
|
62
|
+
and?: boolean | undefined;
|
|
63
|
+
}): string;
|