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
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Norwegian Bokmål language converter
|
|
2
|
+
* Norwegian Bokmål (Norway) language converter
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* CLDR: nb-NO | Norwegian Bokmål as used in Norway
|
|
5
5
|
*
|
|
6
6
|
* Key features:
|
|
7
7
|
* - Hyphenated tens+ones: "tjue-en" (21)
|
|
@@ -10,7 +10,9 @@
|
|
|
10
10
|
* - Short scale: million, milliard, billion, etc.
|
|
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)
|
|
@@ -32,7 +34,35 @@ const DECIMAL_SEP = 'komma'
|
|
|
32
34
|
const SCALES = ['million', 'milliard', 'billion', 'billiard', 'kvintillion', 'sekstillion', 'septillion', 'oktillion']
|
|
33
35
|
|
|
34
36
|
// ============================================================================
|
|
35
|
-
//
|
|
37
|
+
// Ordinal Vocabulary
|
|
38
|
+
// ============================================================================
|
|
39
|
+
|
|
40
|
+
// Norwegian ordinals: 1st-12th special forms, then cardinal + -de/-te
|
|
41
|
+
const ORDINAL_SPECIAL = {
|
|
42
|
+
1: 'første',
|
|
43
|
+
2: 'andre',
|
|
44
|
+
3: 'tredje',
|
|
45
|
+
4: 'fjerde',
|
|
46
|
+
5: 'femte',
|
|
47
|
+
6: 'sjette',
|
|
48
|
+
7: 'sjuende',
|
|
49
|
+
8: 'åttende',
|
|
50
|
+
9: 'niende',
|
|
51
|
+
10: 'tiende',
|
|
52
|
+
11: 'ellevte',
|
|
53
|
+
12: 'tolvte'
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// ============================================================================
|
|
57
|
+
// Currency Vocabulary (Norwegian Krone)
|
|
58
|
+
// ============================================================================
|
|
59
|
+
|
|
60
|
+
const KRONE = 'krone'
|
|
61
|
+
const KRONER = 'kroner' // plural
|
|
62
|
+
const ORE = 'øre' // same singular and plural
|
|
63
|
+
|
|
64
|
+
// ============================================================================
|
|
65
|
+
// Segment Building
|
|
36
66
|
// ============================================================================
|
|
37
67
|
|
|
38
68
|
/**
|
|
@@ -43,8 +73,8 @@ function buildSegment (n) {
|
|
|
43
73
|
if (n === 0) return { word: '', hasHundred: false }
|
|
44
74
|
|
|
45
75
|
const ones = n % 10
|
|
46
|
-
const tens = Math.
|
|
47
|
-
const hundreds = Math.
|
|
76
|
+
const tens = Math.trunc(n / 10) % 10
|
|
77
|
+
const hundreds = Math.trunc(n / 100)
|
|
48
78
|
|
|
49
79
|
const parts = []
|
|
50
80
|
let hasHundred = false
|
|
@@ -81,16 +111,6 @@ function buildSegment (n) {
|
|
|
81
111
|
return { word: parts[0] || '', hasHundred }
|
|
82
112
|
}
|
|
83
113
|
|
|
84
|
-
// Precompute all 1000 segment words (0-999)
|
|
85
|
-
const SEGMENTS = new Array(1000)
|
|
86
|
-
const SEGMENTS_HAS_HUNDRED = new Array(1000)
|
|
87
|
-
|
|
88
|
-
for (let i = 0; i < 1000; i++) {
|
|
89
|
-
const result = buildSegment(i)
|
|
90
|
-
SEGMENTS[i] = result.word
|
|
91
|
-
SEGMENTS_HAS_HUNDRED[i] = result.hasHundred
|
|
92
|
-
}
|
|
93
|
-
|
|
94
114
|
// ============================================================================
|
|
95
115
|
// Conversion Functions
|
|
96
116
|
// ============================================================================
|
|
@@ -104,9 +124,9 @@ for (let i = 0; i < 1000; i++) {
|
|
|
104
124
|
function integerToWords (n) {
|
|
105
125
|
if (n === 0n) return ZERO
|
|
106
126
|
|
|
107
|
-
// Fast path: numbers < 1000
|
|
127
|
+
// Fast path: numbers < 1000
|
|
108
128
|
if (n < 1000n) {
|
|
109
|
-
return
|
|
129
|
+
return buildSegment(Number(n)).word
|
|
110
130
|
}
|
|
111
131
|
|
|
112
132
|
// Fast path: numbers < 1,000,000 (thousands)
|
|
@@ -114,14 +134,15 @@ function integerToWords (n) {
|
|
|
114
134
|
const thousands = Number(n / 1000n)
|
|
115
135
|
const remainder = Number(n % 1000n)
|
|
116
136
|
|
|
117
|
-
let result =
|
|
137
|
+
let result = buildSegment(thousands).word + ' ' + THOUSAND
|
|
118
138
|
|
|
119
139
|
if (remainder > 0) {
|
|
140
|
+
const remainderResult = buildSegment(remainder)
|
|
120
141
|
// Comma before hundreds, " og " before small numbers
|
|
121
|
-
if (
|
|
122
|
-
result += ', ' +
|
|
142
|
+
if (remainderResult.hasHundred) {
|
|
143
|
+
result += ', ' + remainderResult.word
|
|
123
144
|
} else {
|
|
124
|
-
result += ' og ' +
|
|
145
|
+
result += ' og ' + remainderResult.word
|
|
125
146
|
}
|
|
126
147
|
}
|
|
127
148
|
|
|
@@ -165,19 +186,18 @@ function buildLargeNumberWords (n) {
|
|
|
165
186
|
const segment = segments[i]
|
|
166
187
|
|
|
167
188
|
if (segment !== 0) {
|
|
168
|
-
const
|
|
169
|
-
const hasHundred = SEGMENTS_HAS_HUNDRED[segment]
|
|
189
|
+
const segmentResult = buildSegment(segment)
|
|
170
190
|
|
|
171
191
|
if (scaleIndex === 0) {
|
|
172
192
|
// Units segment
|
|
173
|
-
parts.push({ word:
|
|
193
|
+
parts.push({ word: segmentResult.word, hasHundred: segmentResult.hasHundred, type: 'units' })
|
|
174
194
|
} else if (scaleIndex === 1) {
|
|
175
195
|
// Thousands
|
|
176
|
-
parts.push({ word:
|
|
196
|
+
parts.push({ word: segmentResult.word + ' ' + THOUSAND, hasHundred: false, type: 'thousand' })
|
|
177
197
|
} else {
|
|
178
198
|
// Millions+
|
|
179
199
|
const scaleWord = SCALES[scaleIndex - 2]
|
|
180
|
-
parts.push({ word:
|
|
200
|
+
parts.push({ word: segmentResult.word + ' ' + scaleWord, hasHundred: false, type: 'million' })
|
|
181
201
|
}
|
|
182
202
|
}
|
|
183
203
|
|
|
@@ -266,12 +286,12 @@ function decimalPartToWords (decimalPart) {
|
|
|
266
286
|
* @throws {Error} If value is not a valid number format
|
|
267
287
|
*
|
|
268
288
|
* @example
|
|
269
|
-
*
|
|
270
|
-
*
|
|
271
|
-
*
|
|
289
|
+
* toCardinal(21) // 'tjue-en'
|
|
290
|
+
* toCardinal(101) // 'en hundre og en'
|
|
291
|
+
* toCardinal(1000000) // 'en million'
|
|
272
292
|
*/
|
|
273
|
-
function
|
|
274
|
-
const { isNegative, integerPart, decimalPart } =
|
|
293
|
+
function toCardinal (value) {
|
|
294
|
+
const { isNegative, integerPart, decimalPart } = parseCardinalValue(value)
|
|
275
295
|
|
|
276
296
|
let result = ''
|
|
277
297
|
|
|
@@ -288,8 +308,120 @@ function toWords (value) {
|
|
|
288
308
|
return result
|
|
289
309
|
}
|
|
290
310
|
|
|
311
|
+
// ============================================================================
|
|
312
|
+
// ORDINAL: toOrdinal(value)
|
|
313
|
+
// ============================================================================
|
|
314
|
+
|
|
315
|
+
/**
|
|
316
|
+
* Converts a non-negative integer to Norwegian Bokmål ordinal words.
|
|
317
|
+
*
|
|
318
|
+
* Norwegian ordinals: første (1st), andre (2nd), tredje (3rd), etc.
|
|
319
|
+
* 1-12 have special forms, others use cardinal + de/te suffix.
|
|
320
|
+
* Teens (13-19): drop -en and add -ende (tretten → trettende)
|
|
321
|
+
* Numbers ending in 'en' (one): replace with 'ende' (tjue-en → tjue-ende)
|
|
322
|
+
* Numbers ending in 9 (ni): add 'ede' (nitti-ni → nitti-niede)
|
|
323
|
+
*
|
|
324
|
+
* @param {bigint} n - Positive integer to convert
|
|
325
|
+
* @returns {string} Norwegian ordinal words
|
|
326
|
+
*/
|
|
327
|
+
function integerToOrdinal (n) {
|
|
328
|
+
// Special forms for 1-12
|
|
329
|
+
if (n >= 1n && n <= 12n) {
|
|
330
|
+
return ORDINAL_SPECIAL[Number(n)]
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
const num = Number(n)
|
|
334
|
+
const cardinal = integerToWords(n)
|
|
335
|
+
|
|
336
|
+
// Teens 13-19: drop -en and add -ende
|
|
337
|
+
if (num >= 13 && num <= 19) {
|
|
338
|
+
// tretten → trettende, nitten → nittende
|
|
339
|
+
return cardinal.slice(0, -2) + 'ende'
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
// For other numbers, check if cardinal ends with 'en' (one)
|
|
343
|
+
// tjue-en → tjue-ende, en hundre og en → en hundre og ende
|
|
344
|
+
if (cardinal.endsWith('en')) {
|
|
345
|
+
return cardinal.slice(0, -2) + 'ende'
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
// Numbers ending in 'ni' (9): add 'ede'
|
|
349
|
+
// nitti-ni → nitti-niede
|
|
350
|
+
if (cardinal.endsWith('ni')) {
|
|
351
|
+
return cardinal + 'ede'
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
// Others use -de suffix
|
|
355
|
+
return cardinal + 'de'
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
/**
|
|
359
|
+
* Converts a numeric value to Norwegian Bokmål ordinal words.
|
|
360
|
+
*
|
|
361
|
+
* @param {number | string | bigint} value - The numeric value to convert (positive integer)
|
|
362
|
+
* @returns {string} The number as ordinal words
|
|
363
|
+
* @throws {TypeError} If value is not a valid numeric type
|
|
364
|
+
* @throws {RangeError} If value is negative, zero, or has a decimal part
|
|
365
|
+
*
|
|
366
|
+
* @example
|
|
367
|
+
* toOrdinal(1) // 'første'
|
|
368
|
+
* toOrdinal(2) // 'andre'
|
|
369
|
+
* toOrdinal(21) // 'tjue-ende'
|
|
370
|
+
*/
|
|
371
|
+
function toOrdinal (value) {
|
|
372
|
+
const integerPart = parseOrdinalValue(value)
|
|
373
|
+
return integerToOrdinal(integerPart)
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
// ============================================================================
|
|
377
|
+
// CURRENCY: toCurrency(value)
|
|
378
|
+
// ============================================================================
|
|
379
|
+
|
|
380
|
+
/**
|
|
381
|
+
* Converts a numeric value to Norwegian currency words (Norwegian Krone).
|
|
382
|
+
*
|
|
383
|
+
* Uses krone/kroner and øre (100 øre = 1 krone).
|
|
384
|
+
*
|
|
385
|
+
* @param {number | string | bigint} value - The currency amount to convert
|
|
386
|
+
* @returns {string} The amount in Norwegian currency words
|
|
387
|
+
* @throws {TypeError} If value is not a valid numeric type
|
|
388
|
+
* @throws {Error} If value is not a valid number format
|
|
389
|
+
*
|
|
390
|
+
* @example
|
|
391
|
+
* toCurrency(1) // 'en krone'
|
|
392
|
+
* toCurrency(42) // 'førti-to kroner'
|
|
393
|
+
* toCurrency(1.50) // 'en krone og femti øre'
|
|
394
|
+
*/
|
|
395
|
+
function toCurrency (value) {
|
|
396
|
+
const { isNegative, dollars: kroner, cents: ore } = parseCurrencyValue(value)
|
|
397
|
+
|
|
398
|
+
let result = ''
|
|
399
|
+
if (isNegative) {
|
|
400
|
+
result = NEGATIVE + ' '
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
// Kroner part
|
|
404
|
+
if (kroner > 0n || ore === 0n) {
|
|
405
|
+
if (kroner === 1n) {
|
|
406
|
+
result += 'en ' + KRONE
|
|
407
|
+
} else {
|
|
408
|
+
result += integerToWords(kroner) + ' ' + KRONER
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
// Øre part
|
|
413
|
+
if (ore > 0n) {
|
|
414
|
+
if (kroner > 0n) {
|
|
415
|
+
result += ' og '
|
|
416
|
+
}
|
|
417
|
+
result += integerToWords(ore) + ' ' + ORE
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
return result
|
|
421
|
+
}
|
|
422
|
+
|
|
291
423
|
// ============================================================================
|
|
292
424
|
// Public API
|
|
293
425
|
// ============================================================================
|
|
294
426
|
|
|
295
|
-
export {
|
|
427
|
+
export { toCardinal, toOrdinal, toCurrency }
|
package/src/nl-NL.d.ts
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts a numeric value to Dutch 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.accentOne=true] - Use "één" instead of "een"
|
|
10
|
+
* @param {boolean} [options.includeOptionalAnd=false] - Include "en" before small numbers
|
|
11
|
+
* @param {boolean} [options.noHundredPairing=false] - Disable hundred pairing (1104→duizend honderdvier)
|
|
12
|
+
* @returns {string} The number in Dutch words
|
|
13
|
+
* @throws {TypeError} If value is not a valid numeric type
|
|
14
|
+
* @throws {Error} If value is not a valid number format
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* toCardinal(21) // 'eenentwintig'
|
|
18
|
+
* toCardinal(1) // 'één'
|
|
19
|
+
* toCardinal(1, {accentOne: false}) // 'een'
|
|
20
|
+
* toCardinal(1104) // 'elfhonderd vier'
|
|
21
|
+
*/
|
|
22
|
+
export function toCardinal(value: number | string | bigint, options?: {
|
|
23
|
+
accentOne?: boolean | undefined;
|
|
24
|
+
includeOptionalAnd?: boolean | undefined;
|
|
25
|
+
noHundredPairing?: boolean | undefined;
|
|
26
|
+
}): string;
|
|
27
|
+
/**
|
|
28
|
+
* Converts a number to Dutch ordinal words.
|
|
29
|
+
*
|
|
30
|
+
* @param {number | string | bigint} value - The number to convert
|
|
31
|
+
* @returns {string} Dutch ordinal words
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* toOrdinal(1) // 'eerste'
|
|
35
|
+
* toOrdinal(21) // 'eenentwintigste'
|
|
36
|
+
* toOrdinal(100) // 'honderdste'
|
|
37
|
+
*/
|
|
38
|
+
export function toOrdinal(value: number | string | bigint): string;
|
|
39
|
+
/**
|
|
40
|
+
* Converts a number to Dutch currency words (Euro).
|
|
41
|
+
*
|
|
42
|
+
* @param {number | string | bigint} value - The amount to convert
|
|
43
|
+
* @param {Object} [options]
|
|
44
|
+
* @param {boolean} [options.and=true] - Include "en" between euros and cents
|
|
45
|
+
* @returns {string} Dutch currency words
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* toCurrency(42.50) // 'tweeënveertig euro en vijftig cent'
|
|
49
|
+
* toCurrency(1) // 'één euro'
|
|
50
|
+
* toCurrency(0.01) // 'één cent'
|
|
51
|
+
*/
|
|
52
|
+
export function toCurrency(value: number | string | bigint, options?: {
|
|
53
|
+
and?: boolean | undefined;
|
|
54
|
+
}): string;
|