n2words 2.0.0 → 3.1.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 +64 -0
- package/README.md +86 -188
- package/dist/languages/am-Latn.js +3 -0
- package/dist/languages/am-Latn.js.map +1 -0
- package/dist/languages/am.js +3 -0
- package/dist/languages/am.js.map +1 -0
- package/dist/languages/ar.js +3 -0
- package/dist/languages/ar.js.map +1 -0
- package/dist/languages/az.js +3 -0
- package/dist/languages/az.js.map +1 -0
- package/dist/languages/bn.js +3 -0
- package/dist/languages/bn.js.map +1 -0
- package/dist/languages/cs.js +3 -0
- package/dist/languages/cs.js.map +1 -0
- package/dist/languages/da.js +3 -0
- package/dist/languages/da.js.map +1 -0
- package/dist/languages/de.js +3 -0
- package/dist/languages/de.js.map +1 -0
- package/dist/languages/el.js +3 -0
- package/dist/languages/el.js.map +1 -0
- package/dist/languages/en.js +3 -0
- package/dist/languages/en.js.map +1 -0
- package/dist/languages/es.js +3 -0
- package/dist/languages/es.js.map +1 -0
- package/dist/languages/fa.js +3 -0
- package/dist/languages/fa.js.map +1 -0
- package/dist/languages/fi.js +3 -0
- package/dist/languages/fi.js.map +1 -0
- package/dist/languages/fil.js +3 -0
- package/dist/languages/fil.js.map +1 -0
- package/dist/languages/fr-BE.js +3 -0
- package/dist/languages/fr-BE.js.map +1 -0
- package/dist/languages/fr.js +3 -0
- package/dist/languages/fr.js.map +1 -0
- package/dist/languages/gu.js +3 -0
- package/dist/languages/gu.js.map +1 -0
- package/dist/languages/ha.js +3 -0
- package/dist/languages/ha.js.map +1 -0
- package/dist/languages/hbo.js +3 -0
- package/dist/languages/hbo.js.map +1 -0
- package/dist/languages/he.js +3 -0
- package/dist/languages/he.js.map +1 -0
- package/dist/languages/hi.js +3 -0
- package/dist/languages/hi.js.map +1 -0
- package/dist/languages/hr.js +3 -0
- package/dist/languages/hr.js.map +1 -0
- package/dist/languages/hu.js +3 -0
- package/dist/languages/hu.js.map +1 -0
- package/dist/languages/id.js +3 -0
- package/dist/languages/id.js.map +1 -0
- package/dist/languages/it.js +3 -0
- package/dist/languages/it.js.map +1 -0
- package/dist/languages/ja.js +3 -0
- package/dist/languages/ja.js.map +1 -0
- package/dist/languages/ka.js +3 -0
- package/dist/languages/ka.js.map +1 -0
- package/dist/languages/kn.js +3 -0
- package/dist/languages/kn.js.map +1 -0
- package/dist/languages/ko.js +3 -0
- package/dist/languages/ko.js.map +1 -0
- package/dist/languages/lt.js +3 -0
- package/dist/languages/lt.js.map +1 -0
- package/dist/languages/lv.js +3 -0
- package/dist/languages/lv.js.map +1 -0
- package/dist/languages/mr.js +3 -0
- package/dist/languages/mr.js.map +1 -0
- package/dist/languages/ms.js +3 -0
- package/dist/languages/ms.js.map +1 -0
- package/dist/languages/nb.js +3 -0
- package/dist/languages/nb.js.map +1 -0
- package/dist/languages/nl.js +3 -0
- package/dist/languages/nl.js.map +1 -0
- package/dist/languages/pa.js +3 -0
- package/dist/languages/pa.js.map +1 -0
- package/dist/languages/pl.js +3 -0
- package/dist/languages/pl.js.map +1 -0
- package/dist/languages/pt.js +3 -0
- package/dist/languages/pt.js.map +1 -0
- package/dist/languages/ro.js +3 -0
- package/dist/languages/ro.js.map +1 -0
- package/dist/languages/ru.js +3 -0
- package/dist/languages/ru.js.map +1 -0
- package/dist/languages/sr-Cyrl.js +3 -0
- package/dist/languages/sr-Cyrl.js.map +1 -0
- package/dist/languages/sr-Latn.js +3 -0
- package/dist/languages/sr-Latn.js.map +1 -0
- package/dist/languages/sv.js +3 -0
- package/dist/languages/sv.js.map +1 -0
- package/dist/languages/sw.js +3 -0
- package/dist/languages/sw.js.map +1 -0
- package/dist/languages/ta.js +3 -0
- package/dist/languages/ta.js.map +1 -0
- package/dist/languages/te.js +3 -0
- package/dist/languages/te.js.map +1 -0
- package/dist/languages/th.js +3 -0
- package/dist/languages/th.js.map +1 -0
- package/dist/languages/tr.js +3 -0
- package/dist/languages/tr.js.map +1 -0
- package/dist/languages/uk.js +3 -0
- package/dist/languages/uk.js.map +1 -0
- package/dist/languages/ur.js +3 -0
- package/dist/languages/ur.js.map +1 -0
- package/dist/languages/vi.js +3 -0
- package/dist/languages/vi.js.map +1 -0
- package/dist/languages/yo.js +3 -0
- package/dist/languages/yo.js.map +1 -0
- package/dist/languages/zh-Hans.js +3 -0
- package/dist/languages/zh-Hans.js.map +1 -0
- package/dist/languages/zh-Hant.js +3 -0
- package/dist/languages/zh-Hant.js.map +1 -0
- package/dist/n2words.js +2 -2
- package/dist/n2words.js.map +1 -1
- package/lib/languages/am-Latn.d.ts +7 -0
- package/lib/languages/am-Latn.js +159 -0
- package/lib/languages/am.d.ts +7 -0
- package/lib/languages/am.js +159 -0
- package/lib/languages/ar.d.ts +14 -27
- package/lib/languages/ar.js +175 -129
- package/lib/languages/az.d.ts +4 -9
- package/lib/languages/az.js +166 -37
- package/lib/languages/bn.d.ts +4 -8
- package/lib/languages/bn.js +159 -124
- package/lib/languages/cs.d.ts +15 -85
- package/lib/languages/cs.js +293 -114
- package/lib/languages/da.d.ts +11 -12
- package/lib/languages/da.js +269 -101
- package/lib/languages/de.d.ts +14 -11
- package/lib/languages/de.js +305 -86
- package/lib/languages/el.d.ts +11 -11
- package/lib/languages/el.js +224 -78
- package/lib/languages/en.d.ts +14 -13
- package/lib/languages/en.js +228 -72
- package/lib/languages/es.d.ts +18 -12
- package/lib/languages/es.js +297 -103
- package/lib/languages/fa.d.ts +4 -44
- package/lib/languages/fa.js +112 -122
- package/lib/languages/fi.d.ts +14 -0
- package/lib/languages/fi.js +238 -0
- package/lib/languages/fil.d.ts +4 -13
- package/lib/languages/fil.js +196 -106
- package/lib/languages/fr-BE.d.ts +8 -8
- package/lib/languages/fr-BE.js +285 -19
- package/lib/languages/fr.d.ts +18 -12
- package/lib/languages/fr.js +339 -89
- package/lib/languages/gu.d.ts +4 -8
- package/lib/languages/gu.js +143 -125
- package/lib/languages/ha.d.ts +7 -0
- package/lib/languages/ha.js +225 -0
- package/lib/languages/hbo.d.ts +10 -110
- package/lib/languages/hbo.js +245 -214
- package/lib/languages/he.d.ts +10 -77
- package/lib/languages/he.js +231 -172
- package/lib/languages/hi.d.ts +4 -8
- package/lib/languages/hi.js +163 -124
- package/lib/languages/hr.d.ts +8 -77
- package/lib/languages/hr.js +200 -89
- package/lib/languages/hu.d.ts +4 -19
- package/lib/languages/hu.js +198 -119
- package/lib/languages/id.d.ts +4 -34
- package/lib/languages/id.js +166 -129
- package/lib/languages/it.d.ts +16 -34
- package/lib/languages/it.js +307 -97
- package/lib/languages/ja.d.ts +14 -14
- package/lib/languages/ja.js +221 -111
- package/lib/languages/ka.d.ts +17 -0
- package/lib/languages/ka.js +291 -0
- package/lib/languages/kn.d.ts +4 -8
- package/lib/languages/kn.js +143 -35
- package/lib/languages/ko.d.ts +11 -11
- package/lib/languages/ko.js +250 -49
- package/lib/languages/lt.d.ts +15 -67
- package/lib/languages/lt.js +287 -122
- package/lib/languages/lv.d.ts +15 -67
- package/lib/languages/lv.js +288 -106
- package/lib/languages/mr.d.ts +4 -8
- package/lib/languages/mr.js +143 -125
- package/lib/languages/ms.d.ts +4 -28
- package/lib/languages/ms.js +166 -116
- package/lib/languages/nb.d.ts +11 -9
- package/lib/languages/nb.js +272 -87
- package/lib/languages/nl.d.ts +23 -13
- package/lib/languages/nl.js +299 -133
- package/lib/languages/pa.d.ts +4 -8
- package/lib/languages/pa.js +151 -124
- package/lib/languages/pl.d.ts +19 -77
- package/lib/languages/pl.js +294 -87
- package/lib/languages/pt.d.ts +14 -26
- package/lib/languages/pt.js +272 -92
- package/lib/languages/ro.d.ts +15 -155
- package/lib/languages/ro.js +219 -235
- package/lib/languages/ru.d.ts +8 -82
- package/lib/languages/ru.js +239 -90
- package/lib/languages/sr-Cyrl.d.ts +8 -77
- package/lib/languages/sr-Cyrl.js +197 -89
- package/lib/languages/sr-Latn.d.ts +8 -77
- package/lib/languages/sr-Latn.js +197 -89
- package/lib/languages/sv.d.ts +11 -11
- package/lib/languages/sv.js +278 -74
- package/lib/languages/sw.d.ts +4 -36
- package/lib/languages/sw.js +133 -106
- package/lib/languages/ta.d.ts +4 -17
- package/lib/languages/ta.js +143 -202
- package/lib/languages/te.d.ts +4 -19
- package/lib/languages/te.js +133 -196
- package/lib/languages/th.d.ts +4 -14
- package/lib/languages/th.js +135 -91
- package/lib/languages/tr.d.ts +15 -9
- package/lib/languages/tr.js +245 -49
- package/lib/languages/uk.d.ts +8 -82
- package/lib/languages/uk.js +206 -78
- package/lib/languages/ur.d.ts +4 -8
- package/lib/languages/ur.js +151 -124
- package/lib/languages/vi.d.ts +14 -69
- package/lib/languages/vi.js +278 -129
- package/lib/languages/yo.d.ts +7 -0
- package/lib/languages/yo.js +303 -0
- package/lib/languages/zh-Hans.d.ts +8 -18
- package/lib/languages/zh-Hans.js +163 -92
- package/lib/languages/zh-Hant.d.ts +8 -18
- package/lib/languages/zh-Hant.js +181 -90
- package/lib/n2words.d.ts +55 -209
- package/lib/n2words.js +115 -530
- package/lib/utils/is-plain-object.d.ts +13 -0
- package/lib/utils/is-plain-object.js +17 -0
- package/lib/utils/parse-numeric.d.ts +17 -0
- package/lib/utils/parse-numeric.js +108 -0
- package/lib/utils/validate-options.d.ts +8 -0
- package/lib/utils/validate-options.js +16 -0
- package/package.json +26 -14
- package/dist/ArabicConverter.js +0 -3
- package/dist/ArabicConverter.js.map +0 -1
- package/dist/AzerbaijaniConverter.js +0 -3
- package/dist/AzerbaijaniConverter.js.map +0 -1
- package/dist/BanglaConverter.js +0 -3
- package/dist/BanglaConverter.js.map +0 -1
- package/dist/BiblicalHebrewConverter.js +0 -3
- package/dist/BiblicalHebrewConverter.js.map +0 -1
- package/dist/CroatianConverter.js +0 -3
- package/dist/CroatianConverter.js.map +0 -1
- package/dist/CzechConverter.js +0 -3
- package/dist/CzechConverter.js.map +0 -1
- package/dist/DanishConverter.js +0 -3
- package/dist/DanishConverter.js.map +0 -1
- package/dist/DutchConverter.js +0 -3
- package/dist/DutchConverter.js.map +0 -1
- package/dist/EnglishConverter.js +0 -3
- package/dist/EnglishConverter.js.map +0 -1
- package/dist/FilipinoConverter.js +0 -3
- package/dist/FilipinoConverter.js.map +0 -1
- package/dist/FrenchBelgiumConverter.js +0 -3
- package/dist/FrenchBelgiumConverter.js.map +0 -1
- package/dist/FrenchConverter.js +0 -3
- package/dist/FrenchConverter.js.map +0 -1
- package/dist/GermanConverter.js +0 -3
- package/dist/GermanConverter.js.map +0 -1
- package/dist/GreekConverter.js +0 -3
- package/dist/GreekConverter.js.map +0 -1
- package/dist/GujaratiConverter.js +0 -3
- package/dist/GujaratiConverter.js.map +0 -1
- package/dist/HebrewConverter.js +0 -3
- package/dist/HebrewConverter.js.map +0 -1
- package/dist/HindiConverter.js +0 -3
- package/dist/HindiConverter.js.map +0 -1
- package/dist/HungarianConverter.js +0 -3
- package/dist/HungarianConverter.js.map +0 -1
- package/dist/IndonesianConverter.js +0 -3
- package/dist/IndonesianConverter.js.map +0 -1
- package/dist/ItalianConverter.js +0 -3
- package/dist/ItalianConverter.js.map +0 -1
- package/dist/JapaneseConverter.js +0 -3
- package/dist/JapaneseConverter.js.map +0 -1
- package/dist/KannadaConverter.js +0 -3
- package/dist/KannadaConverter.js.map +0 -1
- package/dist/KoreanConverter.js +0 -3
- package/dist/KoreanConverter.js.map +0 -1
- package/dist/LatvianConverter.js +0 -3
- package/dist/LatvianConverter.js.map +0 -1
- package/dist/LithuanianConverter.js +0 -3
- package/dist/LithuanianConverter.js.map +0 -1
- package/dist/MalayConverter.js +0 -3
- package/dist/MalayConverter.js.map +0 -1
- package/dist/MarathiConverter.js +0 -3
- package/dist/MarathiConverter.js.map +0 -1
- package/dist/NorwegianBokmalConverter.js +0 -3
- package/dist/NorwegianBokmalConverter.js.map +0 -1
- package/dist/PersianConverter.js +0 -3
- package/dist/PersianConverter.js.map +0 -1
- package/dist/PolishConverter.js +0 -3
- package/dist/PolishConverter.js.map +0 -1
- package/dist/PortugueseConverter.js +0 -3
- package/dist/PortugueseConverter.js.map +0 -1
- package/dist/PunjabiConverter.js +0 -3
- package/dist/PunjabiConverter.js.map +0 -1
- package/dist/RomanianConverter.js +0 -3
- package/dist/RomanianConverter.js.map +0 -1
- package/dist/RussianConverter.js +0 -3
- package/dist/RussianConverter.js.map +0 -1
- package/dist/SerbianCyrillicConverter.js +0 -3
- package/dist/SerbianCyrillicConverter.js.map +0 -1
- package/dist/SerbianLatinConverter.js +0 -3
- package/dist/SerbianLatinConverter.js.map +0 -1
- package/dist/SimplifiedChineseConverter.js +0 -3
- package/dist/SimplifiedChineseConverter.js.map +0 -1
- package/dist/SpanishConverter.js +0 -3
- package/dist/SpanishConverter.js.map +0 -1
- package/dist/SwahiliConverter.js +0 -3
- package/dist/SwahiliConverter.js.map +0 -1
- package/dist/SwedishConverter.js +0 -3
- package/dist/SwedishConverter.js.map +0 -1
- package/dist/TamilConverter.js +0 -3
- package/dist/TamilConverter.js.map +0 -1
- package/dist/TeluguConverter.js +0 -3
- package/dist/TeluguConverter.js.map +0 -1
- package/dist/ThaiConverter.js +0 -3
- package/dist/ThaiConverter.js.map +0 -1
- package/dist/TraditionalChineseConverter.js +0 -3
- package/dist/TraditionalChineseConverter.js.map +0 -1
- package/dist/TurkishConverter.js +0 -3
- package/dist/TurkishConverter.js.map +0 -1
- package/dist/UkrainianConverter.js +0 -3
- package/dist/UkrainianConverter.js.map +0 -1
- package/dist/UrduConverter.js +0 -3
- package/dist/UrduConverter.js.map +0 -1
- package/dist/VietnameseConverter.js +0 -3
- package/dist/VietnameseConverter.js.map +0 -1
- package/lib/classes/abstract-language.d.ts +0 -178
- package/lib/classes/abstract-language.js +0 -268
- package/lib/classes/greedy-scale-language.d.ts +0 -109
- package/lib/classes/greedy-scale-language.js +0 -201
- package/lib/classes/slavic-language.d.ts +0 -148
- package/lib/classes/slavic-language.js +0 -281
- package/lib/classes/south-asian-language.d.ts +0 -70
- package/lib/classes/south-asian-language.js +0 -154
- package/lib/classes/turkic-language.d.ts +0 -26
- package/lib/classes/turkic-language.js +0 -59
package/lib/languages/te.js
CHANGED
|
@@ -1,219 +1,156 @@
|
|
|
1
|
-
import { AbstractLanguage } from '../classes/abstract-language.js'
|
|
2
|
-
|
|
3
1
|
/**
|
|
4
|
-
* Telugu language converter
|
|
2
|
+
* Telugu language converter - Functional Implementation
|
|
3
|
+
*
|
|
4
|
+
* Self-contained module with its own input validation, ready for subpath exports.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
* -
|
|
6
|
+
* Key features:
|
|
7
|
+
* - Indian numbering system (వెయ్యి, లక్ష, కోటి)
|
|
8
8
|
* - Telugu script
|
|
9
|
+
* - 3-2-2 grouping pattern
|
|
9
10
|
* - Complete word forms for 0-99
|
|
11
|
+
* - Per-digit decimal reading
|
|
10
12
|
*/
|
|
11
|
-
export class Telugu extends AbstractLanguage {
|
|
12
|
-
negativeWord = 'మైనస్'
|
|
13
|
-
decimalSeparatorWord = 'పాయింట్'
|
|
14
|
-
zeroWord = 'సున్నా'
|
|
15
|
-
usePerDigitDecimals = true // Enable digit-by-digit decimal conversion
|
|
16
|
-
|
|
17
|
-
belowHundredWords = [
|
|
18
|
-
'సున్నా',
|
|
19
|
-
'ఒకటి',
|
|
20
|
-
'రెండు',
|
|
21
|
-
'మూడు',
|
|
22
|
-
'నాలుగు',
|
|
23
|
-
'ఐదు',
|
|
24
|
-
'ఆరు',
|
|
25
|
-
'ఏడు',
|
|
26
|
-
'ఎనిమిది',
|
|
27
|
-
'తొమ్మిది',
|
|
28
|
-
'పది',
|
|
29
|
-
'పదకొండు',
|
|
30
|
-
'పన్నెండు',
|
|
31
|
-
'పదమూడు',
|
|
32
|
-
'పద్నాలుగు',
|
|
33
|
-
'పదిహేను',
|
|
34
|
-
'పదహారు',
|
|
35
|
-
'పదిహేడు',
|
|
36
|
-
'పద్దెనిమిది',
|
|
37
|
-
'పంతొమ్మిది',
|
|
38
|
-
'ఇరవై',
|
|
39
|
-
'ఇరవై ఒక్కటి',
|
|
40
|
-
'ఇరవై రెండు',
|
|
41
|
-
'ఇరవై మూడు',
|
|
42
|
-
'ఇరవై నాలుగు',
|
|
43
|
-
'ఇరవై ఐదు',
|
|
44
|
-
'ఇరవై ఆరు',
|
|
45
|
-
'ఇరవై ఏడు',
|
|
46
|
-
'ఇరవై ఎనిమిది',
|
|
47
|
-
'ఇరవై తొమ్మిది',
|
|
48
|
-
'ముప్పై',
|
|
49
|
-
'ముప్పై ఒకటి',
|
|
50
|
-
'ముప్పై రెండు',
|
|
51
|
-
'ముప్పై మూడు',
|
|
52
|
-
'ముప్పై నాలుగు',
|
|
53
|
-
'ముప్పై ఐదు',
|
|
54
|
-
'ముప్పై ఆరు',
|
|
55
|
-
'ముప్పై ఏడు',
|
|
56
|
-
'ముప్పై ఎనిమిది',
|
|
57
|
-
'ముప్పై తొమ్మిది',
|
|
58
|
-
'నలభై',
|
|
59
|
-
'నలభై ఒకటి',
|
|
60
|
-
'నలభై రెండు',
|
|
61
|
-
'నలభై మూడు',
|
|
62
|
-
'నలభై నాలుగు',
|
|
63
|
-
'నలభై ఐదు',
|
|
64
|
-
'నలభై ఆరు',
|
|
65
|
-
'నలభై ఏడు',
|
|
66
|
-
'నలభై ఎనిమిది',
|
|
67
|
-
'నలభై తొమ్మిది',
|
|
68
|
-
'యాభై',
|
|
69
|
-
'యాభై ఒకటి',
|
|
70
|
-
'యాభై రెండు',
|
|
71
|
-
'యాభై మూడు',
|
|
72
|
-
'యాభై నాలుగు',
|
|
73
|
-
'యాభై ఐదు',
|
|
74
|
-
'యాభై ఆరు',
|
|
75
|
-
'యాభై ఏడు',
|
|
76
|
-
'యాభై ఎనిమిది',
|
|
77
|
-
'యాభై తొమ్మిది',
|
|
78
|
-
'అరవై',
|
|
79
|
-
'అరవై ఒకటి',
|
|
80
|
-
'అరవై రెండు',
|
|
81
|
-
'అరవై మూడు',
|
|
82
|
-
'అరవై నాలుగు',
|
|
83
|
-
'అరవై ఐదు',
|
|
84
|
-
'అరవై ఆరు',
|
|
85
|
-
'అరవై ఏడు',
|
|
86
|
-
'అరవై ఎనిమిది',
|
|
87
|
-
'అరవై తొమ్మిది',
|
|
88
|
-
'డెబ్బై',
|
|
89
|
-
'డెబ్బై ఒకటి',
|
|
90
|
-
'డెబ్బై రెండు',
|
|
91
|
-
'డెబ్బై మూడు',
|
|
92
|
-
'డెబ్బై నాలుగు',
|
|
93
|
-
'డెబ్బై ఐదు',
|
|
94
|
-
'డెబ్బై ఆరు',
|
|
95
|
-
'డెబ్బై ఏడు',
|
|
96
|
-
'డెబ్బై ఎనిమిది',
|
|
97
|
-
'డెబ్బై తొమ్మిది',
|
|
98
|
-
'ఎనభై',
|
|
99
|
-
'ఎనభై ఒకటి',
|
|
100
|
-
'ఎనభై రెండు',
|
|
101
|
-
'ఎనభై మూడు',
|
|
102
|
-
'ఎనభై నాలుగు',
|
|
103
|
-
'ఎనభై ఐదు',
|
|
104
|
-
'ఎనభై ఆరు',
|
|
105
|
-
'ఎనభై ఏడు',
|
|
106
|
-
'ఎనభై ఎనిమిది',
|
|
107
|
-
'ఎనభై తొమ్మిది',
|
|
108
|
-
'తొంభై',
|
|
109
|
-
'తొంభై ఒకటి',
|
|
110
|
-
'తొంభై రెండు',
|
|
111
|
-
'తొంభై మూడు',
|
|
112
|
-
'తొంభై నాలుగు',
|
|
113
|
-
'తొంభై ఐదు',
|
|
114
|
-
'తొంభై ఆరు',
|
|
115
|
-
'తొంభై ఏడు',
|
|
116
|
-
'తొంభై ఎనిమిది',
|
|
117
|
-
'తొంభై తొమ్మిది'
|
|
118
|
-
]
|
|
119
|
-
|
|
120
|
-
hundredsWords = [
|
|
121
|
-
'',
|
|
122
|
-
'వంద',
|
|
123
|
-
'రెండు వందలు',
|
|
124
|
-
'మూడు వందలు',
|
|
125
|
-
'నాలుగు వందలు',
|
|
126
|
-
'ఐదు వందలు',
|
|
127
|
-
'ఆరు వందలు',
|
|
128
|
-
'ఏడు వందలు',
|
|
129
|
-
'ఎనిమిది వందలు',
|
|
130
|
-
'తొమ్మిది వందలు'
|
|
131
|
-
]
|
|
132
|
-
|
|
133
|
-
// Ones words map 1–9 for decimal reading
|
|
134
|
-
onesWords = [
|
|
135
|
-
'ఒకటి',
|
|
136
|
-
'రెండు',
|
|
137
|
-
'మూడు',
|
|
138
|
-
'నాలుగు',
|
|
139
|
-
'ఐదు',
|
|
140
|
-
'ఆరు',
|
|
141
|
-
'ఏడు',
|
|
142
|
-
'ఎనిమిది',
|
|
143
|
-
'తొమ్మిది'
|
|
144
|
-
]
|
|
145
|
-
|
|
146
|
-
scaleWords = [
|
|
147
|
-
'',
|
|
148
|
-
'వెయ్యి',
|
|
149
|
-
'లక్ష',
|
|
150
|
-
'కోటి',
|
|
151
|
-
'అరబ్',
|
|
152
|
-
'ఖరబ్',
|
|
153
|
-
'నిల్',
|
|
154
|
-
'పడ్మ',
|
|
155
|
-
'శంకు'
|
|
156
|
-
]
|
|
157
|
-
|
|
158
|
-
/** Convert numbers below 100 to Telugu words. */
|
|
159
|
-
convertBelowHundred (number) {
|
|
160
|
-
return this.belowHundredWords[number]
|
|
161
|
-
}
|
|
162
13
|
|
|
163
|
-
|
|
164
|
-
convertBelowThousand (number) {
|
|
165
|
-
if (number === 0) return ''
|
|
166
|
-
if (number < 100) return this.convertBelowHundred(number)
|
|
14
|
+
import { parseNumericValue } from '../utils/parse-numeric.js'
|
|
167
15
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
16
|
+
// ============================================================================
|
|
17
|
+
// Vocabulary
|
|
18
|
+
// ============================================================================
|
|
171
19
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
20
|
+
const ZERO = 'సున్నా'
|
|
21
|
+
const NEGATIVE = 'మైనస్'
|
|
22
|
+
const DECIMAL_SEP = 'పాయింట్'
|
|
175
23
|
|
|
176
|
-
|
|
177
|
-
|
|
24
|
+
const BELOW_HUNDRED = [
|
|
25
|
+
'సున్నా', 'ఒకటి', 'రెండు', 'మూడు', 'నాలుగు', 'ఐదు', 'ఆరు', 'ఏడు', 'ఎనిమిది', 'తొమ్మిది',
|
|
26
|
+
'పది', 'పదకొండు', 'పన్నెండు', 'పదమూడు', 'పద్నాలుగు', 'పదిహేను', 'పదహారు', 'పదిహేడు', 'పద్దెనిమిది', 'పంతొమ్మిది',
|
|
27
|
+
'ఇరవై', 'ఇరవై ఒక్కటి', 'ఇరవై రెండు', 'ఇరవై మూడు', 'ఇరవై నాలుగు', 'ఇరవై ఐదు', 'ఇరవై ఆరు', 'ఇరవై ఏడు', 'ఇరవై ఎనిమిది', 'ఇరవై తొమ్మిది',
|
|
28
|
+
'ముప్పై', 'ముప్పై ఒకటి', 'ముప్పై రెండు', 'ముప్పై మూడు', 'ముప్పై నాలుగు', 'ముప్పై ఐదు', 'ముప్పై ఆరు', 'ముప్పై ఏడు', 'ముప్పై ఎనిమిది', 'ముప్పై తొమ్మిది',
|
|
29
|
+
'నలభై', 'నలభై ఒకటి', 'నలభై రెండు', 'నలభై మూడు', 'నలభై నాలుగు', 'నలభై ఐదు', 'నలభై ఆరు', 'నలభై ఏడు', 'నలభై ఎనిమిది', 'నలభై తొమ్మిది',
|
|
30
|
+
'యాభై', 'యాభై ఒకటి', 'యాభై రెండు', 'యాభై మూడు', 'యాభై నాలుగు', 'యాభై ఐదు', 'యాభై ఆరు', 'యాభై ఏడు', 'యాభై ఎనిమిది', 'యాభై తొమ్మిది',
|
|
31
|
+
'అరవై', 'అరవై ఒకటి', 'అరవై రెండు', 'అరవై మూడు', 'అరవై నాలుగు', 'అరవై ఐదు', 'అరవై ఆరు', 'అరవై ఏడు', 'అరవై ఎనిమిది', 'అరవై తొమ్మిది',
|
|
32
|
+
'డెబ్బై', 'డెబ్బై ఒకటి', 'డెబ్బై రెండు', 'డెబ్బై మూడు', 'డెబ్బై నాలుగు', 'డెబ్బై ఐదు', 'డెబ్బై ఆరు', 'డెబ్బై ఏడు', 'డెబ్బై ఎనిమిది', 'డెబ్బై తొమ్మిది',
|
|
33
|
+
'ఎనభై', 'ఎనభై ఒకటి', 'ఎనభై రెండు', 'ఎనభై మూడు', 'ఎనభై నాలుగు', 'ఎనభై ఐదు', 'ఎనభై ఆరు', 'ఎనభై ఏడు', 'ఎనభై ఎనిమిది', 'ఎనభై తొమ్మిది',
|
|
34
|
+
'తొంభై', 'తొంభై ఒకటి', 'తొంభై రెండు', 'తొంభై మూడు', 'తొంభై నాలుగు', 'తొంభై ఐదు', 'తొంభై ఆరు', 'తొంభై ఏడు', 'తొంభై ఎనిమిది', 'తొంభై తొమ్మిది'
|
|
35
|
+
]
|
|
178
36
|
|
|
179
|
-
|
|
180
|
-
splitIndian (number) {
|
|
181
|
-
const numStr = number.toString()
|
|
182
|
-
if (numStr.length <= 3) return [Number(numStr)]
|
|
37
|
+
const HUNDREDS = ['', 'వంద', 'రెండు వందలు', 'మూడు వందలు', 'నాలుగు వందలు', 'ఐదు వందలు', 'ఆరు వందలు', 'ఏడు వందలు', 'ఎనిమిది వందలు', 'తొమ్మిది వందలు']
|
|
183
38
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
groups.unshift(Number(last3))
|
|
39
|
+
// Ones for decimal reading
|
|
40
|
+
const ONES = ['ఒకటి', 'రెండు', 'మూడు', 'నాలుగు', 'ఐదు', 'ఆరు', 'ఏడు', 'ఎనిమిది', 'తొమ్మిది']
|
|
187
41
|
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
42
|
+
// Scale words: index 0 = units, 1 = thousand, 2 = lakh, etc.
|
|
43
|
+
const SCALE_WORDS = ['', 'వెయ్యి', 'లక్ష', 'కోటి', 'అరబ్', 'ఖరబ్', 'నిల్', 'పడ్మ', 'శంకు']
|
|
44
|
+
|
|
45
|
+
// ============================================================================
|
|
46
|
+
// Segment Building
|
|
47
|
+
// ============================================================================
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Builds words for a 0-999 segment.
|
|
51
|
+
*/
|
|
52
|
+
function buildSegment (n) {
|
|
53
|
+
if (n === 0) return ''
|
|
54
|
+
if (n < 100) return BELOW_HUNDRED[n]
|
|
194
55
|
|
|
195
|
-
|
|
56
|
+
const hundreds = Math.trunc(n / 100)
|
|
57
|
+
const remainder = n % 100
|
|
58
|
+
|
|
59
|
+
if (remainder === 0) {
|
|
60
|
+
return HUNDREDS[hundreds]
|
|
196
61
|
}
|
|
62
|
+
return HUNDREDS[hundreds] + ' ' + BELOW_HUNDRED[remainder]
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// ============================================================================
|
|
66
|
+
// Conversion Functions
|
|
67
|
+
// ============================================================================
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Converts a non-negative integer to Telugu words.
|
|
71
|
+
*
|
|
72
|
+
* Uses BigInt modulo for segment extraction (faster than string slicing).
|
|
73
|
+
* South Asian 3-2-2 grouping: first 3 digits, then groups of 2.
|
|
74
|
+
*
|
|
75
|
+
* @param {bigint} n - Non-negative integer to convert
|
|
76
|
+
* @returns {string} Telugu words
|
|
77
|
+
*/
|
|
78
|
+
function integerToWords (n) {
|
|
79
|
+
if (n === 0n) return ZERO
|
|
197
80
|
|
|
198
|
-
|
|
199
|
-
|
|
81
|
+
// Fast path: numbers < 1000 (direct lookup)
|
|
82
|
+
if (n < 1000n) {
|
|
83
|
+
return buildSegment(Number(n))
|
|
84
|
+
}
|
|
200
85
|
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
86
|
+
// Extract segments using BigInt modulo
|
|
87
|
+
const segments = []
|
|
88
|
+
segments.push(Number(n % 1000n))
|
|
89
|
+
let temp = n / 1000n
|
|
204
90
|
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
91
|
+
while (temp > 0n) {
|
|
92
|
+
segments.push(Number(temp % 100n))
|
|
93
|
+
temp = temp / 100n
|
|
94
|
+
}
|
|
208
95
|
|
|
209
|
-
|
|
210
|
-
|
|
96
|
+
// Build result string (process from most-significant to least)
|
|
97
|
+
const words = []
|
|
98
|
+
for (let i = segments.length - 1; i >= 0; i--) {
|
|
99
|
+
const segment = segments[i]
|
|
100
|
+
if (segment === 0) continue
|
|
101
|
+
|
|
102
|
+
if (i === 0) {
|
|
103
|
+
words.push(buildSegment(segment))
|
|
104
|
+
} else {
|
|
105
|
+
// Use 'ఒక' for 1 at scale positions
|
|
106
|
+
const groupWords = (segment === 1) ? 'ఒక' : BELOW_HUNDRED[segment]
|
|
211
107
|
words.push(groupWords)
|
|
212
|
-
if (scaleIndex > 0 && this.scaleWords[scaleIndex]) {
|
|
213
|
-
words.push(this.scaleWords[scaleIndex])
|
|
214
|
-
}
|
|
215
108
|
}
|
|
216
109
|
|
|
217
|
-
|
|
110
|
+
if (i > 0 && SCALE_WORDS[i]) {
|
|
111
|
+
words.push(SCALE_WORDS[i])
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
return words.join(' ')
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
function decimalPartToWords (decimalPart) {
|
|
119
|
+
// Per-digit decimal reading
|
|
120
|
+
const digits = []
|
|
121
|
+
for (const char of decimalPart) {
|
|
122
|
+
const d = parseInt(char, 10)
|
|
123
|
+
digits.push(d === 0 ? ZERO : ONES[d - 1])
|
|
218
124
|
}
|
|
125
|
+
return digits.join(' ')
|
|
219
126
|
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Converts a numeric value to Telugu words.
|
|
130
|
+
*
|
|
131
|
+
* @param {number | string | bigint} value - The numeric value to convert
|
|
132
|
+
* @returns {string} The number in Telugu words
|
|
133
|
+
*/
|
|
134
|
+
function toWords (value) {
|
|
135
|
+
const { isNegative, integerPart, decimalPart } = parseNumericValue(value)
|
|
136
|
+
|
|
137
|
+
let result = ''
|
|
138
|
+
|
|
139
|
+
if (isNegative) {
|
|
140
|
+
result = NEGATIVE + ' '
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
result += integerToWords(integerPart)
|
|
144
|
+
|
|
145
|
+
if (decimalPart) {
|
|
146
|
+
result += ' ' + DECIMAL_SEP + ' ' + decimalPartToWords(decimalPart)
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
return result
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
// ============================================================================
|
|
153
|
+
// Exports
|
|
154
|
+
// ============================================================================
|
|
155
|
+
|
|
156
|
+
export { toWords }
|
package/lib/languages/th.d.ts
CHANGED
|
@@ -1,17 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Thai
|
|
2
|
+
* Converts a numeric value to Thai words.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* - No word separators (continuous Thai script)
|
|
7
|
-
* - Digit-by-digit decimal reading
|
|
4
|
+
* @param {number | string | bigint} value - The numeric value to convert
|
|
5
|
+
* @returns {string} The number in Thai words
|
|
8
6
|
*/
|
|
9
|
-
export
|
|
10
|
-
onesWords: string[];
|
|
11
|
-
/** Converts numbers below one million to Thai words. */
|
|
12
|
-
convertBelowMillion(number: any): string;
|
|
13
|
-
/** Split a number into million-sized groups for processing. */
|
|
14
|
-
splitMillionGroups(number: any): number[];
|
|
15
|
-
integerToWords(integerPart: any): string;
|
|
16
|
-
}
|
|
17
|
-
import { AbstractLanguage } from '../classes/abstract-language.js';
|
|
7
|
+
export function toWords(value: number | string | bigint): string;
|
package/lib/languages/th.js
CHANGED
|
@@ -1,117 +1,161 @@
|
|
|
1
|
-
import { AbstractLanguage } from '../classes/abstract-language.js'
|
|
2
|
-
|
|
3
1
|
/**
|
|
4
|
-
* Thai language converter
|
|
2
|
+
* Thai language converter - Functional Implementation
|
|
3
|
+
*
|
|
4
|
+
* Self-contained converter with precomputed lookup tables.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
* - Thai numerals (ศูนย์, หนึ่ง, สอง, สาม)
|
|
6
|
+
* Key features:
|
|
8
7
|
* - No word separators (continuous Thai script)
|
|
9
|
-
* -
|
|
8
|
+
* - Million-based grouping (ล้าน)
|
|
9
|
+
* - Special handling for 1 as "เอ็ด" in compounds
|
|
10
|
+
* - 20 is "ยี่สิบ" (not "สองสิบ")
|
|
11
|
+
* - Per-digit decimal reading
|
|
10
12
|
*/
|
|
11
|
-
export class Thai extends AbstractLanguage {
|
|
12
|
-
negativeWord = 'ลบ'
|
|
13
|
-
decimalSeparatorWord = 'จุด'
|
|
14
|
-
zeroWord = 'ศูนย์'
|
|
15
|
-
wordSeparator = ''
|
|
16
|
-
usePerDigitDecimals = true // Enable digit-by-digit decimal conversion
|
|
17
|
-
|
|
18
|
-
// Ones words map 1–9
|
|
19
|
-
onesWords = ['หนึ่ง', 'สอง', 'สาม', 'สี่', 'ห้า', 'หก', 'เจ็ด', 'แปด', 'เก้า']
|
|
20
|
-
|
|
21
|
-
/** Converts numbers below one million to Thai words. */
|
|
22
|
-
convertBelowMillion (number) {
|
|
23
|
-
if (number === 0) return ''
|
|
24
|
-
|
|
25
|
-
let value = number
|
|
26
|
-
const parts = []
|
|
27
|
-
|
|
28
|
-
const hundredThousands = Math.trunc(value / 100000)
|
|
29
|
-
value %= 100000
|
|
30
|
-
const tenThousands = Math.trunc(value / 10000)
|
|
31
|
-
value %= 10000
|
|
32
|
-
const thousands = Math.trunc(value / 1000)
|
|
33
|
-
value %= 1000
|
|
34
|
-
const hundreds = Math.trunc(value / 100)
|
|
35
|
-
value %= 100
|
|
36
|
-
const tens = Math.trunc(value / 10)
|
|
37
|
-
const ones = value % 10
|
|
38
|
-
|
|
39
|
-
if (hundredThousands > 0) {
|
|
40
|
-
parts.push(this.onesWords[hundredThousands - 1] + 'แสน')
|
|
41
|
-
}
|
|
42
13
|
|
|
43
|
-
|
|
44
|
-
if (tenThousands === 1) {
|
|
45
|
-
parts.push('หนึ่งหมื่น')
|
|
46
|
-
} else {
|
|
47
|
-
parts.push(this.onesWords[tenThousands - 1] + 'หมื่น')
|
|
48
|
-
}
|
|
49
|
-
}
|
|
14
|
+
import { parseNumericValue } from '../utils/parse-numeric.js'
|
|
50
15
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
16
|
+
// ============================================================================
|
|
17
|
+
// Vocabulary
|
|
18
|
+
// ============================================================================
|
|
19
|
+
|
|
20
|
+
const ONES = ['หนึ่ง', 'สอง', 'สาม', 'สี่', 'ห้า', 'หก', 'เจ็ด', 'แปด', 'เก้า']
|
|
21
|
+
|
|
22
|
+
const ZERO = 'ศูนย์'
|
|
23
|
+
const NEGATIVE = 'ลบ'
|
|
24
|
+
const DECIMAL_SEP = 'จุด'
|
|
25
|
+
|
|
26
|
+
// ============================================================================
|
|
27
|
+
// Conversion Functions
|
|
28
|
+
// ============================================================================
|
|
29
|
+
|
|
30
|
+
function convertBelowMillion (n) {
|
|
31
|
+
if (n === 0) return ''
|
|
32
|
+
|
|
33
|
+
let value = n
|
|
34
|
+
const parts = []
|
|
54
35
|
|
|
55
|
-
|
|
56
|
-
|
|
36
|
+
const hundredThousands = Math.trunc(value / 100000)
|
|
37
|
+
value %= 100000
|
|
38
|
+
const tenThousands = Math.trunc(value / 10000)
|
|
39
|
+
value %= 10000
|
|
40
|
+
const thousands = Math.trunc(value / 1000)
|
|
41
|
+
value %= 1000
|
|
42
|
+
const hundreds = Math.trunc(value / 100)
|
|
43
|
+
value %= 100
|
|
44
|
+
const tens = Math.trunc(value / 10)
|
|
45
|
+
const ones = value % 10
|
|
46
|
+
|
|
47
|
+
if (hundredThousands > 0) {
|
|
48
|
+
parts.push(ONES[hundredThousands - 1] + 'แสน')
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
if (tenThousands > 0) {
|
|
52
|
+
if (tenThousands === 1) {
|
|
53
|
+
parts.push('หนึ่งหมื่น')
|
|
54
|
+
} else {
|
|
55
|
+
parts.push(ONES[tenThousands - 1] + 'หมื่น')
|
|
57
56
|
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
if (thousands > 0) {
|
|
60
|
+
parts.push(ONES[thousands - 1] + 'พัน')
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
if (hundreds > 0) {
|
|
64
|
+
parts.push(ONES[hundreds - 1] + 'ร้อย')
|
|
65
|
+
}
|
|
58
66
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
}
|
|
67
|
+
if (tens > 0) {
|
|
68
|
+
if (tens === 1) {
|
|
69
|
+
parts.push('สิบ')
|
|
70
|
+
} else if (tens === 2) {
|
|
71
|
+
parts.push('ยี่สิบ')
|
|
72
|
+
} else {
|
|
73
|
+
parts.push(ONES[tens - 1] + 'สิบ')
|
|
67
74
|
}
|
|
75
|
+
}
|
|
68
76
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
}
|
|
77
|
+
if (ones > 0) {
|
|
78
|
+
const hasHigher = hundredThousands > 0 || tenThousands > 0 || thousands > 0 || hundreds > 0 || tens > 0
|
|
79
|
+
if (ones === 1 && (tens > 0 || hasHigher)) {
|
|
80
|
+
parts.push('เอ็ด')
|
|
81
|
+
} else {
|
|
82
|
+
parts.push(ONES[ones - 1])
|
|
76
83
|
}
|
|
84
|
+
}
|
|
77
85
|
|
|
78
|
-
|
|
86
|
+
return parts.join('')
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
function splitMillionGroups (n) {
|
|
90
|
+
const groups = []
|
|
91
|
+
let remaining = n
|
|
92
|
+
|
|
93
|
+
const million = 1_000_000n
|
|
94
|
+
while (remaining > 0n) {
|
|
95
|
+
const chunk = Number(remaining % million)
|
|
96
|
+
groups.unshift(chunk)
|
|
97
|
+
remaining = remaining / million
|
|
79
98
|
}
|
|
80
99
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
100
|
+
return groups
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
function integerToWords (n) {
|
|
104
|
+
if (n === 0n) return ZERO
|
|
85
105
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
106
|
+
const groups = splitMillionGroups(n)
|
|
107
|
+
const parts = []
|
|
108
|
+
|
|
109
|
+
for (let i = 0; i < groups.length; i++) {
|
|
110
|
+
const groupValue = groups[i]
|
|
111
|
+
if (groupValue === 0) continue
|
|
112
|
+
|
|
113
|
+
parts.push(convertBelowMillion(groupValue))
|
|
114
|
+
const remaining = groups.length - i - 1
|
|
115
|
+
if (remaining > 0) {
|
|
116
|
+
parts.push('ล้าน'.repeat(remaining))
|
|
91
117
|
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
return parts.join('')
|
|
121
|
+
}
|
|
92
122
|
|
|
93
|
-
|
|
123
|
+
function decimalPartToWords (decimalPart) {
|
|
124
|
+
// Per-digit decimal reading
|
|
125
|
+
const digits = []
|
|
126
|
+
for (const char of decimalPart) {
|
|
127
|
+
const d = parseInt(char, 10)
|
|
128
|
+
digits.push(d === 0 ? ZERO : ONES[d - 1])
|
|
94
129
|
}
|
|
130
|
+
return digits.join('')
|
|
131
|
+
}
|
|
95
132
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
133
|
+
/**
|
|
134
|
+
* Converts a numeric value to Thai words.
|
|
135
|
+
*
|
|
136
|
+
* @param {number | string | bigint} value - The numeric value to convert
|
|
137
|
+
* @returns {string} The number in Thai words
|
|
138
|
+
*/
|
|
139
|
+
function toWords (value) {
|
|
140
|
+
const { isNegative, integerPart, decimalPart } = parseNumericValue(value)
|
|
100
141
|
|
|
101
|
-
|
|
102
|
-
const parts = []
|
|
142
|
+
let result = ''
|
|
103
143
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
144
|
+
if (isNegative) {
|
|
145
|
+
result = NEGATIVE
|
|
146
|
+
}
|
|
107
147
|
|
|
108
|
-
|
|
109
|
-
const remaining = groups.length - i - 1
|
|
110
|
-
if (remaining > 0) {
|
|
111
|
-
parts.push('ล้าน'.repeat(remaining))
|
|
112
|
-
}
|
|
113
|
-
}
|
|
148
|
+
result += integerToWords(integerPart)
|
|
114
149
|
|
|
115
|
-
|
|
150
|
+
if (decimalPart) {
|
|
151
|
+
result += DECIMAL_SEP + decimalPartToWords(decimalPart)
|
|
116
152
|
}
|
|
153
|
+
|
|
154
|
+
return result
|
|
117
155
|
}
|
|
156
|
+
|
|
157
|
+
// ============================================================================
|
|
158
|
+
// Exports
|
|
159
|
+
// ============================================================================
|
|
160
|
+
|
|
161
|
+
export { toWords }
|
package/lib/languages/tr.d.ts
CHANGED
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Turkish
|
|
2
|
+
* Converts a numeric value to Turkish words.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* -
|
|
4
|
+
* @param {number | string | bigint} value - The numeric value to convert
|
|
5
|
+
* @param {Object} [options] - Conversion options
|
|
6
|
+
* @param {boolean} [options.dropSpaces=false] - Remove spaces for compound form
|
|
7
|
+
* @returns {string} The number in Turkish 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
|
+
* toWords(21) // 'yirmi bir'
|
|
13
|
+
* toWords(21, { dropSpaces: true }) // 'yirmibir'
|
|
14
|
+
* toWords(1000) // 'bin'
|
|
7
15
|
*/
|
|
8
|
-
export
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
import { TurkicLanguage } from '../classes/turkic-language.js';
|
|
16
|
+
export function toWords(value: number | string | bigint, options?: {
|
|
17
|
+
dropSpaces?: boolean | undefined;
|
|
18
|
+
}): string;
|