@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.
@@ -1,46 +1,125 @@
1
- import { registerLocale } from "../core/converter";
1
+ import { registerLocale } from '../core/converter';
2
2
  // ─── Word tables ──────────────────────────────────────────────────────────────
3
3
  /** 1–99 in Hindi */
4
4
  const HINDI_ONES = {
5
- 1: "एक", 2: "दो", 3: "तीन", 4: "चार", 5: "पाँच",
6
- 6: "छह", 7: "सात", 8: "आठ", 9: "नौ", 10: "दस",
7
- 11: "ग्यारह", 12: "बारह", 13: "तेरह", 14: "चौदह", 15: "पन्द्रह",
8
- 16: "सोलह", 17: "सत्रह", 18: "अट्ठारह", 19: "उन्नीस", 20: "बीस",
9
- 21: "इक्कीस", 22: "बाईस", 23: "तेईस", 24: "चौबीस", 25: "पच्चीस",
10
- 26: "छब्बीस", 27: "सत्ताईस", 28: "अट्ठाईस", 29: "उनतीस", 30: "तीस",
11
- 31: "इकतीस", 32: "बत्तीस", 33: "तैंतीस", 34: "चौंतीस", 35: "पैंतीस",
12
- 36: "छत्तीस", 37: "सैंतीस", 38: "अड़तीस", 39: "उनतालीस", 40: "चालीस",
13
- 41: "इकतालीस", 42: "बयालीस", 43: "तैंतालीस", 44: "चौवालीस", 45: "पैंतालीस",
14
- 46: "छियालीस", 47: "सैंतालीस", 48: "अड़तालीस", 49: "उनचास", 50: "पचास",
15
- 51: "इक्यावन", 52: "बावन", 53: "तिरपन", 54: "चौवन", 55: "पचपन",
16
- 56: "छप्पन", 57: "सत्तावन", 58: "अट्ठावन", 59: "उनसठ", 60: "साठ",
17
- 61: "इकसठ", 62: "बासठ", 63: "तिरसठ", 64: "चौंसठ", 65: "पैंसठ",
18
- 66: "छियासठ", 67: "सड़सठ", 68: "अड़सठ", 69: "उनहत्तर", 70: "सत्तर",
19
- 71: "इकहत्तर", 72: "बहत्तर", 73: "तिहत्तर", 74: "चौहत्तर", 75: "पचहत्तर",
20
- 76: "छिहत्तर", 77: "सत्तहत्तर", 78: "अठहत्तर", 79: "उन्यासी", 80: "अस्सी",
21
- 81: "इक्यासी", 82: "बयासी", 83: "तिरासी", 84: "चौरासी", 85: "पचासी",
22
- 86: "छियासी", 87: "सत्तासी", 88: "अट्ठासी", 89: "नवासी", 90: "नब्बे",
23
- 91: "इक्यानबे", 92: "बानवे", 93: "तिरानवे", 94: "चौरानवे", 95: "पचानवे",
24
- 96: "छियानवे", 97: "सत्तानवे", 98: "अट्ठानवे", 99: "निन्यानवे",
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, "शंख"], // 10^17
29
- [1000000000000000n, "पद्म"], // 10^15
30
- [10000000000000n, "नील"], // 10^13
31
- [100000000000n, "खरब"], // 10^11
32
- [1000000000n, "अरब"], // 10^9
33
- [10000000n, "करोड़"], // 10^7
34
- [100000n, "लाख"], // 10^5
35
- [1000n, "हज़ार"], // 10^3
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: "Hindi",
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("hi", hi);
156
+ registerLocale('hi', hi);
78
157
  export default hi;
@@ -1,14 +1,38 @@
1
- import { registerLocale } from "../core/converter";
1
+ import { registerLocale } from '../core/converter';
2
2
  // ─── Word tables ──────────────────────────────────────────────────────────────
3
3
  const ONES = [
4
- "", "one", "two", "three", "four", "five",
5
- "six", "seven", "eight", "nine", "ten",
6
- "eleven", "twelve", "thirteen", "fourteen", "fifteen",
7
- "sixteen", "seventeen", "eighteen", "nineteen",
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
- "", "", "twenty", "thirty", "forty", "fifty",
11
- "sixty", "seventy", "eighty", "ninety",
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, "shankh"], // 10^17
23
- [1000000000000000n, "padma"], // 10^15
24
- [10000000000000n, "neel"], // 10^13
25
- [100000000000n, "kharab"], // 10^11
26
- [1000000000n, "arab"], // 10^9
27
- [10000000n, "crore"], // 10^7
28
- [100000n, "lakh"], // 10^5
29
- [1000n, "thousand"],
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: "Indian",
80
+ name: 'Indian',
57
81
  convert(n, _opts) {
58
82
  if (n === 0n)
59
- return "zero";
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("in", indian);
103
+ registerLocale('in', indian);
80
104
  export default indian;
@@ -1,4 +1,4 @@
1
- import { ConvertOptions, Locale, LocaleDefinition } from "./types";
1
+ import { ConvertOptions, Locale, LocaleDefinition } from './types';
2
2
  /**
3
3
  * Register a locale definition.
4
4
  * Called internally by each locale module.
@@ -1,5 +1,5 @@
1
1
  /** Supported locale identifiers */
2
- export type Locale = "en" | "in" | "hi" | "de" | "fr" | (string & {});
2
+ export type Locale = 'en' | 'in' | 'hi' | 'de' | 'fr' | (string & {});
3
3
  /** Options passed to convert() */
4
4
  export interface ConvertOptions {
5
5
  /**
@@ -1,7 +1,7 @@
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";
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';
@@ -1,3 +1,3 @@
1
- import { LocaleDefinition } from "../core/types";
1
+ import { LocaleDefinition } from '../core/types';
2
2
  declare const de: LocaleDefinition;
3
3
  export default de;
@@ -1,3 +1,3 @@
1
- import { LocaleDefinition } from "../core/types";
1
+ import { LocaleDefinition } from '../core/types';
2
2
  declare const en: LocaleDefinition;
3
3
  export default en;
@@ -1,3 +1,3 @@
1
- import { LocaleDefinition } from "../core/types";
1
+ import { LocaleDefinition } from '../core/types';
2
2
  declare const fr: LocaleDefinition;
3
3
  export default fr;
@@ -1,3 +1,3 @@
1
- import { LocaleDefinition } from "../core/types";
1
+ import { LocaleDefinition } from '../core/types';
2
2
  declare const hi: LocaleDefinition;
3
3
  export default hi;
@@ -1,3 +1,3 @@
1
- import { LocaleDefinition } from "../core/types";
1
+ import { LocaleDefinition } from '../core/types';
2
2
  declare const indian: LocaleDefinition;
3
3
  export default indian;
package/package.json CHANGED
@@ -1,11 +1,19 @@
1
1
  {
2
2
  "name": "@gks101/numtowords",
3
- "version": "1.0.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
  }