@gks101/numtowords 1.0.0 → 1.0.2
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/LICENSE +34 -0
- package/README.md +65 -68
- package/dist/core/converter.js +8 -8
- package/dist/index.cjs.js +321 -148
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.esm.js +321 -148
- package/dist/index.esm.js.map +1 -1
- package/dist/index.umd.js +321 -148
- package/dist/index.umd.js.map +1 -1
- package/dist/locales/de.js +52 -30
- package/dist/locales/en.js +49 -25
- package/dist/locales/fr.js +55 -31
- package/dist/locales/hi.js +116 -37
- package/dist/locales/in.js +46 -22
- package/dist/types/core/converter.d.ts +1 -1
- package/dist/types/core/types.d.ts +1 -1
- package/dist/types/index.d.ts +7 -7
- package/dist/types/locales/de.d.ts +1 -1
- package/dist/types/locales/en.d.ts +1 -1
- package/dist/types/locales/fr.d.ts +1 -1
- package/dist/types/locales/hi.d.ts +1 -1
- package/dist/types/locales/in.d.ts +1 -1
- package/package.json +23 -6
package/dist/locales/hi.js
CHANGED
|
@@ -1,46 +1,125 @@
|
|
|
1
|
-
import { registerLocale } from
|
|
1
|
+
import { registerLocale } from '../core/converter';
|
|
2
2
|
// ─── Word tables ──────────────────────────────────────────────────────────────
|
|
3
3
|
/** 1–99 in Hindi */
|
|
4
4
|
const HINDI_ONES = {
|
|
5
|
-
1:
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
5
|
+
1: 'एक',
|
|
6
|
+
2: 'दो',
|
|
7
|
+
3: 'तीन',
|
|
8
|
+
4: 'चार',
|
|
9
|
+
5: 'पाँच',
|
|
10
|
+
6: 'छह',
|
|
11
|
+
7: 'सात',
|
|
12
|
+
8: 'आठ',
|
|
13
|
+
9: 'नौ',
|
|
14
|
+
10: 'दस',
|
|
15
|
+
11: 'ग्यारह',
|
|
16
|
+
12: 'बारह',
|
|
17
|
+
13: 'तेरह',
|
|
18
|
+
14: 'चौदह',
|
|
19
|
+
15: 'पन्द्रह',
|
|
20
|
+
16: 'सोलह',
|
|
21
|
+
17: 'सत्रह',
|
|
22
|
+
18: 'अट्ठारह',
|
|
23
|
+
19: 'उन्नीस',
|
|
24
|
+
20: 'बीस',
|
|
25
|
+
21: 'इक्कीस',
|
|
26
|
+
22: 'बाईस',
|
|
27
|
+
23: 'तेईस',
|
|
28
|
+
24: 'चौबीस',
|
|
29
|
+
25: 'पच्चीस',
|
|
30
|
+
26: 'छब्बीस',
|
|
31
|
+
27: 'सत्ताईस',
|
|
32
|
+
28: 'अट्ठाईस',
|
|
33
|
+
29: 'उनतीस',
|
|
34
|
+
30: 'तीस',
|
|
35
|
+
31: 'इकतीस',
|
|
36
|
+
32: 'बत्तीस',
|
|
37
|
+
33: 'तैंतीस',
|
|
38
|
+
34: 'चौंतीस',
|
|
39
|
+
35: 'पैंतीस',
|
|
40
|
+
36: 'छत्तीस',
|
|
41
|
+
37: 'सैंतीस',
|
|
42
|
+
38: 'अड़तीस',
|
|
43
|
+
39: 'उनतालीस',
|
|
44
|
+
40: 'चालीस',
|
|
45
|
+
41: 'इकतालीस',
|
|
46
|
+
42: 'बयालीस',
|
|
47
|
+
43: 'तैंतालीस',
|
|
48
|
+
44: 'चौवालीस',
|
|
49
|
+
45: 'पैंतालीस',
|
|
50
|
+
46: 'छियालीस',
|
|
51
|
+
47: 'सैंतालीस',
|
|
52
|
+
48: 'अड़तालीस',
|
|
53
|
+
49: 'उनचास',
|
|
54
|
+
50: 'पचास',
|
|
55
|
+
51: 'इक्यावन',
|
|
56
|
+
52: 'बावन',
|
|
57
|
+
53: 'तिरपन',
|
|
58
|
+
54: 'चौवन',
|
|
59
|
+
55: 'पचपन',
|
|
60
|
+
56: 'छप्पन',
|
|
61
|
+
57: 'सत्तावन',
|
|
62
|
+
58: 'अट्ठावन',
|
|
63
|
+
59: 'उनसठ',
|
|
64
|
+
60: 'साठ',
|
|
65
|
+
61: 'इकसठ',
|
|
66
|
+
62: 'बासठ',
|
|
67
|
+
63: 'तिरसठ',
|
|
68
|
+
64: 'चौंसठ',
|
|
69
|
+
65: 'पैंसठ',
|
|
70
|
+
66: 'छियासठ',
|
|
71
|
+
67: 'सड़सठ',
|
|
72
|
+
68: 'अड़सठ',
|
|
73
|
+
69: 'उनहत्तर',
|
|
74
|
+
70: 'सत्तर',
|
|
75
|
+
71: 'इकहत्तर',
|
|
76
|
+
72: 'बहत्तर',
|
|
77
|
+
73: 'तिहत्तर',
|
|
78
|
+
74: 'चौहत्तर',
|
|
79
|
+
75: 'पचहत्तर',
|
|
80
|
+
76: 'छिहत्तर',
|
|
81
|
+
77: 'सत्तहत्तर',
|
|
82
|
+
78: 'अठहत्तर',
|
|
83
|
+
79: 'उन्यासी',
|
|
84
|
+
80: 'अस्सी',
|
|
85
|
+
81: 'इक्यासी',
|
|
86
|
+
82: 'बयासी',
|
|
87
|
+
83: 'तिरासी',
|
|
88
|
+
84: 'चौरासी',
|
|
89
|
+
85: 'पचासी',
|
|
90
|
+
86: 'छियासी',
|
|
91
|
+
87: 'सत्तासी',
|
|
92
|
+
88: 'अट्ठासी',
|
|
93
|
+
89: 'नवासी',
|
|
94
|
+
90: 'नब्बे',
|
|
95
|
+
91: 'इक्यानबे',
|
|
96
|
+
92: 'बानवे',
|
|
97
|
+
93: 'तिरानवे',
|
|
98
|
+
94: 'चौरानवे',
|
|
99
|
+
95: 'पचानवे',
|
|
100
|
+
96: 'छियानवे',
|
|
101
|
+
97: 'सत्तानवे',
|
|
102
|
+
98: 'अट्ठानवे',
|
|
103
|
+
99: 'निन्यानवे',
|
|
25
104
|
};
|
|
26
|
-
const HINDI_HUNDRED =
|
|
105
|
+
const HINDI_HUNDRED = 'सौ';
|
|
27
106
|
const INDIAN_SCALES_HI = [
|
|
28
|
-
[100000000000000000n,
|
|
29
|
-
[1000000000000000n,
|
|
30
|
-
[10000000000000n,
|
|
31
|
-
[100000000000n,
|
|
32
|
-
[1000000000n,
|
|
33
|
-
[10000000n,
|
|
34
|
-
[100000n,
|
|
35
|
-
[1000n,
|
|
107
|
+
[100000000000000000n, 'शंख'], // 10^17
|
|
108
|
+
[1000000000000000n, 'पद्म'], // 10^15
|
|
109
|
+
[10000000000000n, 'नील'], // 10^13
|
|
110
|
+
[100000000000n, 'खरब'], // 10^11
|
|
111
|
+
[1000000000n, 'अरब'], // 10^9
|
|
112
|
+
[10000000n, 'करोड़'], // 10^7
|
|
113
|
+
[100000n, 'लाख'], // 10^5
|
|
114
|
+
[1000n, 'हज़ार'], // 10^3
|
|
36
115
|
];
|
|
37
116
|
// ─── Helpers ──────────────────────────────────────────────────────────────────
|
|
38
117
|
function upToNinetyNine(n) {
|
|
39
|
-
return HINDI_ONES[n] ??
|
|
118
|
+
return HINDI_ONES[n] ?? '';
|
|
40
119
|
}
|
|
41
120
|
function hundredsHindi(n) {
|
|
42
121
|
if (n === 0)
|
|
43
|
-
return
|
|
122
|
+
return '';
|
|
44
123
|
const h = Math.floor(n / 100);
|
|
45
124
|
const rem = n % 100;
|
|
46
125
|
const parts = [];
|
|
@@ -50,14 +129,14 @@ function hundredsHindi(n) {
|
|
|
50
129
|
}
|
|
51
130
|
if (rem > 0)
|
|
52
131
|
parts.push(upToNinetyNine(rem));
|
|
53
|
-
return parts.join(
|
|
132
|
+
return parts.join(' ');
|
|
54
133
|
}
|
|
55
134
|
// ─── Locale definition ────────────────────────────────────────────────────────
|
|
56
135
|
const hi = {
|
|
57
|
-
name:
|
|
136
|
+
name: 'Hindi',
|
|
58
137
|
convert(n, _opts) {
|
|
59
138
|
if (n === 0n)
|
|
60
|
-
return
|
|
139
|
+
return 'शून्य';
|
|
61
140
|
const parts = [];
|
|
62
141
|
let remaining = n;
|
|
63
142
|
for (const [scale, name] of INDIAN_SCALES_HI) {
|
|
@@ -71,8 +150,8 @@ const hi = {
|
|
|
71
150
|
if (remaining > 0n) {
|
|
72
151
|
parts.push(hundredsHindi(Number(remaining)));
|
|
73
152
|
}
|
|
74
|
-
return parts.join(
|
|
153
|
+
return parts.join(' ');
|
|
75
154
|
},
|
|
76
155
|
};
|
|
77
|
-
registerLocale(
|
|
156
|
+
registerLocale('hi', hi);
|
|
78
157
|
export default hi;
|
package/dist/locales/in.js
CHANGED
|
@@ -1,14 +1,38 @@
|
|
|
1
|
-
import { registerLocale } from
|
|
1
|
+
import { registerLocale } from '../core/converter';
|
|
2
2
|
// ─── Word tables ──────────────────────────────────────────────────────────────
|
|
3
3
|
const ONES = [
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
'',
|
|
5
|
+
'one',
|
|
6
|
+
'two',
|
|
7
|
+
'three',
|
|
8
|
+
'four',
|
|
9
|
+
'five',
|
|
10
|
+
'six',
|
|
11
|
+
'seven',
|
|
12
|
+
'eight',
|
|
13
|
+
'nine',
|
|
14
|
+
'ten',
|
|
15
|
+
'eleven',
|
|
16
|
+
'twelve',
|
|
17
|
+
'thirteen',
|
|
18
|
+
'fourteen',
|
|
19
|
+
'fifteen',
|
|
20
|
+
'sixteen',
|
|
21
|
+
'seventeen',
|
|
22
|
+
'eighteen',
|
|
23
|
+
'nineteen',
|
|
8
24
|
];
|
|
9
25
|
const TENS = [
|
|
10
|
-
|
|
11
|
-
|
|
26
|
+
'',
|
|
27
|
+
'',
|
|
28
|
+
'twenty',
|
|
29
|
+
'thirty',
|
|
30
|
+
'forty',
|
|
31
|
+
'fifty',
|
|
32
|
+
'sixty',
|
|
33
|
+
'seventy',
|
|
34
|
+
'eighty',
|
|
35
|
+
'ninety',
|
|
12
36
|
];
|
|
13
37
|
/**
|
|
14
38
|
* Indian scale names (each 100× the previous after thousand):
|
|
@@ -19,19 +43,19 @@ const TENS = [
|
|
|
19
43
|
* …
|
|
20
44
|
*/
|
|
21
45
|
const INDIAN_SCALES = [
|
|
22
|
-
[100000000000000000n,
|
|
23
|
-
[1000000000000000n,
|
|
24
|
-
[10000000000000n,
|
|
25
|
-
[100000000000n,
|
|
26
|
-
[1000000000n,
|
|
27
|
-
[10000000n,
|
|
28
|
-
[100000n,
|
|
29
|
-
[1000n,
|
|
46
|
+
[100000000000000000n, 'shankh'], // 10^17
|
|
47
|
+
[1000000000000000n, 'padma'], // 10^15
|
|
48
|
+
[10000000000000n, 'neel'], // 10^13
|
|
49
|
+
[100000000000n, 'kharab'], // 10^11
|
|
50
|
+
[1000000000n, 'arab'], // 10^9
|
|
51
|
+
[10000000n, 'crore'], // 10^7
|
|
52
|
+
[100000n, 'lakh'], // 10^5
|
|
53
|
+
[1000n, 'thousand'],
|
|
30
54
|
];
|
|
31
55
|
// ─── Helpers ──────────────────────────────────────────────────────────────────
|
|
32
56
|
function twoDigits(n) {
|
|
33
57
|
if (n === 0)
|
|
34
|
-
return
|
|
58
|
+
return '';
|
|
35
59
|
if (n < 20)
|
|
36
60
|
return ONES[n];
|
|
37
61
|
const t = Math.floor(n / 10);
|
|
@@ -40,7 +64,7 @@ function twoDigits(n) {
|
|
|
40
64
|
}
|
|
41
65
|
function hundredsToWords(n) {
|
|
42
66
|
if (n === 0)
|
|
43
|
-
return
|
|
67
|
+
return '';
|
|
44
68
|
const h = Math.floor(n / 100);
|
|
45
69
|
const rem = n % 100;
|
|
46
70
|
const parts = [];
|
|
@@ -49,14 +73,14 @@ function hundredsToWords(n) {
|
|
|
49
73
|
const two = twoDigits(rem);
|
|
50
74
|
if (two)
|
|
51
75
|
parts.push(two);
|
|
52
|
-
return parts.join(
|
|
76
|
+
return parts.join(' ');
|
|
53
77
|
}
|
|
54
78
|
// ─── Locale definition ────────────────────────────────────────────────────────
|
|
55
79
|
const indian = {
|
|
56
|
-
name:
|
|
80
|
+
name: 'Indian',
|
|
57
81
|
convert(n, _opts) {
|
|
58
82
|
if (n === 0n)
|
|
59
|
-
return
|
|
83
|
+
return 'zero';
|
|
60
84
|
const parts = [];
|
|
61
85
|
let remaining = n;
|
|
62
86
|
for (const [scale, name] of INDIAN_SCALES) {
|
|
@@ -73,8 +97,8 @@ const indian = {
|
|
|
73
97
|
if (remaining > 0n) {
|
|
74
98
|
parts.push(hundredsToWords(Number(remaining)));
|
|
75
99
|
}
|
|
76
|
-
return parts.join(
|
|
100
|
+
return parts.join(' ');
|
|
77
101
|
},
|
|
78
102
|
};
|
|
79
|
-
registerLocale(
|
|
103
|
+
registerLocale('in', indian);
|
|
80
104
|
export default indian;
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
export { convert, registerLocale, getLocale, availableLocales } from
|
|
7
|
-
export type { Locale, ConvertOptions, LocaleDefinition } from
|
|
1
|
+
import './locales/en';
|
|
2
|
+
import './locales/in';
|
|
3
|
+
import './locales/hi';
|
|
4
|
+
import './locales/de';
|
|
5
|
+
import './locales/fr';
|
|
6
|
+
export { convert, registerLocale, getLocale, availableLocales, } from './core/converter';
|
|
7
|
+
export type { Locale, ConvertOptions, LocaleDefinition } from './core/types';
|
package/package.json
CHANGED
|
@@ -1,11 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gks101/numtowords",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"description": "Convert numbers to words in multiple languages and numeral systems (English, Indian, etc.)",
|
|
5
5
|
"main": "dist/index.cjs.js",
|
|
6
6
|
"module": "dist/index.esm.js",
|
|
7
7
|
"browser": "dist/index.umd.js",
|
|
8
8
|
"types": "dist/types/index.d.ts",
|
|
9
|
+
"homepage": "https://gaurav101.github.io/numtowords/",
|
|
10
|
+
"repository": {
|
|
11
|
+
"type": "git",
|
|
12
|
+
"url": "https://github.com/gaurav101/numtowords.git"
|
|
13
|
+
},
|
|
14
|
+
"bugs": {
|
|
15
|
+
"url": "https://github.com/gaurav101/numtowords/issues"
|
|
16
|
+
},
|
|
9
17
|
"exports": {
|
|
10
18
|
".": {
|
|
11
19
|
"import": "./dist/index.esm.js",
|
|
@@ -22,17 +30,25 @@
|
|
|
22
30
|
"test": "jest",
|
|
23
31
|
"lint": "tsc --noEmit",
|
|
24
32
|
"prepack": "npm run build",
|
|
25
|
-
"prepare": "npm run build"
|
|
33
|
+
"prepare": "npm run build",
|
|
34
|
+
"format": "prettier --write .",
|
|
35
|
+
"format:check": "prettier --check ."
|
|
26
36
|
},
|
|
27
37
|
"keywords": [
|
|
28
38
|
"number-to-words",
|
|
29
39
|
"multilingual",
|
|
30
40
|
"indian-numbering",
|
|
31
|
-
"english",
|
|
32
|
-
"hindi",
|
|
41
|
+
"english-numbering",
|
|
42
|
+
"hindi-numbering",
|
|
33
43
|
"number-converter",
|
|
34
44
|
"number-to-word-converter",
|
|
35
|
-
"i18n"
|
|
45
|
+
"i18n",
|
|
46
|
+
"numtowords",
|
|
47
|
+
"number-converter",
|
|
48
|
+
"amount-to-words",
|
|
49
|
+
"numbers-to-text",
|
|
50
|
+
"currency-formatter",
|
|
51
|
+
"intl-number-format"
|
|
36
52
|
],
|
|
37
53
|
"author": "",
|
|
38
54
|
"license": "MIT",
|
|
@@ -45,6 +61,7 @@
|
|
|
45
61
|
"typescript": "^5.5.3",
|
|
46
62
|
"jest": "^29.7.0",
|
|
47
63
|
"@types/jest": "^29.5.12",
|
|
48
|
-
"ts-jest": "^29.2.2"
|
|
64
|
+
"ts-jest": "^29.2.2",
|
|
65
|
+
"prettier": "^3.8.3"
|
|
49
66
|
}
|
|
50
67
|
}
|