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/kn-IN.d.ts
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts a numeric value to Kannada words.
|
|
3
|
+
*
|
|
4
|
+
* @param {number | string | bigint} value - The numeric value to convert
|
|
5
|
+
* @returns {string} The number in Kannada words
|
|
6
|
+
*/
|
|
7
|
+
export function toCardinal(value: number | string | bigint): string;
|
|
8
|
+
/**
|
|
9
|
+
* Converts a numeric value to Kannada ordinal words.
|
|
10
|
+
*
|
|
11
|
+
* @param {number | string | bigint} value - The numeric value to convert (positive integer)
|
|
12
|
+
* @returns {string} The number as ordinal words
|
|
13
|
+
* @throws {TypeError} If value is not a valid numeric type
|
|
14
|
+
* @throws {RangeError} If value is negative, zero, or has a decimal part
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* toOrdinal(1) // 'ಮೊದಲನೇ'
|
|
18
|
+
* toOrdinal(2) // 'ಎರಡನೇ'
|
|
19
|
+
* toOrdinal(10) // 'ಹತ್ತುನೇ'
|
|
20
|
+
*/
|
|
21
|
+
export function toOrdinal(value: number | string | bigint): string;
|
|
22
|
+
/**
|
|
23
|
+
* Converts a numeric value to Kannada currency words (Indian Rupee).
|
|
24
|
+
*
|
|
25
|
+
* @param {number | string | bigint} value - The currency amount to convert
|
|
26
|
+
* @returns {string} The amount in Kannada currency words
|
|
27
|
+
* @throws {TypeError} If value is not a valid numeric type
|
|
28
|
+
* @throws {Error} If value is not a valid number format
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* toCurrency(42.50) // 'ನಲವತ್ತೆರಡು ರೂಪಾಯಿಗಳು ಐವತ್ತು ಪೈಸೆಗಳು'
|
|
32
|
+
* toCurrency(1) // 'ಒಂದು ರೂಪಾಯಿ'
|
|
33
|
+
* toCurrency(0.01) // 'ಒಂದು ಪೈಸೆ'
|
|
34
|
+
*/
|
|
35
|
+
export function toCurrency(value: number | string | bigint): string;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Kannada language converter
|
|
2
|
+
* Kannada (India) language converter
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* CLDR: kn-IN | Kannada as used in India
|
|
5
5
|
*
|
|
6
6
|
* Key features:
|
|
7
7
|
* - Indian numbering system (ಸಾವಿರ, ಲಕ್ಷ, ಕೋಟಿ)
|
|
@@ -11,7 +11,9 @@
|
|
|
11
11
|
* - Per-digit decimal reading
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
|
-
import {
|
|
14
|
+
import { parseCardinalValue } from './utils/parse-cardinal.js'
|
|
15
|
+
import { parseCurrencyValue } from './utils/parse-currency.js'
|
|
16
|
+
import { parseOrdinalValue } from './utils/parse-ordinal.js'
|
|
15
17
|
|
|
16
18
|
// ============================================================================
|
|
17
19
|
// Vocabulary
|
|
@@ -22,6 +24,28 @@ const NEGATIVE = 'ಋಣಾತ್ಮಕ'
|
|
|
22
24
|
const DECIMAL_SEP = 'ದಶಮಾಂಶ'
|
|
23
25
|
const HUNDRED = 'ನೂರು'
|
|
24
26
|
|
|
27
|
+
// ============================================================================
|
|
28
|
+
// Ordinal Vocabulary
|
|
29
|
+
// ============================================================================
|
|
30
|
+
|
|
31
|
+
// Ordinal suffix
|
|
32
|
+
const ORDINAL_SUFFIX = 'ನೇ'
|
|
33
|
+
|
|
34
|
+
// Special ordinals for first few numbers
|
|
35
|
+
const ORDINAL_SPECIAL = ['', 'ಮೊದಲನೇ', 'ಎರಡನೇ', 'ಮೂರನೇ', 'ನಾಲ್ಕನೇ', 'ಐದನೇ', 'ಆರನೇ']
|
|
36
|
+
|
|
37
|
+
// ============================================================================
|
|
38
|
+
// Currency Vocabulary (Indian Rupee)
|
|
39
|
+
// ============================================================================
|
|
40
|
+
|
|
41
|
+
// Rupee (singular/plural same in Kannada)
|
|
42
|
+
const RUPEE = 'ರೂಪಾಯಿ'
|
|
43
|
+
const RUPEES = 'ರೂಪಾಯಿಗಳು'
|
|
44
|
+
|
|
45
|
+
// Paisa (singular/plural same in Kannada)
|
|
46
|
+
const PAISA = 'ಪೈಸೆ'
|
|
47
|
+
const PAISE = 'ಪೈಸೆಗಳು'
|
|
48
|
+
|
|
25
49
|
const BELOW_HUNDRED = [
|
|
26
50
|
'ಸೊನ್ನೆ', 'ಒಂದು', 'ಎರಡು', 'ಮೂರು', 'ನಾಲ್ಕು', 'ಐದು', 'ಆರು', 'ಏಳು', 'ಎಂಟು', 'ಒಂಬತ್ತು',
|
|
27
51
|
'ಹತ್ತು', 'ಹನ್ನೊಂದು', 'ಹನ್ನೆರಡು', 'ಹದಿಮೂರು', 'ಹದಿನಾಲ್ಕು', 'ಹದಿನೈದು', 'ಹದಿನಾರು', 'ಹದಿನೇಳು', 'ಹದಿನೆಂಟು', 'ಹತ್ತೊಂಬತ್ತು',
|
|
@@ -39,26 +63,13 @@ const BELOW_HUNDRED = [
|
|
|
39
63
|
const SCALE_WORDS = ['', 'ಸಾವಿರ', 'ಲಕ್ಷ', 'ಕೋಟಿ', 'ಅಬ್ಜ', 'ಖರ್ವ', 'ನೀಲ', 'ಪದ್ಮ', 'ಶಂಖ']
|
|
40
64
|
|
|
41
65
|
// ============================================================================
|
|
42
|
-
// Segment
|
|
66
|
+
// Segment Building
|
|
43
67
|
// ============================================================================
|
|
44
68
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
const segments = []
|
|
50
|
-
segments.unshift(Number(numStr.slice(-3)))
|
|
51
|
-
|
|
52
|
-
let remaining = numStr.slice(0, -3)
|
|
53
|
-
while (remaining.length > 0) {
|
|
54
|
-
segments.unshift(Number(remaining.slice(-2)))
|
|
55
|
-
remaining = remaining.slice(0, -2)
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
return segments
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
function segmentToWords (n) {
|
|
69
|
+
/**
|
|
70
|
+
* Builds words for a 0-999 segment.
|
|
71
|
+
*/
|
|
72
|
+
function buildSegment (n) {
|
|
62
73
|
if (n === 0) return ''
|
|
63
74
|
if (n < 100) return BELOW_HUNDRED[n]
|
|
64
75
|
|
|
@@ -75,25 +86,51 @@ function segmentToWords (n) {
|
|
|
75
86
|
// Conversion Functions
|
|
76
87
|
// ============================================================================
|
|
77
88
|
|
|
89
|
+
/**
|
|
90
|
+
* Converts a non-negative integer to Kannada words.
|
|
91
|
+
*
|
|
92
|
+
* Uses BigInt modulo for segment extraction (faster than string slicing).
|
|
93
|
+
* South Asian 3-2-2 grouping: first 3 digits, then groups of 2.
|
|
94
|
+
*
|
|
95
|
+
* @param {bigint} n - Non-negative integer to convert
|
|
96
|
+
* @returns {string} Kannada words
|
|
97
|
+
*/
|
|
78
98
|
function integerToWords (n) {
|
|
79
99
|
if (n === 0n) return ZERO
|
|
80
100
|
|
|
81
|
-
|
|
82
|
-
|
|
101
|
+
// Fast path: numbers < 1000 (direct lookup)
|
|
102
|
+
if (n < 1000n) {
|
|
103
|
+
return buildSegment(Number(n))
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// Extract segments using BigInt modulo
|
|
107
|
+
const segments = []
|
|
108
|
+
segments.push(Number(n % 1000n))
|
|
109
|
+
let temp = n / 1000n
|
|
110
|
+
|
|
111
|
+
while (temp > 0n) {
|
|
112
|
+
segments.push(Number(temp % 100n))
|
|
113
|
+
temp = temp / 100n
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// Build result string (process from most-significant to least)
|
|
83
117
|
const words = []
|
|
118
|
+
for (let i = segments.length - 1; i >= 0; i--) {
|
|
119
|
+
const segment = segments[i]
|
|
120
|
+
if (segment === 0) continue
|
|
84
121
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
122
|
+
if (i === 0) {
|
|
123
|
+
words.push(buildSegment(segment))
|
|
124
|
+
} else {
|
|
125
|
+
words.push(BELOW_HUNDRED[segment])
|
|
126
|
+
}
|
|
88
127
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
if (scaleIndex > 0 && SCALE_WORDS[scaleIndex]) {
|
|
92
|
-
words.push(SCALE_WORDS[scaleIndex])
|
|
128
|
+
if (i > 0 && SCALE_WORDS[i]) {
|
|
129
|
+
words.push(SCALE_WORDS[i])
|
|
93
130
|
}
|
|
94
131
|
}
|
|
95
132
|
|
|
96
|
-
return words.join(' ')
|
|
133
|
+
return words.join(' ')
|
|
97
134
|
}
|
|
98
135
|
|
|
99
136
|
function decimalPartToWords (decimalPart) {
|
|
@@ -112,8 +149,8 @@ function decimalPartToWords (decimalPart) {
|
|
|
112
149
|
* @param {number | string | bigint} value - The numeric value to convert
|
|
113
150
|
* @returns {string} The number in Kannada words
|
|
114
151
|
*/
|
|
115
|
-
function
|
|
116
|
-
const { isNegative, integerPart, decimalPart } =
|
|
152
|
+
function toCardinal (value) {
|
|
153
|
+
const { isNegative, integerPart, decimalPart } = parseCardinalValue(value)
|
|
117
154
|
|
|
118
155
|
let result = ''
|
|
119
156
|
|
|
@@ -130,8 +167,93 @@ function toWords (value) {
|
|
|
130
167
|
return result
|
|
131
168
|
}
|
|
132
169
|
|
|
170
|
+
// ============================================================================
|
|
171
|
+
// ORDINAL: toOrdinal(value)
|
|
172
|
+
// ============================================================================
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Converts a positive integer to Kannada ordinal words.
|
|
176
|
+
*
|
|
177
|
+
* Kannada ordinals: First 6 are special, then add -ನೇ suffix.
|
|
178
|
+
*
|
|
179
|
+
* @param {bigint} n - Positive integer to convert
|
|
180
|
+
* @returns {string} Kannada ordinal words
|
|
181
|
+
*/
|
|
182
|
+
function integerToOrdinal (n) {
|
|
183
|
+
// Special ordinals for 1-6
|
|
184
|
+
if (n >= 1n && n <= 6n) {
|
|
185
|
+
return ORDINAL_SPECIAL[Number(n)]
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
// For 7 and above, add suffix to cardinal
|
|
189
|
+
const cardinal = integerToWords(n)
|
|
190
|
+
return cardinal + ORDINAL_SUFFIX
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* Converts a numeric value to Kannada ordinal words.
|
|
195
|
+
*
|
|
196
|
+
* @param {number | string | bigint} value - The numeric value to convert (positive integer)
|
|
197
|
+
* @returns {string} The number as ordinal words
|
|
198
|
+
* @throws {TypeError} If value is not a valid numeric type
|
|
199
|
+
* @throws {RangeError} If value is negative, zero, or has a decimal part
|
|
200
|
+
*
|
|
201
|
+
* @example
|
|
202
|
+
* toOrdinal(1) // 'ಮೊದಲನೇ'
|
|
203
|
+
* toOrdinal(2) // 'ಎರಡನೇ'
|
|
204
|
+
* toOrdinal(10) // 'ಹತ್ತುನೇ'
|
|
205
|
+
*/
|
|
206
|
+
function toOrdinal (value) {
|
|
207
|
+
const integerPart = parseOrdinalValue(value)
|
|
208
|
+
return integerToOrdinal(integerPart)
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
// ============================================================================
|
|
212
|
+
// CURRENCY: toCurrency(value, options?)
|
|
213
|
+
// ============================================================================
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* Converts a numeric value to Kannada currency words (Indian Rupee).
|
|
217
|
+
*
|
|
218
|
+
* @param {number | string | bigint} value - The currency amount to convert
|
|
219
|
+
* @returns {string} The amount in Kannada currency words
|
|
220
|
+
* @throws {TypeError} If value is not a valid numeric type
|
|
221
|
+
* @throws {Error} If value is not a valid number format
|
|
222
|
+
*
|
|
223
|
+
* @example
|
|
224
|
+
* toCurrency(42.50) // 'ನಲವತ್ತೆರಡು ರೂಪಾಯಿಗಳು ಐವತ್ತು ಪೈಸೆಗಳು'
|
|
225
|
+
* toCurrency(1) // 'ಒಂದು ರೂಪಾಯಿ'
|
|
226
|
+
* toCurrency(0.01) // 'ಒಂದು ಪೈಸೆ'
|
|
227
|
+
*/
|
|
228
|
+
function toCurrency (value) {
|
|
229
|
+
const { isNegative, dollars: rupees, cents: paise } = parseCurrencyValue(value)
|
|
230
|
+
|
|
231
|
+
// Build result
|
|
232
|
+
let result = ''
|
|
233
|
+
if (isNegative) result = NEGATIVE + ' '
|
|
234
|
+
|
|
235
|
+
// Rupees part - show if non-zero, or if no paise
|
|
236
|
+
if (rupees > 0n || paise === 0n) {
|
|
237
|
+
result += integerToWords(rupees)
|
|
238
|
+
// Singular for 1 rupee, plural otherwise
|
|
239
|
+
result += ' ' + (rupees === 1n ? RUPEE : RUPEES)
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
// Paise part
|
|
243
|
+
if (paise > 0n) {
|
|
244
|
+
if (rupees > 0n) {
|
|
245
|
+
result += ' '
|
|
246
|
+
}
|
|
247
|
+
result += integerToWords(paise)
|
|
248
|
+
// Singular for 1 paisa, plural otherwise
|
|
249
|
+
result += ' ' + (paise === 1n ? PAISA : PAISE)
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
return result
|
|
253
|
+
}
|
|
254
|
+
|
|
133
255
|
// ============================================================================
|
|
134
256
|
// Exports
|
|
135
257
|
// ============================================================================
|
|
136
258
|
|
|
137
|
-
export {
|
|
259
|
+
export { toCardinal, toOrdinal, toCurrency }
|
package/src/ko-KR.d.ts
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts a numeric value to Korean words.
|
|
3
|
+
*
|
|
4
|
+
* @param {number | string | bigint} value - The numeric value to convert
|
|
5
|
+
* @returns {string} The number in Korean 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(21) // '이십일'
|
|
11
|
+
* toCardinal(10000) // '만'
|
|
12
|
+
* toCardinal(1000000) // '백만'
|
|
13
|
+
*/
|
|
14
|
+
export function toCardinal(value: number | string | bigint): string;
|
|
15
|
+
/**
|
|
16
|
+
* Converts a numeric value to Korean ordinal words.
|
|
17
|
+
*
|
|
18
|
+
* @param {number | string | bigint} value - The numeric value to convert (positive integer)
|
|
19
|
+
* @returns {string} The number as ordinal words
|
|
20
|
+
* @throws {TypeError} If value is not a valid numeric type
|
|
21
|
+
* @throws {RangeError} If value is negative, zero, or has a decimal part
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* toOrdinal(1) // '제일'
|
|
25
|
+
* toOrdinal(2) // '제이'
|
|
26
|
+
* toOrdinal(10) // '제십'
|
|
27
|
+
*/
|
|
28
|
+
export function toOrdinal(value: number | string | bigint): string;
|
|
29
|
+
/**
|
|
30
|
+
* Converts a numeric value to Korean currency words (Won).
|
|
31
|
+
*
|
|
32
|
+
* Korean Won has no subunit (jeon are historical).
|
|
33
|
+
* Amounts are rounded to whole won.
|
|
34
|
+
*
|
|
35
|
+
* @param {number | string | bigint} value - The currency amount to convert
|
|
36
|
+
* @returns {string} The amount in Korean 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) // '사십이원'
|
|
42
|
+
* toCurrency(1000) // '천원'
|
|
43
|
+
* toCurrency(-5) // '마이너스 오원'
|
|
44
|
+
*/
|
|
45
|
+
export function toCurrency(value: number | string | bigint): string;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Korean language converter
|
|
2
|
+
* Korean (South Korea) language converter
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* CLDR: ko-KR | Korean as used in South Korea
|
|
5
5
|
*
|
|
6
6
|
* Key features:
|
|
7
7
|
* - Myriad-based (만) grouping - 4 digits
|
|
@@ -10,7 +10,9 @@
|
|
|
10
10
|
* - Hangul numerals
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
|
-
import {
|
|
13
|
+
import { parseCardinalValue } from './utils/parse-cardinal.js'
|
|
14
|
+
import { parseCurrencyValue } from './utils/parse-currency.js'
|
|
15
|
+
import { parseOrdinalValue } from './utils/parse-ordinal.js'
|
|
14
16
|
|
|
15
17
|
// ============================================================================
|
|
16
18
|
// Vocabulary (module-level constants)
|
|
@@ -31,7 +33,19 @@ const DECIMAL_SEP = '점'
|
|
|
31
33
|
const SCALES = ['만', '억', '조', '경', '해', '자', '양']
|
|
32
34
|
|
|
33
35
|
// ============================================================================
|
|
34
|
-
//
|
|
36
|
+
// Ordinal Vocabulary
|
|
37
|
+
// ============================================================================
|
|
38
|
+
|
|
39
|
+
const ORDINAL_PREFIX = '제'
|
|
40
|
+
|
|
41
|
+
// ============================================================================
|
|
42
|
+
// Currency Vocabulary (Korean Won)
|
|
43
|
+
// ============================================================================
|
|
44
|
+
|
|
45
|
+
const WON = '원'
|
|
46
|
+
|
|
47
|
+
// ============================================================================
|
|
48
|
+
// Segment Building
|
|
35
49
|
// ============================================================================
|
|
36
50
|
|
|
37
51
|
/**
|
|
@@ -42,9 +56,9 @@ function buildSegment (n) {
|
|
|
42
56
|
if (n === 0) return ''
|
|
43
57
|
|
|
44
58
|
const ones = n % 10
|
|
45
|
-
const tens = Math.
|
|
46
|
-
const hundreds = Math.
|
|
47
|
-
const thousands = Math.
|
|
59
|
+
const tens = Math.trunc(n / 10) % 10
|
|
60
|
+
const hundreds = Math.trunc(n / 100) % 10
|
|
61
|
+
const thousands = Math.trunc(n / 1000)
|
|
48
62
|
|
|
49
63
|
let result = ''
|
|
50
64
|
|
|
@@ -83,13 +97,6 @@ function buildSegment (n) {
|
|
|
83
97
|
return result
|
|
84
98
|
}
|
|
85
99
|
|
|
86
|
-
// Precompute all 10000 segment words (0-9999) for myriad grouping
|
|
87
|
-
const SEGMENTS = new Array(10000)
|
|
88
|
-
|
|
89
|
-
for (let i = 0; i < 10000; i++) {
|
|
90
|
-
SEGMENTS[i] = buildSegment(i)
|
|
91
|
-
}
|
|
92
|
-
|
|
93
100
|
// ============================================================================
|
|
94
101
|
// Conversion Functions
|
|
95
102
|
// ============================================================================
|
|
@@ -103,9 +110,9 @@ for (let i = 0; i < 10000; i++) {
|
|
|
103
110
|
function integerToWords (n) {
|
|
104
111
|
if (n === 0n) return ZERO
|
|
105
112
|
|
|
106
|
-
// Fast path: numbers < 10000
|
|
113
|
+
// Fast path: numbers < 10000
|
|
107
114
|
if (n < 10000n) {
|
|
108
|
-
return
|
|
115
|
+
return buildSegment(Number(n))
|
|
109
116
|
}
|
|
110
117
|
|
|
111
118
|
// For numbers >= 10000, use myriad decomposition
|
|
@@ -148,7 +155,7 @@ function buildLargeNumberWords (n) {
|
|
|
148
155
|
if (segment !== 0) {
|
|
149
156
|
if (scaleIndex === 0) {
|
|
150
157
|
// Units segment (no scale word)
|
|
151
|
-
parts.push({ word:
|
|
158
|
+
parts.push({ word: buildSegment(segment), isScale: false })
|
|
152
159
|
} else {
|
|
153
160
|
// Segment with scale word
|
|
154
161
|
const scaleWord = SCALES[scaleIndex - 1]
|
|
@@ -157,7 +164,7 @@ function buildLargeNumberWords (n) {
|
|
|
157
164
|
if (segment === 1) {
|
|
158
165
|
parts.push({ word: scaleWord, isScale: true })
|
|
159
166
|
} else {
|
|
160
|
-
parts.push({ word:
|
|
167
|
+
parts.push({ word: buildSegment(segment), isScale: false })
|
|
161
168
|
parts.push({ word: scaleWord, isScale: true })
|
|
162
169
|
}
|
|
163
170
|
}
|
|
@@ -233,12 +240,12 @@ function decimalPartToWords (decimalPart) {
|
|
|
233
240
|
* @throws {Error} If value is not a valid number format
|
|
234
241
|
*
|
|
235
242
|
* @example
|
|
236
|
-
*
|
|
237
|
-
*
|
|
238
|
-
*
|
|
243
|
+
* toCardinal(21) // '이십일'
|
|
244
|
+
* toCardinal(10000) // '만'
|
|
245
|
+
* toCardinal(1000000) // '백만'
|
|
239
246
|
*/
|
|
240
|
-
function
|
|
241
|
-
const { isNegative, integerPart, decimalPart } =
|
|
247
|
+
function toCardinal (value) {
|
|
248
|
+
const { isNegative, integerPart, decimalPart } = parseCardinalValue(value)
|
|
242
249
|
|
|
243
250
|
const parts = []
|
|
244
251
|
|
|
@@ -256,8 +263,76 @@ function toWords (value) {
|
|
|
256
263
|
return parts.join(' ')
|
|
257
264
|
}
|
|
258
265
|
|
|
266
|
+
// ============================================================================
|
|
267
|
+
// ORDINAL: toOrdinal(value)
|
|
268
|
+
// ============================================================================
|
|
269
|
+
|
|
270
|
+
/**
|
|
271
|
+
* Converts a non-negative integer to Korean ordinal words.
|
|
272
|
+
*
|
|
273
|
+
* Korean ordinals use "제" prefix + Sino-Korean numeral.
|
|
274
|
+
*
|
|
275
|
+
* @param {bigint} n - Positive integer to convert
|
|
276
|
+
* @returns {string} Korean ordinal words
|
|
277
|
+
*/
|
|
278
|
+
function integerToOrdinal (n) {
|
|
279
|
+
return ORDINAL_PREFIX + integerToWords(n)
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
/**
|
|
283
|
+
* Converts a numeric value to Korean ordinal words.
|
|
284
|
+
*
|
|
285
|
+
* @param {number | string | bigint} value - The numeric value to convert (positive integer)
|
|
286
|
+
* @returns {string} The number as ordinal words
|
|
287
|
+
* @throws {TypeError} If value is not a valid numeric type
|
|
288
|
+
* @throws {RangeError} If value is negative, zero, or has a decimal part
|
|
289
|
+
*
|
|
290
|
+
* @example
|
|
291
|
+
* toOrdinal(1) // '제일'
|
|
292
|
+
* toOrdinal(2) // '제이'
|
|
293
|
+
* toOrdinal(10) // '제십'
|
|
294
|
+
*/
|
|
295
|
+
function toOrdinal (value) {
|
|
296
|
+
const integerPart = parseOrdinalValue(value)
|
|
297
|
+
return integerToOrdinal(integerPart)
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
// ============================================================================
|
|
301
|
+
// CURRENCY: toCurrency(value)
|
|
302
|
+
// ============================================================================
|
|
303
|
+
|
|
304
|
+
/**
|
|
305
|
+
* Converts a numeric value to Korean currency words (Won).
|
|
306
|
+
*
|
|
307
|
+
* Korean Won has no subunit (jeon are historical).
|
|
308
|
+
* Amounts are rounded to whole won.
|
|
309
|
+
*
|
|
310
|
+
* @param {number | string | bigint} value - The currency amount to convert
|
|
311
|
+
* @returns {string} The amount in Korean currency words
|
|
312
|
+
* @throws {TypeError} If value is not a valid numeric type
|
|
313
|
+
* @throws {Error} If value is not a valid number format
|
|
314
|
+
*
|
|
315
|
+
* @example
|
|
316
|
+
* toCurrency(42) // '사십이원'
|
|
317
|
+
* toCurrency(1000) // '천원'
|
|
318
|
+
* toCurrency(-5) // '마이너스 오원'
|
|
319
|
+
*/
|
|
320
|
+
function toCurrency (value) {
|
|
321
|
+
const { isNegative, dollars: won } = parseCurrencyValue(value)
|
|
322
|
+
|
|
323
|
+
let result = ''
|
|
324
|
+
if (isNegative) {
|
|
325
|
+
result = NEGATIVE + ' '
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
result += integerToWords(won)
|
|
329
|
+
result += WON
|
|
330
|
+
|
|
331
|
+
return result
|
|
332
|
+
}
|
|
333
|
+
|
|
259
334
|
// ============================================================================
|
|
260
335
|
// Public API
|
|
261
336
|
// ============================================================================
|
|
262
337
|
|
|
263
|
-
export {
|
|
338
|
+
export { toCardinal, toOrdinal, toCurrency }
|
package/src/lt-LT.d.ts
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts a numeric value to Lithuanian words.
|
|
3
|
+
*
|
|
4
|
+
* @param {number | string | bigint} value - The numeric value to convert
|
|
5
|
+
* @param {Object} [options] - Conversion options
|
|
6
|
+
* @param {string} [options.gender='masculine'] - Gender for numbers < 1000
|
|
7
|
+
* @returns {string} The number in Lithuanian words
|
|
8
|
+
* @throws {TypeError} If value is not a valid numeric type
|
|
9
|
+
* @throws {Error} If value is not a valid number format
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* toCardinal(42) // 'keturiasdešimt du'
|
|
13
|
+
* toCardinal(1, { gender: 'feminine' }) // 'viena'
|
|
14
|
+
* toCardinal(1000000) // 'vienas milijonas'
|
|
15
|
+
*/
|
|
16
|
+
export function toCardinal(value: number | string | bigint, options?: {
|
|
17
|
+
gender?: string | undefined;
|
|
18
|
+
}): string;
|
|
19
|
+
/**
|
|
20
|
+
* Converts a numeric value to Lithuanian ordinal words (masculine nominative).
|
|
21
|
+
*
|
|
22
|
+
* @param {number | string | bigint} value - The numeric value to convert (must be a positive integer)
|
|
23
|
+
* @returns {string} The number as ordinal words
|
|
24
|
+
* @throws {TypeError} If value is not a valid numeric type
|
|
25
|
+
* @throws {RangeError} If value is negative, zero, or has a decimal part
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* toOrdinal(1) // 'pirmas'
|
|
29
|
+
* toOrdinal(2) // 'antras'
|
|
30
|
+
* toOrdinal(21) // 'dvidešimt pirmas'
|
|
31
|
+
* toOrdinal(100) // 'šimtasis'
|
|
32
|
+
* toOrdinal(1000) // 'tūkstantasis'
|
|
33
|
+
*/
|
|
34
|
+
export function toOrdinal(value: number | string | bigint): string;
|
|
35
|
+
/**
|
|
36
|
+
* Converts a numeric value to Lithuanian currency words (Euro).
|
|
37
|
+
*
|
|
38
|
+
* @param {number | string | bigint} value - The currency amount to convert
|
|
39
|
+
* @returns {string} The amount in Lithuanian 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) // 'keturiasdešimt du eurai'
|
|
45
|
+
* toCurrency(1) // 'vienas euras'
|
|
46
|
+
* toCurrency(1.50) // 'vienas euras penkiasdešimt centų'
|
|
47
|
+
* toCurrency(-5) // 'minus penki eurai'
|
|
48
|
+
*/
|
|
49
|
+
export function toCurrency(value: number | string | bigint): string;
|