n2words 1.24.0 → 2.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/README.md +285 -156
- package/dist/ArabicConverter.js +3 -0
- package/dist/ArabicConverter.js.map +1 -0
- package/dist/AzerbaijaniConverter.js +3 -0
- package/dist/AzerbaijaniConverter.js.map +1 -0
- package/dist/BanglaConverter.js +3 -0
- package/dist/BanglaConverter.js.map +1 -0
- package/dist/BiblicalHebrewConverter.js +3 -0
- package/dist/BiblicalHebrewConverter.js.map +1 -0
- package/dist/CroatianConverter.js +3 -0
- package/dist/CroatianConverter.js.map +1 -0
- package/dist/CzechConverter.js +3 -0
- package/dist/CzechConverter.js.map +1 -0
- package/dist/DanishConverter.js +3 -0
- package/dist/DanishConverter.js.map +1 -0
- package/dist/DutchConverter.js +3 -0
- package/dist/DutchConverter.js.map +1 -0
- package/dist/EnglishConverter.js +3 -0
- package/dist/EnglishConverter.js.map +1 -0
- package/dist/FilipinoConverter.js +3 -0
- package/dist/FilipinoConverter.js.map +1 -0
- package/dist/FrenchBelgiumConverter.js +3 -0
- package/dist/FrenchBelgiumConverter.js.map +1 -0
- package/dist/FrenchConverter.js +3 -0
- package/dist/FrenchConverter.js.map +1 -0
- package/dist/GermanConverter.js +3 -0
- package/dist/GermanConverter.js.map +1 -0
- package/dist/GreekConverter.js +3 -0
- package/dist/GreekConverter.js.map +1 -0
- package/dist/GujaratiConverter.js +3 -0
- package/dist/GujaratiConverter.js.map +1 -0
- package/dist/HebrewConverter.js +3 -0
- package/dist/HebrewConverter.js.map +1 -0
- package/dist/HindiConverter.js +3 -0
- package/dist/HindiConverter.js.map +1 -0
- package/dist/HungarianConverter.js +3 -0
- package/dist/HungarianConverter.js.map +1 -0
- package/dist/IndonesianConverter.js +3 -0
- package/dist/IndonesianConverter.js.map +1 -0
- package/dist/ItalianConverter.js +3 -0
- package/dist/ItalianConverter.js.map +1 -0
- package/dist/JapaneseConverter.js +3 -0
- package/dist/JapaneseConverter.js.map +1 -0
- package/dist/KannadaConverter.js +3 -0
- package/dist/KannadaConverter.js.map +1 -0
- package/dist/KoreanConverter.js +3 -0
- package/dist/KoreanConverter.js.map +1 -0
- package/dist/LatvianConverter.js +3 -0
- package/dist/LatvianConverter.js.map +1 -0
- package/dist/LithuanianConverter.js +3 -0
- package/dist/LithuanianConverter.js.map +1 -0
- package/dist/MalayConverter.js +3 -0
- package/dist/MalayConverter.js.map +1 -0
- package/dist/MarathiConverter.js +3 -0
- package/dist/MarathiConverter.js.map +1 -0
- package/dist/NorwegianBokmalConverter.js +3 -0
- package/dist/NorwegianBokmalConverter.js.map +1 -0
- package/dist/PersianConverter.js +3 -0
- package/dist/PersianConverter.js.map +1 -0
- package/dist/PolishConverter.js +3 -0
- package/dist/PolishConverter.js.map +1 -0
- package/dist/PortugueseConverter.js +3 -0
- package/dist/PortugueseConverter.js.map +1 -0
- package/dist/PunjabiConverter.js +3 -0
- package/dist/PunjabiConverter.js.map +1 -0
- package/dist/RomanianConverter.js +3 -0
- package/dist/RomanianConverter.js.map +1 -0
- package/dist/RussianConverter.js +3 -0
- package/dist/RussianConverter.js.map +1 -0
- package/dist/SerbianCyrillicConverter.js +3 -0
- package/dist/SerbianCyrillicConverter.js.map +1 -0
- package/dist/SerbianLatinConverter.js +3 -0
- package/dist/SerbianLatinConverter.js.map +1 -0
- package/dist/SimplifiedChineseConverter.js +3 -0
- package/dist/SimplifiedChineseConverter.js.map +1 -0
- package/dist/SpanishConverter.js +3 -0
- package/dist/SpanishConverter.js.map +1 -0
- package/dist/SwahiliConverter.js +3 -0
- package/dist/SwahiliConverter.js.map +1 -0
- package/dist/SwedishConverter.js +3 -0
- package/dist/SwedishConverter.js.map +1 -0
- package/dist/TamilConverter.js +3 -0
- package/dist/TamilConverter.js.map +1 -0
- package/dist/TeluguConverter.js +3 -0
- package/dist/TeluguConverter.js.map +1 -0
- package/dist/ThaiConverter.js +3 -0
- package/dist/ThaiConverter.js.map +1 -0
- package/dist/TraditionalChineseConverter.js +3 -0
- package/dist/TraditionalChineseConverter.js.map +1 -0
- package/dist/TurkishConverter.js +3 -0
- package/dist/TurkishConverter.js.map +1 -0
- package/dist/UkrainianConverter.js +3 -0
- package/dist/UkrainianConverter.js.map +1 -0
- package/dist/UrduConverter.js +3 -0
- package/dist/UrduConverter.js.map +1 -0
- package/dist/VietnameseConverter.js +3 -0
- package/dist/VietnameseConverter.js.map +1 -0
- package/dist/n2words.js +3 -2
- package/dist/n2words.js.map +1 -1
- package/lib/classes/abstract-language.d.ts +178 -0
- package/lib/classes/abstract-language.js +192 -185
- package/lib/classes/greedy-scale-language.d.ts +109 -0
- package/lib/classes/greedy-scale-language.js +96 -90
- package/lib/classes/slavic-language.d.ts +148 -0
- package/lib/classes/slavic-language.js +136 -106
- package/lib/classes/south-asian-language.d.ts +70 -0
- package/lib/classes/south-asian-language.js +58 -65
- package/lib/classes/turkic-language.d.ts +26 -0
- package/lib/classes/turkic-language.js +22 -26
- package/lib/languages/ar.d.ts +30 -0
- package/lib/languages/ar.js +49 -133
- package/lib/languages/az.d.ts +12 -0
- package/lib/languages/az.js +7 -23
- package/lib/languages/bn.d.ts +11 -0
- package/lib/languages/bn.js +12 -7
- package/lib/languages/cs.d.ts +88 -0
- package/lib/languages/cs.js +44 -113
- package/lib/languages/da.d.ts +15 -0
- package/lib/languages/da.js +40 -87
- package/lib/languages/de.d.ts +14 -0
- package/lib/languages/de.js +34 -68
- package/lib/languages/el.d.ts +14 -0
- package/lib/languages/el.js +22 -48
- package/lib/languages/en.d.ts +16 -0
- package/lib/languages/en.js +22 -59
- package/lib/languages/es.d.ts +15 -0
- package/lib/languages/es.js +49 -81
- package/lib/languages/fa.d.ts +47 -0
- package/lib/languages/fa.js +90 -73
- package/lib/languages/fil.d.ts +16 -0
- package/lib/languages/fil.js +35 -76
- package/lib/languages/fr-BE.d.ts +11 -0
- package/lib/languages/fr-BE.js +15 -51
- package/lib/languages/fr.d.ts +15 -0
- package/lib/languages/fr.js +33 -72
- package/lib/languages/gu.d.ts +11 -0
- package/lib/languages/gu.js +10 -34
- package/lib/languages/hbo.d.ts +113 -0
- package/lib/languages/hbo.js +251 -0
- package/lib/languages/he.d.ts +80 -0
- package/lib/languages/he.js +41 -164
- package/lib/languages/hi.d.ts +11 -0
- package/lib/languages/hi.js +12 -7
- package/lib/languages/hr.d.ts +80 -0
- package/lib/languages/hr.js +51 -95
- package/lib/languages/hu.d.ts +22 -0
- package/lib/languages/hu.js +35 -53
- package/lib/languages/id.d.ts +37 -0
- package/lib/languages/id.js +29 -44
- package/lib/languages/it.d.ts +37 -0
- package/lib/languages/it.js +36 -52
- package/lib/languages/ja.d.ts +17 -0
- package/lib/languages/ja.js +22 -75
- package/lib/languages/kn.d.ts +11 -0
- package/lib/languages/kn.js +10 -39
- package/lib/languages/ko.d.ts +14 -0
- package/lib/languages/ko.js +17 -45
- package/lib/languages/lt.d.ts +70 -0
- package/lib/languages/lt.js +28 -63
- package/lib/languages/lv.d.ts +70 -0
- package/lib/languages/lv.js +35 -58
- package/lib/languages/mr.d.ts +11 -0
- package/lib/languages/mr.js +10 -34
- package/lib/languages/ms.d.ts +31 -0
- package/lib/languages/ms.js +24 -20
- package/lib/languages/nb.d.ts +12 -0
- package/lib/languages/nb.js +36 -56
- package/lib/languages/nl.d.ts +16 -0
- package/lib/languages/nl.js +58 -109
- package/lib/languages/pa.d.ts +11 -0
- package/lib/languages/{pa-Guru.js → pa.js} +12 -7
- package/lib/languages/pl.d.ts +80 -0
- package/lib/languages/pl.js +26 -105
- package/lib/languages/pt.d.ts +29 -0
- package/lib/languages/pt.js +29 -64
- package/lib/languages/ro.d.ts +158 -0
- package/lib/languages/ro.js +60 -167
- package/lib/languages/ru.d.ts +85 -0
- package/lib/languages/ru.js +17 -37
- package/lib/languages/sr-Cyrl.d.ts +80 -0
- package/lib/languages/sr-Cyrl.js +113 -0
- package/lib/languages/sr-Latn.d.ts +80 -0
- package/lib/languages/sr-Latn.js +54 -98
- package/lib/languages/sv.d.ts +14 -0
- package/lib/languages/sv.js +26 -63
- package/lib/languages/sw.d.ts +39 -0
- package/lib/languages/sw.js +26 -21
- package/lib/languages/ta.d.ts +20 -0
- package/lib/languages/ta.js +26 -26
- package/lib/languages/te.d.ts +22 -0
- package/lib/languages/te.js +28 -38
- package/lib/languages/th.d.ts +17 -0
- package/lib/languages/th.js +25 -31
- package/lib/languages/tr.d.ts +12 -0
- package/lib/languages/tr.js +11 -38
- package/lib/languages/uk.d.ts +85 -0
- package/lib/languages/uk.js +18 -44
- package/lib/languages/ur.d.ts +11 -0
- package/lib/languages/ur.js +12 -7
- package/lib/languages/vi.d.ts +72 -0
- package/lib/languages/vi.js +25 -71
- package/lib/languages/zh-Hans.d.ts +21 -0
- package/lib/languages/zh-Hans.js +33 -87
- package/lib/languages/zh-Hant.d.ts +21 -0
- package/lib/languages/zh-Hant.js +111 -0
- package/lib/n2words.d.ts +209 -0
- package/lib/n2words.js +474 -191
- package/package.json +106 -67
- package/dist/languages/ar.js +0 -2
- package/dist/languages/ar.js.map +0 -1
- package/dist/languages/az.js +0 -2
- package/dist/languages/az.js.map +0 -1
- package/dist/languages/bn.js +0 -2
- package/dist/languages/bn.js.map +0 -1
- package/dist/languages/cs.js +0 -2
- package/dist/languages/cs.js.map +0 -1
- package/dist/languages/da.js +0 -2
- package/dist/languages/da.js.map +0 -1
- package/dist/languages/de.js +0 -2
- package/dist/languages/de.js.map +0 -1
- package/dist/languages/el.js +0 -2
- package/dist/languages/el.js.map +0 -1
- package/dist/languages/en.js +0 -2
- package/dist/languages/en.js.map +0 -1
- package/dist/languages/es.js +0 -2
- package/dist/languages/es.js.map +0 -1
- package/dist/languages/fa.js +0 -2
- package/dist/languages/fa.js.map +0 -1
- package/dist/languages/fil.js +0 -2
- package/dist/languages/fil.js.map +0 -1
- package/dist/languages/fr-BE.js +0 -2
- package/dist/languages/fr-BE.js.map +0 -1
- package/dist/languages/fr.js +0 -2
- package/dist/languages/fr.js.map +0 -1
- package/dist/languages/gu.js +0 -2
- package/dist/languages/gu.js.map +0 -1
- package/dist/languages/he.js +0 -2
- package/dist/languages/he.js.map +0 -1
- package/dist/languages/hi.js +0 -2
- package/dist/languages/hi.js.map +0 -1
- package/dist/languages/hr.js +0 -2
- package/dist/languages/hr.js.map +0 -1
- package/dist/languages/hu.js +0 -2
- package/dist/languages/hu.js.map +0 -1
- package/dist/languages/id.js +0 -2
- package/dist/languages/id.js.map +0 -1
- package/dist/languages/it.js +0 -2
- package/dist/languages/it.js.map +0 -1
- package/dist/languages/ja.js +0 -2
- package/dist/languages/ja.js.map +0 -1
- package/dist/languages/kn.js +0 -2
- package/dist/languages/kn.js.map +0 -1
- package/dist/languages/ko.js +0 -2
- package/dist/languages/ko.js.map +0 -1
- package/dist/languages/lt.js +0 -2
- package/dist/languages/lt.js.map +0 -1
- package/dist/languages/lv.js +0 -2
- package/dist/languages/lv.js.map +0 -1
- package/dist/languages/mr.js +0 -2
- package/dist/languages/mr.js.map +0 -1
- package/dist/languages/ms.js +0 -2
- package/dist/languages/ms.js.map +0 -1
- package/dist/languages/nb.js +0 -2
- package/dist/languages/nb.js.map +0 -1
- package/dist/languages/nl.js +0 -2
- package/dist/languages/nl.js.map +0 -1
- package/dist/languages/pa-Guru.js +0 -2
- package/dist/languages/pa-Guru.js.map +0 -1
- package/dist/languages/pl.js +0 -2
- package/dist/languages/pl.js.map +0 -1
- package/dist/languages/pt.js +0 -2
- package/dist/languages/pt.js.map +0 -1
- package/dist/languages/ro.js +0 -2
- package/dist/languages/ro.js.map +0 -1
- package/dist/languages/ru.js +0 -2
- package/dist/languages/ru.js.map +0 -1
- package/dist/languages/sr-Latn.js +0 -2
- package/dist/languages/sr-Latn.js.map +0 -1
- package/dist/languages/sv.js +0 -2
- package/dist/languages/sv.js.map +0 -1
- package/dist/languages/sw.js +0 -2
- package/dist/languages/sw.js.map +0 -1
- package/dist/languages/ta.js +0 -2
- package/dist/languages/ta.js.map +0 -1
- package/dist/languages/te.js +0 -2
- package/dist/languages/te.js.map +0 -1
- package/dist/languages/th.js +0 -2
- package/dist/languages/th.js.map +0 -1
- package/dist/languages/tr.js +0 -2
- package/dist/languages/tr.js.map +0 -1
- package/dist/languages/uk.js +0 -2
- package/dist/languages/uk.js.map +0 -1
- package/dist/languages/ur.js +0 -2
- package/dist/languages/ur.js.map +0 -1
- package/dist/languages/vi.js +0 -2
- package/dist/languages/vi.js.map +0 -1
- package/dist/languages/zh-Hans.js +0 -2
- package/dist/languages/zh-Hans.js.map +0 -1
- package/typings/classes/abstract-language.d.ts +0 -144
- package/typings/classes/greedy-scale-language.d.ts +0 -148
- package/typings/classes/slavic-language.d.ts +0 -145
- package/typings/classes/south-asian-language.d.ts +0 -101
- package/typings/classes/turkic-language.d.ts +0 -42
- package/typings/languages/ar.d.ts +0 -93
- package/typings/languages/az.d.ts +0 -25
- package/typings/languages/bn.d.ts +0 -1
- package/typings/languages/cs.d.ts +0 -120
- package/typings/languages/da.d.ts +0 -53
- package/typings/languages/de.d.ts +0 -26
- package/typings/languages/el.d.ts +0 -11
- package/typings/languages/en.d.ts +0 -30
- package/typings/languages/es.d.ts +0 -43
- package/typings/languages/fa.d.ts +0 -81
- package/typings/languages/fil.d.ts +0 -12
- package/typings/languages/fr-BE.d.ts +0 -41
- package/typings/languages/fr.d.ts +0 -43
- package/typings/languages/gu.d.ts +0 -12
- package/typings/languages/he.d.ts +0 -197
- package/typings/languages/hi.d.ts +0 -1
- package/typings/languages/hr.d.ts +0 -110
- package/typings/languages/hu.d.ts +0 -37
- package/typings/languages/id.d.ts +0 -69
- package/typings/languages/it.d.ts +0 -51
- package/typings/languages/ja.d.ts +0 -58
- package/typings/languages/kn.d.ts +0 -11
- package/typings/languages/ko.d.ts +0 -25
- package/typings/languages/lt.d.ts +0 -110
- package/typings/languages/lv.d.ts +0 -99
- package/typings/languages/mr.d.ts +0 -12
- package/typings/languages/ms.d.ts +0 -37
- package/typings/languages/nb.d.ts +0 -27
- package/typings/languages/nl.d.ts +0 -65
- package/typings/languages/pa-Guru.d.ts +0 -1
- package/typings/languages/pl.d.ts +0 -116
- package/typings/languages/pt.d.ts +0 -39
- package/typings/languages/ro.d.ts +0 -229
- package/typings/languages/ru.d.ts +0 -108
- package/typings/languages/sr-Latn.d.ts +0 -98
- package/typings/languages/sv.d.ts +0 -30
- package/typings/languages/sw.d.ts +0 -1
- package/typings/languages/ta.d.ts +0 -1
- package/typings/languages/te.d.ts +0 -1
- package/typings/languages/th.d.ts +0 -1
- package/typings/languages/tr.d.ts +0 -46
- package/typings/languages/uk.d.ts +0 -117
- package/typings/languages/ur.d.ts +0 -1
- package/typings/languages/vi.d.ts +0 -116
- package/typings/languages/zh-Hans.d.ts +0 -57
- package/typings/n2words.d.ts +0 -177
package/lib/languages/he.js
CHANGED
|
@@ -1,45 +1,22 @@
|
|
|
1
|
-
import SlavicLanguage from '../classes/slavic-language.js'
|
|
1
|
+
import { SlavicLanguage } from '../classes/slavic-language.js'
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
* @property {string} [and='ו'] Conjunction character (typically 'ו' for and).
|
|
6
|
-
* @property {boolean} [biblical=false] Use biblical scale words instead of modern ones.
|
|
7
|
-
* @property {boolean} [feminine=false] Use feminine forms for numbers.
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Hebrew language converter.
|
|
12
|
-
*
|
|
13
|
-
* Implements Hebrew number words using the Slavic language pattern:
|
|
14
|
-
* - Hebrew alphabet and right-to-left text
|
|
15
|
-
* - Hebrew number words (אחת, שתים, שלוש, ארבע...)
|
|
16
|
-
* - Feminine number forms (default in Hebrew)
|
|
17
|
-
* - Optional "ve" (ו, "and") conjunction between number groups
|
|
4
|
+
* Modern Hebrew language converter.
|
|
18
5
|
*
|
|
19
|
-
*
|
|
20
|
-
* - Three-form pluralization system shared across Slavic languages
|
|
21
|
-
* * Form 1 (singular): 1 (e.g., "אלף")
|
|
22
|
-
* * Form 2 (few): 2-4, 22-24, 32-34... excluding teens (e.g., "אלפים")
|
|
23
|
-
* * Form 3 (many): all other numbers (e.g., "אלף")
|
|
24
|
-
* - Chunk-based decomposition (splits into groups of 3 digits: ones, thousands, millions, etc.)
|
|
25
|
-
* - Large number handling via thousands[] array with indexed [singular, few, many] forms
|
|
26
|
-
*
|
|
27
|
-
* Features:
|
|
6
|
+
* Supports:
|
|
28
7
|
* - Right-to-left text orientation
|
|
29
|
-
* - Feminine grammatical
|
|
30
|
-
* - Three-form pluralization (
|
|
31
|
-
* -
|
|
32
|
-
*
|
|
33
|
-
* Inherits from SlavicLanguage for complex pluralization algorithms.
|
|
8
|
+
* - Feminine grammatical forms (default in Modern Hebrew)
|
|
9
|
+
* - Three-form pluralization (singular/few/many)
|
|
10
|
+
* - Optional "ve" (ו) conjunction via options
|
|
34
11
|
*/
|
|
35
12
|
export class Hebrew extends SlavicLanguage {
|
|
36
13
|
negativeWord = 'מינוס'
|
|
37
14
|
decimalSeparatorWord = 'נקודה'
|
|
38
15
|
zeroWord = 'אפס'
|
|
39
|
-
|
|
16
|
+
usePerDigitDecimals = true
|
|
40
17
|
|
|
41
|
-
//
|
|
42
|
-
|
|
18
|
+
// Feminine forms (default in Modern Hebrew)
|
|
19
|
+
onesWords = {
|
|
43
20
|
1: 'אחת',
|
|
44
21
|
2: 'שתים',
|
|
45
22
|
3: 'שלש',
|
|
@@ -51,7 +28,7 @@ export class Hebrew extends SlavicLanguage {
|
|
|
51
28
|
9: 'תשע'
|
|
52
29
|
}
|
|
53
30
|
|
|
54
|
-
|
|
31
|
+
teensWords = {
|
|
55
32
|
0: 'עשר',
|
|
56
33
|
1: 'אחת עשרה',
|
|
57
34
|
2: 'שתים עשרה',
|
|
@@ -64,7 +41,7 @@ export class Hebrew extends SlavicLanguage {
|
|
|
64
41
|
9: 'תשע עשרה'
|
|
65
42
|
}
|
|
66
43
|
|
|
67
|
-
|
|
44
|
+
twentiesWords = {
|
|
68
45
|
2: 'עשרים',
|
|
69
46
|
3: 'שלשים',
|
|
70
47
|
4: 'ארבעים',
|
|
@@ -75,13 +52,13 @@ export class Hebrew extends SlavicLanguage {
|
|
|
75
52
|
9: 'תשעים'
|
|
76
53
|
}
|
|
77
54
|
|
|
78
|
-
|
|
55
|
+
hundredsWords = {
|
|
79
56
|
1: 'מאה',
|
|
80
57
|
2: 'מאתיים',
|
|
81
58
|
3: 'מאות'
|
|
82
59
|
}
|
|
83
60
|
|
|
84
|
-
|
|
61
|
+
pluralForms = {
|
|
85
62
|
1: 'אלף',
|
|
86
63
|
2: 'אלפיים',
|
|
87
64
|
3: 'שלשת אלפים',
|
|
@@ -111,116 +88,29 @@ export class Hebrew extends SlavicLanguage {
|
|
|
111
88
|
6: 'קווינטיליונים' // quintillions
|
|
112
89
|
}
|
|
113
90
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
1: 'אחד',
|
|
117
|
-
2: 'שניים',
|
|
118
|
-
3: 'שלשה',
|
|
119
|
-
4: 'ארבעה',
|
|
120
|
-
5: 'חמשה',
|
|
121
|
-
6: 'ששה',
|
|
122
|
-
7: 'שבעה',
|
|
123
|
-
8: 'שמונה',
|
|
124
|
-
9: 'תשעה'
|
|
125
|
-
}
|
|
91
|
+
constructor (options = {}) {
|
|
92
|
+
super(options)
|
|
126
93
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
2: 'שנים עשר',
|
|
131
|
-
3: 'שלשה עשר',
|
|
132
|
-
4: 'ארבעה עשר',
|
|
133
|
-
5: 'חמשה עשר',
|
|
134
|
-
6: 'ששה עשר',
|
|
135
|
-
7: 'שבעה עשר',
|
|
136
|
-
8: 'שמונה עשר',
|
|
137
|
-
9: 'תשעה עשר'
|
|
94
|
+
this.setOptions({
|
|
95
|
+
andWord: 'ו'
|
|
96
|
+
}, options)
|
|
138
97
|
}
|
|
139
98
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
4: 'ארבעים',
|
|
144
|
-
5: 'חמישים',
|
|
145
|
-
6: 'ששים',
|
|
146
|
-
7: 'שבעים',
|
|
147
|
-
8: 'שמונים',
|
|
148
|
-
9: 'תשעים'
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
biblicalHundreds = {
|
|
152
|
-
1: 'מאה',
|
|
153
|
-
2: 'מאתיים',
|
|
154
|
-
3: 'מאות'
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
biblicalThousands = {
|
|
158
|
-
1: 'אלף',
|
|
159
|
-
2: 'אלפיים',
|
|
160
|
-
3: 'שלשת אלפים',
|
|
161
|
-
4: 'ארבעת אלפים',
|
|
162
|
-
5: 'חמשת אלפים',
|
|
163
|
-
6: 'ששת אלפים',
|
|
164
|
-
7: 'שבעת אלפים',
|
|
165
|
-
8: 'שמונת אלפים',
|
|
166
|
-
9: 'תשעת אלפים'
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
biblicalScale = {
|
|
170
|
-
1: 'אלף',
|
|
171
|
-
2: 'מיליון',
|
|
172
|
-
3: 'מיליארד',
|
|
173
|
-
4: 'טריליון',
|
|
174
|
-
5: 'קוודרליון',
|
|
175
|
-
6: 'קווינטיליון'
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
biblicalScalePlural = {
|
|
179
|
-
1: 'אלפים',
|
|
180
|
-
2: 'מיליונים',
|
|
181
|
-
3: 'מיליארדים',
|
|
182
|
-
4: 'טריליונים',
|
|
183
|
-
5: 'קוודרליונים',
|
|
184
|
-
6: 'קווינטיליונים'
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
/**
|
|
188
|
-
* Initializes the Hebrew converter with language-specific options.
|
|
189
|
-
*
|
|
190
|
-
* @param {HebrewOptions} [options={}] Configuration options.
|
|
191
|
-
*/
|
|
192
|
-
constructor ({ and = 'ו', biblical = false, feminine = false } = {}) {
|
|
193
|
-
super({ feminine })
|
|
194
|
-
|
|
195
|
-
this.and = and
|
|
196
|
-
this.feminine = feminine
|
|
197
|
-
|
|
198
|
-
this.biblical = biblical
|
|
199
|
-
if (this.biblical) {
|
|
200
|
-
this.ones = this.biblicalOnes
|
|
201
|
-
this.tens = this.biblicalTens
|
|
202
|
-
this.twenties = this.biblicalTwenties
|
|
203
|
-
this.hundreds = this.biblicalHundreds
|
|
204
|
-
this.thousands = this.biblicalThousands
|
|
205
|
-
this.scale = this.biblicalScale
|
|
206
|
-
this.scalePlural = this.biblicalScalePlural
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
convertWholePart (number) {
|
|
211
|
-
if (number === 0n) {
|
|
99
|
+
/** Converts integer part to Hebrew words with special handling for thousands. */
|
|
100
|
+
integerToWords (integerPart) {
|
|
101
|
+
if (integerPart === 0n) {
|
|
212
102
|
return this.zeroWord
|
|
213
103
|
}
|
|
214
104
|
const words = []
|
|
215
|
-
const
|
|
216
|
-
let index =
|
|
217
|
-
for (const x of
|
|
105
|
+
const segments = this.splitToSegments(integerPart.toString(), 3)
|
|
106
|
+
let index = segments.length
|
|
107
|
+
for (const x of segments) {
|
|
218
108
|
index = index - 1
|
|
219
109
|
if (x === 0n) {
|
|
220
110
|
continue
|
|
221
111
|
}
|
|
222
112
|
|
|
223
|
-
const [n1, n2, n3] = this.
|
|
113
|
+
const [n1, n2, n3] = this.extractDigits(x)
|
|
224
114
|
|
|
225
115
|
if (index > 0) {
|
|
226
116
|
// For thousands and above, handle the full chunk value
|
|
@@ -231,35 +121,35 @@ export class Hebrew extends SlavicLanguage {
|
|
|
231
121
|
if (n3 > 0n) {
|
|
232
122
|
hasHundreds = true
|
|
233
123
|
if (n3 <= 2n) {
|
|
234
|
-
chunkWords.push(this.
|
|
124
|
+
chunkWords.push(this.hundredsWords[n3])
|
|
235
125
|
} else {
|
|
236
|
-
chunkWords.push(this.
|
|
126
|
+
chunkWords.push(this.onesWords[n3] + ' ' + this.hundredsWords[3])
|
|
237
127
|
}
|
|
238
128
|
}
|
|
239
129
|
|
|
240
130
|
// Process tens in this chunk
|
|
241
131
|
if (n2 > 1n) {
|
|
242
132
|
// Add conjunction if there were hundreds before
|
|
243
|
-
const tensWord = this.
|
|
244
|
-
chunkWords.push(hasHundreds ? this.
|
|
133
|
+
const tensWord = this.twentiesWords[n2]
|
|
134
|
+
chunkWords.push(hasHundreds ? this.options.andWord + tensWord : tensWord)
|
|
245
135
|
}
|
|
246
136
|
|
|
247
137
|
// Process ones in this chunk
|
|
248
138
|
if (n2 === 1n) {
|
|
249
139
|
// Add conjunction if there were hundreds before
|
|
250
|
-
const onesWord = this.
|
|
251
|
-
chunkWords.push(hasHundreds ? this.
|
|
140
|
+
const onesWord = this.teensWords[n1]
|
|
141
|
+
chunkWords.push(hasHundreds ? this.options.andWord + onesWord : onesWord)
|
|
252
142
|
} else if (n1 > 0n) {
|
|
253
143
|
// For "one million", "one billion", etc., don't add the word "one"
|
|
254
144
|
if (x === 1n && index > 1) {
|
|
255
145
|
// Skip adding "one" for millions/billions/etc.
|
|
256
146
|
} else if (x <= 9n && chunkWords.length === 0 && index === 1) {
|
|
257
147
|
// Use special forms for 1-9 thousand
|
|
258
|
-
chunkWords.push(this.
|
|
148
|
+
chunkWords.push(this.pluralForms[n1])
|
|
259
149
|
} else {
|
|
260
|
-
const onesWord = this.
|
|
150
|
+
const onesWord = this.onesWords[n1]
|
|
261
151
|
// Add conjunction if there were hundreds or tens before
|
|
262
|
-
chunkWords.push((hasHundreds || n2 > 0n) ? this.
|
|
152
|
+
chunkWords.push((hasHundreds || n2 > 0n) ? this.options.andWord + onesWord : onesWord)
|
|
263
153
|
}
|
|
264
154
|
}
|
|
265
155
|
|
|
@@ -271,7 +161,7 @@ export class Hebrew extends SlavicLanguage {
|
|
|
271
161
|
chunkWords.push(this.scale[index])
|
|
272
162
|
} else if (x === 2n && index === 1) {
|
|
273
163
|
// Special dual form for "two thousand" (already in thousands[2])
|
|
274
|
-
return [this.
|
|
164
|
+
return [this.pluralForms[2], ...words].join(' ')
|
|
275
165
|
} else if (x === 2n) {
|
|
276
166
|
// For two million, two billion, etc. - use plural form
|
|
277
167
|
chunkWords.push(this.scalePlural[index])
|
|
@@ -290,40 +180,27 @@ export class Hebrew extends SlavicLanguage {
|
|
|
290
180
|
|
|
291
181
|
if (n3 > 0n) {
|
|
292
182
|
if (n3 <= 2n) {
|
|
293
|
-
words.push(this.
|
|
183
|
+
words.push(this.hundredsWords[n3])
|
|
294
184
|
} else {
|
|
295
|
-
words.push(this.
|
|
185
|
+
words.push(this.onesWords[n3] + ' ' + this.hundredsWords[3])
|
|
296
186
|
}
|
|
297
187
|
}
|
|
298
188
|
|
|
299
189
|
if (n2 > 1n) {
|
|
300
|
-
words.push(this.
|
|
190
|
+
words.push(this.twentiesWords[n2])
|
|
301
191
|
}
|
|
302
192
|
|
|
303
193
|
if (n2 === 1n) {
|
|
304
|
-
words.push(this.
|
|
194
|
+
words.push(this.teensWords[n1])
|
|
305
195
|
} else if (n1 > 0n) {
|
|
306
|
-
words.push(this.
|
|
196
|
+
words.push(this.onesWords[n1])
|
|
307
197
|
}
|
|
308
198
|
}
|
|
309
199
|
|
|
310
200
|
if (words.length > 1) {
|
|
311
|
-
words[words.length - 1] = this.
|
|
201
|
+
words[words.length - 1] = this.options.andWord + words.at(-1)
|
|
312
202
|
}
|
|
313
203
|
|
|
314
204
|
return words.join(' ')
|
|
315
205
|
}
|
|
316
206
|
}
|
|
317
|
-
|
|
318
|
-
/**
|
|
319
|
-
* Converts a number to Hebrew cardinal (written) form.
|
|
320
|
-
*
|
|
321
|
-
* @param {number|string|bigint} value The number to convert.
|
|
322
|
-
* @param {HebrewOptions} [options={}] Configuration options.
|
|
323
|
-
* @returns {string} The number expressed in Hebrew words.
|
|
324
|
-
* @throws {TypeError} If value is NaN or invalid type.
|
|
325
|
-
* @throws {Error} If value is an invalid number string.
|
|
326
|
-
*/
|
|
327
|
-
export default function convertToWords (value, options = {}) {
|
|
328
|
-
return new Hebrew(options).convertToWords(value)
|
|
329
|
-
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hindi language converter.
|
|
3
|
+
*
|
|
4
|
+
* Supports:
|
|
5
|
+
* - Indian numbering system (हज़ार, लाख, करोड़)
|
|
6
|
+
* - Devanagari script
|
|
7
|
+
* - Complete word forms for 0-99
|
|
8
|
+
*/
|
|
9
|
+
export class Hindi extends SouthAsianLanguage {
|
|
10
|
+
}
|
|
11
|
+
import { SouthAsianLanguage } from '../classes/south-asian-language.js';
|
package/lib/languages/hi.js
CHANGED
|
@@ -1,11 +1,20 @@
|
|
|
1
|
-
import SouthAsianLanguage from '../classes/south-asian-language.js'
|
|
1
|
+
import { SouthAsianLanguage } from '../classes/south-asian-language.js'
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
/**
|
|
4
|
+
* Hindi language converter.
|
|
5
|
+
*
|
|
6
|
+
* Supports:
|
|
7
|
+
* - Indian numbering system (हज़ार, लाख, करोड़)
|
|
8
|
+
* - Devanagari script
|
|
9
|
+
* - Complete word forms for 0-99
|
|
10
|
+
*/
|
|
11
|
+
export class Hindi extends SouthAsianLanguage {
|
|
4
12
|
negativeWord = 'माइनस'
|
|
5
13
|
decimalSeparatorWord = 'दशमलव'
|
|
6
14
|
zeroWord = 'शून्य'
|
|
7
15
|
hundredWord = 'सौ'
|
|
8
|
-
|
|
16
|
+
|
|
17
|
+
belowHundredWords = [
|
|
9
18
|
'शून्य',
|
|
10
19
|
'एक',
|
|
11
20
|
'दो',
|
|
@@ -120,7 +129,3 @@ class Hindi extends SouthAsianLanguage {
|
|
|
120
129
|
'शंख'
|
|
121
130
|
]
|
|
122
131
|
}
|
|
123
|
-
|
|
124
|
-
export default function convertToWords (value, options = {}) {
|
|
125
|
-
return new Hindi(options).convertToWords(value)
|
|
126
|
-
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Croatian language converter.
|
|
3
|
+
*
|
|
4
|
+
* Supports:
|
|
5
|
+
* - Three-form pluralization (one/few/many)
|
|
6
|
+
* - Gender agreement (jedan/jedna, dva/dvije)
|
|
7
|
+
* - Croatian-specific declension endings
|
|
8
|
+
*/
|
|
9
|
+
export class Croatian extends SlavicLanguage {
|
|
10
|
+
onesWords: {
|
|
11
|
+
1: string;
|
|
12
|
+
2: string;
|
|
13
|
+
3: string;
|
|
14
|
+
4: string;
|
|
15
|
+
5: string;
|
|
16
|
+
6: string;
|
|
17
|
+
7: string;
|
|
18
|
+
8: string;
|
|
19
|
+
9: string;
|
|
20
|
+
};
|
|
21
|
+
onesFeminineWords: {
|
|
22
|
+
1: string;
|
|
23
|
+
2: string;
|
|
24
|
+
3: string;
|
|
25
|
+
4: string;
|
|
26
|
+
5: string;
|
|
27
|
+
6: string;
|
|
28
|
+
7: string;
|
|
29
|
+
8: string;
|
|
30
|
+
9: string;
|
|
31
|
+
};
|
|
32
|
+
teensWords: {
|
|
33
|
+
0: string;
|
|
34
|
+
1: string;
|
|
35
|
+
2: string;
|
|
36
|
+
3: string;
|
|
37
|
+
4: string;
|
|
38
|
+
5: string;
|
|
39
|
+
6: string;
|
|
40
|
+
7: string;
|
|
41
|
+
8: string;
|
|
42
|
+
9: string;
|
|
43
|
+
};
|
|
44
|
+
twentiesWords: {
|
|
45
|
+
2: string;
|
|
46
|
+
3: string;
|
|
47
|
+
4: string;
|
|
48
|
+
5: string;
|
|
49
|
+
6: string;
|
|
50
|
+
7: string;
|
|
51
|
+
8: string;
|
|
52
|
+
9: string;
|
|
53
|
+
};
|
|
54
|
+
hundredsWords: {
|
|
55
|
+
1: string;
|
|
56
|
+
2: string;
|
|
57
|
+
3: string;
|
|
58
|
+
4: string;
|
|
59
|
+
5: string;
|
|
60
|
+
6: string;
|
|
61
|
+
7: string;
|
|
62
|
+
8: string;
|
|
63
|
+
9: string;
|
|
64
|
+
};
|
|
65
|
+
pluralForms: {
|
|
66
|
+
1: string[];
|
|
67
|
+
2: string[];
|
|
68
|
+
3: string[];
|
|
69
|
+
4: string[];
|
|
70
|
+
5: string[];
|
|
71
|
+
6: string[];
|
|
72
|
+
7: string[];
|
|
73
|
+
8: string[];
|
|
74
|
+
9: string[];
|
|
75
|
+
10: string[];
|
|
76
|
+
};
|
|
77
|
+
/** Selects Croatian plural form: 1 = singular, 2-4 = few, else = many. */
|
|
78
|
+
pluralize(n: any, forms: any): any;
|
|
79
|
+
}
|
|
80
|
+
import { SlavicLanguage } from '../classes/slavic-language.js';
|
package/lib/languages/hr.js
CHANGED
|
@@ -1,52 +1,43 @@
|
|
|
1
|
-
import SlavicLanguage from '../classes/slavic-language.js'
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* @typedef {Object} SlavicOptions
|
|
5
|
-
* @property {boolean} [feminine=false] Use feminine forms for numbers.
|
|
6
|
-
*/
|
|
1
|
+
import { SlavicLanguage } from '../classes/slavic-language.js'
|
|
7
2
|
|
|
8
3
|
/**
|
|
9
4
|
* Croatian language converter.
|
|
10
5
|
*
|
|
11
|
-
*
|
|
12
|
-
* -
|
|
13
|
-
* - Gender
|
|
14
|
-
* - Slavic three-form pluralization (tisuća/tisuće/tisuća)
|
|
6
|
+
* Supports:
|
|
7
|
+
* - Three-form pluralization (one/few/many)
|
|
8
|
+
* - Gender agreement (jedan/jedna, dva/dvije)
|
|
15
9
|
* - Croatian-specific declension endings
|
|
16
|
-
*
|
|
17
|
-
* Key Features:
|
|
18
|
-
* - Three-form pluralization system shared across Slavic languages
|
|
19
|
-
* * Form 1 (singular): 1 (e.g., "tisuća")
|
|
20
|
-
* * Form 2 (few): 2-4, 22-24, 32-34... excluding teens (e.g., "tisuće")
|
|
21
|
-
* * Form 3 (many): all other numbers (e.g., "tisuća")
|
|
22
|
-
* - Chunk-based decomposition (splits into groups of 3 digits: ones, thousands, millions, etc.)
|
|
23
|
-
* - Large number handling via thousands[] array with indexed [singular, few, many] forms
|
|
24
|
-
* - Gender-specific number forms for 1 and 2 (masculine/feminine dual forms)
|
|
25
|
-
*
|
|
26
|
-
* Features:
|
|
27
|
-
* - Dual gender forms for 1 and 2 (jedan/jedna, dva/dvije)
|
|
28
|
-
* - Latin script orthography
|
|
29
|
-
* - Similar structure to Serbian
|
|
30
|
-
*
|
|
31
|
-
* Inherits from SlavicLanguage for complex pluralization algorithms.
|
|
32
10
|
*/
|
|
33
11
|
export class Croatian extends SlavicLanguage {
|
|
34
12
|
negativeWord = 'minus'
|
|
35
13
|
decimalSeparatorWord = 'zarez'
|
|
36
14
|
zeroWord = 'nula'
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
15
|
+
|
|
16
|
+
onesWords = {
|
|
17
|
+
1: 'jedan',
|
|
18
|
+
2: 'dva',
|
|
19
|
+
3: 'tri',
|
|
20
|
+
4: 'četiri',
|
|
21
|
+
5: 'pet',
|
|
22
|
+
6: 'šest',
|
|
23
|
+
7: 'sedam',
|
|
24
|
+
8: 'osam',
|
|
25
|
+
9: 'devet'
|
|
47
26
|
}
|
|
48
27
|
|
|
49
|
-
|
|
28
|
+
onesFeminineWords = {
|
|
29
|
+
1: 'jedna',
|
|
30
|
+
2: 'dvije',
|
|
31
|
+
3: 'tri',
|
|
32
|
+
4: 'četiri',
|
|
33
|
+
5: 'pet',
|
|
34
|
+
6: 'šest',
|
|
35
|
+
7: 'sedam',
|
|
36
|
+
8: 'osam',
|
|
37
|
+
9: 'devet'
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
teensWords = {
|
|
50
41
|
0: 'deset',
|
|
51
42
|
1: 'jedanaest',
|
|
52
43
|
2: 'dvanaest',
|
|
@@ -59,7 +50,7 @@ export class Croatian extends SlavicLanguage {
|
|
|
59
50
|
9: 'devetnaest'
|
|
60
51
|
}
|
|
61
52
|
|
|
62
|
-
|
|
53
|
+
twentiesWords = {
|
|
63
54
|
2: 'dvadeset',
|
|
64
55
|
3: 'trideset',
|
|
65
56
|
4: 'četrdeset',
|
|
@@ -70,7 +61,7 @@ export class Croatian extends SlavicLanguage {
|
|
|
70
61
|
9: 'devedeset'
|
|
71
62
|
}
|
|
72
63
|
|
|
73
|
-
|
|
64
|
+
hundredsWords = {
|
|
74
65
|
1: 'sto',
|
|
75
66
|
2: 'dvjesto',
|
|
76
67
|
3: 'tristo',
|
|
@@ -82,20 +73,29 @@ export class Croatian extends SlavicLanguage {
|
|
|
82
73
|
9: 'devetsto'
|
|
83
74
|
}
|
|
84
75
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
76
|
+
pluralForms = {
|
|
77
|
+
1: ['tisuća', 'tisuće', 'tisuća'], // 10 ^ 3
|
|
78
|
+
2: ['milijun', 'milijuna', 'milijuna'], // 10 ^ 6
|
|
79
|
+
3: ['milijarda', 'milijarde', 'milijarda'], // 10 ^ 9
|
|
80
|
+
4: ['bilijun', 'bilijuna', 'bilijuna'], // 10 ^ 12
|
|
81
|
+
5: ['bilijarda', 'bilijarde', 'bilijarda'], // 10 ^ 15
|
|
82
|
+
6: ['trilijun', 'trilijuna', 'trilijuna'], // 10 ^ 18
|
|
83
|
+
7: ['trilijarda', 'trilijarde', 'trilijarda'], // 10 ^ 21
|
|
84
|
+
8: ['kvadrilijun', 'kvadrilijuna', 'kvadrilijuna'], // 10 ^ 24
|
|
85
|
+
9: ['kvadrilijarda', 'kvadrilijarde', 'kvadrilijarda'], // 10 ^ 27
|
|
86
|
+
10: ['kvintilijun', 'kvintilijuna', 'kvintilijuna'] // 10 ^ 30
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Maps segment indices to whether they are grammatically feminine.
|
|
91
|
+
* In Croatian, thousands (index 1) are feminine, others are masculine.
|
|
92
|
+
* @type {Object.<number, boolean>}
|
|
93
|
+
*/
|
|
94
|
+
scaleGenders = {
|
|
95
|
+
1: true // thousands are feminine (others default to false)
|
|
97
96
|
}
|
|
98
97
|
|
|
98
|
+
/** Selects Croatian plural form: 1 = singular, 2-4 = few, else = many. */
|
|
99
99
|
pluralize (n, forms) {
|
|
100
100
|
const lastDigit = n % 10n
|
|
101
101
|
const lastTwoDigits = n % 100n
|
|
@@ -110,48 +110,4 @@ export class Croatian extends SlavicLanguage {
|
|
|
110
110
|
|
|
111
111
|
return forms[2]
|
|
112
112
|
}
|
|
113
|
-
|
|
114
|
-
convertWholePart (number) {
|
|
115
|
-
if (number === 0n) {
|
|
116
|
-
return this.zeroWord
|
|
117
|
-
}
|
|
118
|
-
const words = []
|
|
119
|
-
const chunks = this.splitByX(number.toString(), 3)
|
|
120
|
-
let index = chunks.length
|
|
121
|
-
for (const x of chunks) {
|
|
122
|
-
index = index - 1
|
|
123
|
-
const [n1, n2, n3] = this.getDigits(x)
|
|
124
|
-
if (n3 > 0n) {
|
|
125
|
-
words.push(this.hundreds[n3])
|
|
126
|
-
}
|
|
127
|
-
if (n2 > 1n) {
|
|
128
|
-
words.push(this.twenties[n2])
|
|
129
|
-
}
|
|
130
|
-
if (n2 === 1n) {
|
|
131
|
-
words.push(this.tens[n1])
|
|
132
|
-
} else if (n1 > 0n) {
|
|
133
|
-
const isFeminine = (this.feminine || this.SCALE[index][3])
|
|
134
|
-
const genderIndex = isFeminine ? 1 : 0
|
|
135
|
-
words.push(this.ones[n1][genderIndex])
|
|
136
|
-
}
|
|
137
|
-
if ((index > 0) && (x !== 0n)) {
|
|
138
|
-
words.push(this.pluralize(x, this.SCALE[index]))
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
return words.join(' ')
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
/**
|
|
146
|
-
* Converts a number to Croatian cardinal (written) form.
|
|
147
|
-
*
|
|
148
|
-
* @param {number|string|bigint} value The number to convert.
|
|
149
|
-
* @param {Object} [options={}] Configuration options.
|
|
150
|
-
* @param {boolean} [options.feminine=false] Use feminine forms for numbers.
|
|
151
|
-
* @returns {string} The number expressed in Croatian words.
|
|
152
|
-
* @throws {TypeError} If value is NaN or invalid type.
|
|
153
|
-
* @throws {Error} If value is an invalid number string.
|
|
154
|
-
*/
|
|
155
|
-
export default function convertToWords (value, options = {}) {
|
|
156
|
-
return new Croatian(options).convertToWords(value)
|
|
157
113
|
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hungarian language converter.
|
|
3
|
+
*
|
|
4
|
+
* Supports:
|
|
5
|
+
* - Agglutinative structure (no spaces between compound parts)
|
|
6
|
+
* - Special handling for "egy" (one) omission
|
|
7
|
+
* - Pre-composed twenties (huszonegy through huszonkilenc)
|
|
8
|
+
*/
|
|
9
|
+
export class Hungarian extends GreedyScaleLanguage {
|
|
10
|
+
scaleWords: (string | bigint)[][];
|
|
11
|
+
/** Converts tens (30-99) with agglutinative composition. */
|
|
12
|
+
tensToCardinal(number: any): string | undefined;
|
|
13
|
+
/** Converts hundreds (100-999) with "száz" composition. */
|
|
14
|
+
hundredsToCardinal(number: any): string;
|
|
15
|
+
/** Converts thousands (1000-999999) with "ezer" composition. */
|
|
16
|
+
thousandsToCardinal(number: any): string;
|
|
17
|
+
/** Converts large numbers (millions and above) with scale words. */
|
|
18
|
+
bigNumberToCardinal(number: any): string;
|
|
19
|
+
/** Converts integer part using Hungarian agglutinative rules. */
|
|
20
|
+
integerToWords(integerPart: any, zeroWord?: string): string;
|
|
21
|
+
}
|
|
22
|
+
import { GreedyScaleLanguage } from '../classes/greedy-scale-language.js';
|