n2words 1.24.0 → 3.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.
Files changed (280) hide show
  1. package/CHANGELOG.md +49 -0
  2. package/README.md +183 -156
  3. package/dist/languages/am-Latn.js +3 -0
  4. package/dist/languages/am-Latn.js.map +1 -0
  5. package/dist/languages/am.js +3 -0
  6. package/dist/languages/am.js.map +1 -0
  7. package/dist/languages/ar.js +3 -2
  8. package/dist/languages/ar.js.map +1 -1
  9. package/dist/languages/az.js +3 -2
  10. package/dist/languages/az.js.map +1 -1
  11. package/dist/languages/bn.js +3 -2
  12. package/dist/languages/bn.js.map +1 -1
  13. package/dist/languages/cs.js +3 -2
  14. package/dist/languages/cs.js.map +1 -1
  15. package/dist/languages/da.js +3 -2
  16. package/dist/languages/da.js.map +1 -1
  17. package/dist/languages/de.js +3 -2
  18. package/dist/languages/de.js.map +1 -1
  19. package/dist/languages/el.js +3 -2
  20. package/dist/languages/el.js.map +1 -1
  21. package/dist/languages/en.js +3 -2
  22. package/dist/languages/en.js.map +1 -1
  23. package/dist/languages/es.js +3 -2
  24. package/dist/languages/es.js.map +1 -1
  25. package/dist/languages/fa.js +3 -2
  26. package/dist/languages/fa.js.map +1 -1
  27. package/dist/languages/fi.js +3 -0
  28. package/dist/languages/fi.js.map +1 -0
  29. package/dist/languages/fil.js +3 -2
  30. package/dist/languages/fil.js.map +1 -1
  31. package/dist/languages/fr-BE.js +3 -2
  32. package/dist/languages/fr-BE.js.map +1 -1
  33. package/dist/languages/fr.js +3 -2
  34. package/dist/languages/fr.js.map +1 -1
  35. package/dist/languages/gu.js +3 -2
  36. package/dist/languages/gu.js.map +1 -1
  37. package/dist/languages/ha.js +3 -0
  38. package/dist/languages/ha.js.map +1 -0
  39. package/dist/languages/hbo.js +3 -0
  40. package/dist/languages/hbo.js.map +1 -0
  41. package/dist/languages/he.js +3 -2
  42. package/dist/languages/he.js.map +1 -1
  43. package/dist/languages/hi.js +3 -2
  44. package/dist/languages/hi.js.map +1 -1
  45. package/dist/languages/hr.js +3 -2
  46. package/dist/languages/hr.js.map +1 -1
  47. package/dist/languages/hu.js +3 -2
  48. package/dist/languages/hu.js.map +1 -1
  49. package/dist/languages/id.js +3 -2
  50. package/dist/languages/id.js.map +1 -1
  51. package/dist/languages/it.js +3 -2
  52. package/dist/languages/it.js.map +1 -1
  53. package/dist/languages/ja.js +3 -2
  54. package/dist/languages/ja.js.map +1 -1
  55. package/dist/languages/kn.js +3 -2
  56. package/dist/languages/kn.js.map +1 -1
  57. package/dist/languages/ko.js +3 -2
  58. package/dist/languages/ko.js.map +1 -1
  59. package/dist/languages/lt.js +3 -2
  60. package/dist/languages/lt.js.map +1 -1
  61. package/dist/languages/lv.js +3 -2
  62. package/dist/languages/lv.js.map +1 -1
  63. package/dist/languages/mr.js +3 -2
  64. package/dist/languages/mr.js.map +1 -1
  65. package/dist/languages/ms.js +3 -2
  66. package/dist/languages/ms.js.map +1 -1
  67. package/dist/languages/nb.js +3 -2
  68. package/dist/languages/nb.js.map +1 -1
  69. package/dist/languages/nl.js +3 -2
  70. package/dist/languages/nl.js.map +1 -1
  71. package/dist/languages/pa.js +3 -0
  72. package/dist/languages/pa.js.map +1 -0
  73. package/dist/languages/pl.js +3 -2
  74. package/dist/languages/pl.js.map +1 -1
  75. package/dist/languages/pt.js +3 -2
  76. package/dist/languages/pt.js.map +1 -1
  77. package/dist/languages/ro.js +3 -2
  78. package/dist/languages/ro.js.map +1 -1
  79. package/dist/languages/ru.js +3 -2
  80. package/dist/languages/ru.js.map +1 -1
  81. package/dist/languages/sr-Cyrl.js +3 -0
  82. package/dist/languages/sr-Cyrl.js.map +1 -0
  83. package/dist/languages/sr-Latn.js +3 -2
  84. package/dist/languages/sr-Latn.js.map +1 -1
  85. package/dist/languages/sv.js +3 -2
  86. package/dist/languages/sv.js.map +1 -1
  87. package/dist/languages/sw.js +3 -2
  88. package/dist/languages/sw.js.map +1 -1
  89. package/dist/languages/ta.js +3 -2
  90. package/dist/languages/ta.js.map +1 -1
  91. package/dist/languages/te.js +3 -2
  92. package/dist/languages/te.js.map +1 -1
  93. package/dist/languages/th.js +3 -2
  94. package/dist/languages/th.js.map +1 -1
  95. package/dist/languages/tr.js +3 -2
  96. package/dist/languages/tr.js.map +1 -1
  97. package/dist/languages/uk.js +3 -2
  98. package/dist/languages/uk.js.map +1 -1
  99. package/dist/languages/ur.js +3 -2
  100. package/dist/languages/ur.js.map +1 -1
  101. package/dist/languages/vi.js +3 -2
  102. package/dist/languages/vi.js.map +1 -1
  103. package/dist/languages/zh-Hans.js +3 -2
  104. package/dist/languages/zh-Hans.js.map +1 -1
  105. package/dist/languages/zh-Hant.js +3 -0
  106. package/dist/languages/zh-Hant.js.map +1 -0
  107. package/dist/n2words.js +3 -2
  108. package/dist/n2words.js.map +1 -1
  109. package/lib/languages/am-Latn.d.ts +7 -0
  110. package/lib/languages/am-Latn.js +164 -0
  111. package/lib/languages/am.d.ts +7 -0
  112. package/lib/languages/am.js +164 -0
  113. package/lib/languages/ar.d.ts +17 -0
  114. package/lib/languages/ar.js +171 -209
  115. package/lib/languages/az.d.ts +7 -0
  116. package/lib/languages/az.js +167 -49
  117. package/lib/languages/bn.d.ts +7 -0
  118. package/lib/languages/bn.js +142 -123
  119. package/lib/languages/cs.d.ts +18 -0
  120. package/lib/languages/cs.js +303 -176
  121. package/lib/languages/da.d.ts +14 -0
  122. package/lib/languages/da.js +267 -139
  123. package/lib/languages/de.d.ts +17 -0
  124. package/lib/languages/de.js +310 -113
  125. package/lib/languages/el.d.ts +14 -0
  126. package/lib/languages/el.js +225 -98
  127. package/lib/languages/en.d.ts +17 -0
  128. package/lib/languages/en.js +235 -102
  129. package/lib/languages/es.d.ts +21 -0
  130. package/lib/languages/es.js +307 -125
  131. package/lib/languages/fa.d.ts +7 -0
  132. package/lib/languages/fa.js +115 -108
  133. package/lib/languages/fi.d.ts +14 -0
  134. package/lib/languages/fi.js +245 -0
  135. package/lib/languages/fil.d.ts +7 -0
  136. package/lib/languages/fil.js +199 -139
  137. package/lib/languages/fr-BE.d.ts +11 -0
  138. package/lib/languages/fr-BE.js +287 -48
  139. package/lib/languages/fr.d.ts +21 -0
  140. package/lib/languages/fr.js +343 -119
  141. package/lib/languages/gu.d.ts +7 -0
  142. package/lib/languages/gu.js +125 -144
  143. package/lib/languages/ha.d.ts +7 -0
  144. package/lib/languages/ha.js +230 -0
  145. package/lib/languages/hbo.d.ts +13 -0
  146. package/lib/languages/hbo.js +300 -0
  147. package/lib/languages/he.d.ts +13 -0
  148. package/lib/languages/he.js +230 -283
  149. package/lib/languages/hi.d.ts +7 -0
  150. package/lib/languages/hi.js +142 -123
  151. package/lib/languages/hr.d.ts +11 -0
  152. package/lib/languages/hr.js +190 -129
  153. package/lib/languages/hu.d.ts +7 -0
  154. package/lib/languages/hu.js +194 -133
  155. package/lib/languages/id.d.ts +7 -0
  156. package/lib/languages/id.js +167 -140
  157. package/lib/languages/it.d.ts +19 -0
  158. package/lib/languages/it.js +337 -108
  159. package/lib/languages/ja.d.ts +17 -0
  160. package/lib/languages/ja.js +224 -155
  161. package/lib/languages/kn.d.ts +7 -0
  162. package/lib/languages/kn.js +128 -62
  163. package/lib/languages/ko.d.ts +14 -0
  164. package/lib/languages/ko.js +250 -70
  165. package/lib/languages/lt.d.ts +18 -0
  166. package/lib/languages/lt.js +287 -148
  167. package/lib/languages/lv.d.ts +18 -0
  168. package/lib/languages/lv.js +291 -123
  169. package/lib/languages/mr.d.ts +7 -0
  170. package/lib/languages/mr.js +125 -144
  171. package/lib/languages/ms.d.ts +7 -0
  172. package/lib/languages/ms.js +171 -112
  173. package/lib/languages/nb.d.ts +14 -0
  174. package/lib/languages/nb.js +275 -100
  175. package/lib/languages/nl.d.ts +26 -0
  176. package/lib/languages/nl.js +307 -174
  177. package/lib/languages/pa.d.ts +7 -0
  178. package/lib/languages/pa.js +163 -0
  179. package/lib/languages/pl.d.ts +22 -0
  180. package/lib/languages/pl.js +299 -158
  181. package/lib/languages/pt.d.ts +17 -0
  182. package/lib/languages/pt.js +279 -120
  183. package/lib/languages/ro.d.ts +18 -0
  184. package/lib/languages/ro.js +214 -337
  185. package/lib/languages/ru.d.ts +11 -0
  186. package/lib/languages/ru.js +219 -95
  187. package/lib/languages/sr-Cyrl.d.ts +11 -0
  188. package/lib/languages/sr-Cyrl.js +215 -0
  189. package/lib/languages/sr-Latn.d.ts +11 -0
  190. package/lib/languages/sr-Latn.js +190 -132
  191. package/lib/languages/sv.d.ts +14 -0
  192. package/lib/languages/sv.js +280 -103
  193. package/lib/languages/sw.d.ts +7 -0
  194. package/lib/languages/sw.js +135 -103
  195. package/lib/languages/ta.d.ts +7 -0
  196. package/lib/languages/ta.js +133 -205
  197. package/lib/languages/te.d.ts +7 -0
  198. package/lib/languages/te.js +148 -213
  199. package/lib/languages/th.d.ts +7 -0
  200. package/lib/languages/th.js +139 -101
  201. package/lib/languages/tr.d.ts +18 -0
  202. package/lib/languages/tr.js +246 -66
  203. package/lib/languages/uk.d.ts +11 -0
  204. package/lib/languages/uk.js +197 -101
  205. package/lib/languages/ur.d.ts +7 -0
  206. package/lib/languages/ur.js +160 -123
  207. package/lib/languages/vi.d.ts +17 -0
  208. package/lib/languages/vi.js +287 -164
  209. package/lib/languages/zh-Hans.d.ts +11 -0
  210. package/lib/languages/zh-Hans.js +159 -142
  211. package/lib/languages/zh-Hant.d.ts +11 -0
  212. package/lib/languages/zh-Hant.js +202 -0
  213. package/lib/n2words.d.ts +53 -0
  214. package/lib/n2words.js +91 -227
  215. package/lib/utils/is-plain-object.d.ts +13 -0
  216. package/lib/utils/is-plain-object.js +17 -0
  217. package/lib/utils/parse-numeric.d.ts +17 -0
  218. package/lib/utils/parse-numeric.js +108 -0
  219. package/lib/utils/validate-options.d.ts +8 -0
  220. package/lib/utils/validate-options.js +16 -0
  221. package/package.json +118 -67
  222. package/dist/languages/pa-Guru.js +0 -2
  223. package/dist/languages/pa-Guru.js.map +0 -1
  224. package/lib/classes/abstract-language.js +0 -261
  225. package/lib/classes/greedy-scale-language.js +0 -195
  226. package/lib/classes/slavic-language.js +0 -251
  227. package/lib/classes/south-asian-language.js +0 -161
  228. package/lib/classes/turkic-language.js +0 -63
  229. package/lib/languages/pa-Guru.js +0 -126
  230. package/typings/classes/abstract-language.d.ts +0 -144
  231. package/typings/classes/greedy-scale-language.d.ts +0 -148
  232. package/typings/classes/slavic-language.d.ts +0 -145
  233. package/typings/classes/south-asian-language.d.ts +0 -101
  234. package/typings/classes/turkic-language.d.ts +0 -42
  235. package/typings/languages/ar.d.ts +0 -93
  236. package/typings/languages/az.d.ts +0 -25
  237. package/typings/languages/bn.d.ts +0 -1
  238. package/typings/languages/cs.d.ts +0 -120
  239. package/typings/languages/da.d.ts +0 -53
  240. package/typings/languages/de.d.ts +0 -26
  241. package/typings/languages/el.d.ts +0 -11
  242. package/typings/languages/en.d.ts +0 -30
  243. package/typings/languages/es.d.ts +0 -43
  244. package/typings/languages/fa.d.ts +0 -81
  245. package/typings/languages/fil.d.ts +0 -12
  246. package/typings/languages/fr-BE.d.ts +0 -41
  247. package/typings/languages/fr.d.ts +0 -43
  248. package/typings/languages/gu.d.ts +0 -12
  249. package/typings/languages/he.d.ts +0 -197
  250. package/typings/languages/hi.d.ts +0 -1
  251. package/typings/languages/hr.d.ts +0 -110
  252. package/typings/languages/hu.d.ts +0 -37
  253. package/typings/languages/id.d.ts +0 -69
  254. package/typings/languages/it.d.ts +0 -51
  255. package/typings/languages/ja.d.ts +0 -58
  256. package/typings/languages/kn.d.ts +0 -11
  257. package/typings/languages/ko.d.ts +0 -25
  258. package/typings/languages/lt.d.ts +0 -110
  259. package/typings/languages/lv.d.ts +0 -99
  260. package/typings/languages/mr.d.ts +0 -12
  261. package/typings/languages/ms.d.ts +0 -37
  262. package/typings/languages/nb.d.ts +0 -27
  263. package/typings/languages/nl.d.ts +0 -65
  264. package/typings/languages/pa-Guru.d.ts +0 -1
  265. package/typings/languages/pl.d.ts +0 -116
  266. package/typings/languages/pt.d.ts +0 -39
  267. package/typings/languages/ro.d.ts +0 -229
  268. package/typings/languages/ru.d.ts +0 -108
  269. package/typings/languages/sr-Latn.d.ts +0 -98
  270. package/typings/languages/sv.d.ts +0 -30
  271. package/typings/languages/sw.d.ts +0 -1
  272. package/typings/languages/ta.d.ts +0 -1
  273. package/typings/languages/te.d.ts +0 -1
  274. package/typings/languages/th.d.ts +0 -1
  275. package/typings/languages/tr.d.ts +0 -46
  276. package/typings/languages/uk.d.ts +0 -117
  277. package/typings/languages/ur.d.ts +0 -1
  278. package/typings/languages/vi.d.ts +0 -116
  279. package/typings/languages/zh-Hans.d.ts +0 -57
  280. package/typings/n2words.d.ts +0 -177
@@ -1,51 +0,0 @@
1
- /**
2
- * Converts a number to Italian cardinal (written) form.
3
- *
4
- * @param {number|string|bigint} value The number to convert.
5
- * @param {Object} [options={}] Configuration options.
6
- * @returns {string} The number expressed in Italian words.
7
- * @throws {TypeError} If value is NaN or invalid type.
8
- * @throws {Error} If value is an invalid number string.
9
- */
10
- export default function convertToWords(value: number | string | bigint, options?: any): string;
11
- /**
12
- * Italian language converter.
13
- *
14
- * Converts numbers to Italian words following Italian conventions:
15
- * - Phonetic contractions (removes duplicate vowels: "ventotto" not "ventiotto")
16
- * - Accentuation rules for "tre" in compounds ("ventitré" not "ventitre")
17
- * - Special handling for "uno" and vowel agreement
18
- * - Complex composition patterns for large numbers
19
- *
20
- * Architecture Note:
21
- * Unlike other GreedyScaleLanguage subclasses, Italian uses a custom algorithm
22
- * rather than the standard highest-matching-scale approach. This is necessary
23
- * because Italian's word formation rules are irregular and context-dependent.
24
- * See tensToCardinal(), hundredsToCardinal(), and bigNumberToCardinal().
25
- *
26
- * Features:
27
- * - Vowel elision (e.g., "ventotto" not "ventiotto")
28
- * - Accentuation of final "tre" (ventitré, trentacinque - note: accent on compound tres)
29
- * - Exponent-based large number naming (milione, miliardo, trilione)
30
- * - Custom word construction for hundreds and thousands
31
- */
32
- export class Italian extends GreedyScaleLanguage {
33
- cardinalWords: string[];
34
- strTens: {
35
- 2: string;
36
- 3: string;
37
- 4: string;
38
- 6: string;
39
- };
40
- exponentPrefixes: string[];
41
- accentuate(string: any): any;
42
- omitIfZero(numberToString: any): any;
43
- phoneticContraction(string: any): any;
44
- tensToCardinal(number: any): any;
45
- hundredsToCardinal(number: any): any;
46
- thousandsToCardinal(number: any): string;
47
- exponentLengthToString(exponentLength: any): string;
48
- bigNumberToCardinal(number: any): string;
49
- convertWholePart(number: any): any;
50
- }
51
- import GreedyScaleLanguage from '../classes/greedy-scale-language.js';
@@ -1,58 +0,0 @@
1
- /**
2
- * Converts a value to cardinal (written) form in Japanese.
3
- *
4
- * @param {number|string|bigint} value - Number to convert.
5
- * @param {Object} [options] - Options for the converter.
6
- * @returns {string} Value in Japanese kanji numerals.
7
- * @throws {Error} If value is invalid.
8
- *
9
- * @example
10
- * convertToWords(42, { lang: 'ja' }); // '四十二'
11
- * convertToWords(1000, { lang: 'ja' }); // '千'
12
- * convertToWords(10000, { lang: 'ja' }); // '一万'
13
- */
14
- export default function convertToWords(value: number | string | bigint, options?: any): string;
15
- /**
16
- * Japanese language converter.
17
- *
18
- * Converts numbers to Japanese kanji numerals using the Sino-Japanese system:
19
- * - Uses kanji characters (一, 二, 三, etc.)
20
- * - Grouping by 万 (man, 10,000) and 億 (oku, 100,000,000)
21
- * - Unique scale units: 兆 (chō, trillion), 京 (kei, 10^16)
22
- * - Special rules for 1: omitted before 十 (10), 百 (100), 千 (1000), but kept for 万 and above
23
- *
24
- * Key Features:
25
- * - Sino-Japanese number system (standard for general counting)
26
- * - Grouping by powers of 10,000 (万-based system, not 1,000)
27
- * - Scale units: 万 (10^4), 億 (10^8), 兆 (10^12), 京 (10^16)
28
- * - Special handling of 一 (one) prefix
29
- * - Support for very large numbers up to 無量大数 (10^68)
30
- *
31
- * Algorithm:
32
- * 1. Split number into groups of 4 digits (万-based, not 3-digit thousand-based)
33
- * 2. Convert each group to kanji using special rules
34
- * 3. Append appropriate scale word (万, 億, 兆, etc.)
35
- * 4. Join all groups
36
- *
37
- * Special Rules:
38
- * - 10, 100, 1000: Don't use 一 prefix (十, 百, 千 not 一十, 一百, 一千)
39
- * - 10,000+: Keep 一 prefix (一万, 一億, 一兆)
40
- * - Zero: 零 or 〇 (both acceptable, 零 is more formal)
41
- */
42
- export class Japanese extends AbstractLanguage {
43
- scales: string[];
44
- /**
45
- * Converts a group of up to 4 digits to Japanese kanji.
46
- * Handles special rules for omitting 一 before 十, 百, 千.
47
- *
48
- * Rule: Within a group, omit 一 before 十/百/千 EXCEPT when:
49
- * - It's a lower group (not isTopGroup) AND
50
- * - It would be the only character in that position
51
- *
52
- * @param {bigint} num - Number from 0 to 9999
53
- * @param {boolean} isTopGroup - Whether this is the highest non-zero group
54
- * @returns {string} Japanese kanji representation
55
- */
56
- convertGroup(num: bigint, isTopGroup?: boolean): string;
57
- }
58
- import AbstractLanguage from '../classes/abstract-language.js';
@@ -1,11 +0,0 @@
1
- /**
2
- * Converts a number to its word representation in Kannada.
3
- * @param {number|string|bigint} value - The number to convert
4
- * @param {Object} [options={}] - Conversion options
5
- * @returns {string} The word representation of the number
6
- * @example
7
- * convertToWords(42) // 'ನಲವತ್ತೆರಡು'
8
- * convertToWords(1000) // 'ಒಂದು ಸಾವಿರ'
9
- * convertToWords(100000) // 'ಒಂದು ಲಕ್ಷ'
10
- */
11
- export default function convertToWords(value: number | string | bigint, options?: any): string;
@@ -1,25 +0,0 @@
1
- /**
2
- * Converts a number to Korean cardinal (written) form.
3
- *
4
- * @param {number|string|bigint} value The number to convert.
5
- * @param {Object} [options] Conversion options (see Korean class options).
6
- * @returns {string} The number expressed in Korean words.
7
- * @throws {TypeError} If value is NaN or invalid type.
8
- * @throws {Error} If value is an invalid number string.
9
- *
10
- * @example
11
- * convertToWords(42); // '사십이'
12
- * convertToWords(10001); // '만 일'
13
- */
14
- export default function convertToWords(value: number | string | bigint, options?: any): string;
15
- /**
16
- * Korean language converter.
17
- *
18
- * Features:
19
- * - Space-separated for large numbers (>= 만/10,000)
20
- * - Concatenated for smaller numbers
21
- * - Omits '일' (1) before multipliers
22
- */
23
- export class Korean extends GreedyScaleLanguage {
24
- }
25
- import GreedyScaleLanguage from '../classes/greedy-scale-language.js';
@@ -1,110 +0,0 @@
1
- /**
2
- * Converts a number to Lithuanian cardinal (written) form.
3
- *
4
- * @param {number|string|bigint} value The number to convert.
5
- * @param {Object} [options={}] Configuration options.
6
- * @param {boolean} [options.feminine=false] Use feminine forms for numbers.
7
- * @returns {string} The number expressed in Lithuanian words.
8
- * @throws {TypeError} If value is NaN or invalid type.
9
- * @throws {Error} If value is an invalid number string.
10
- */
11
- export default function convertToWords(value: number | string | bigint, options?: {
12
- feminine?: boolean;
13
- }): string;
14
- /**
15
- * @typedef {Object} SlavicOptions
16
- * @property {boolean} [feminine=false] Use feminine forms for numbers.
17
- */
18
- /**
19
- * Lithuanian language converter.
20
- *
21
- * Implements Lithuanian number words using the Slavic language pattern:
22
- * - Lithuanian number words (vienas/viena, du/dvi, trys, keturi...)
23
- * - Gender-aware forms (masculine/feminine)
24
- * - Baltic three-form pluralization (tūkstantis/tūkstančiai/tūkstančių)
25
- * - Lithuanian-specific declension patterns
26
- *
27
- * Key Features:
28
- * - Three-form pluralization system shared across Slavic/Baltic languages
29
- * * Form 1 (singular): 1 (e.g., "tūkstantis")
30
- * * Form 2 (few): 2-4, 22-24, 32-34... excluding teens (e.g., "tūkstančiai")
31
- * * Form 3 (many): all other numbers (e.g., "tūkstančių")
32
- * - Chunk-based decomposition (splits into groups of 3 digits: ones, thousands, millions, etc.)
33
- * - Large number handling via thousands[] array with indexed [singular, few, many] forms
34
- * - Gender-specific number forms for 1 and 2 (masculine/feminine dual forms)
35
- *
36
- * Features:
37
- * - Dual gender forms (vienas/viena, du/dvi, keturi/keturios)
38
- * - Complex declension patterns for large numbers
39
- * - Baltic language characteristics
40
- *
41
- * Inherits from SlavicLanguage as Lithuanian uses similar pluralization.
42
- */
43
- export class Lithuanian extends SlavicLanguage {
44
- ones: {
45
- 1: string;
46
- 2: string;
47
- 3: string;
48
- 4: string;
49
- 5: string;
50
- 6: string;
51
- 7: string;
52
- 8: string;
53
- 9: string;
54
- };
55
- onesFeminine: {
56
- 1: string;
57
- 2: string;
58
- 3: string;
59
- 4: string;
60
- 5: string;
61
- 6: string;
62
- 7: string;
63
- 8: string;
64
- 9: string;
65
- };
66
- tens: {
67
- 0: string;
68
- 1: string;
69
- 2: string;
70
- 3: string;
71
- 4: string;
72
- 5: string;
73
- 6: string;
74
- 7: string;
75
- 8: string;
76
- 9: string;
77
- };
78
- twenties: {
79
- 2: string;
80
- 3: string;
81
- 4: string;
82
- 5: string;
83
- 6: string;
84
- 7: string;
85
- 8: string;
86
- 9: string;
87
- };
88
- hundreds: string[];
89
- thousands: {
90
- 1: string[];
91
- 2: string[];
92
- 3: string[];
93
- 4: string[];
94
- 5: string[];
95
- 6: string[];
96
- 7: string[];
97
- 8: string[];
98
- 9: string[];
99
- 10: string[];
100
- };
101
- pluralize(n: any, forms: any): any;
102
- convertWholePart(number: any): string;
103
- }
104
- export type SlavicOptions = {
105
- /**
106
- * Use feminine forms for numbers.
107
- */
108
- feminine?: boolean;
109
- };
110
- import SlavicLanguage from '../classes/slavic-language.js';
@@ -1,99 +0,0 @@
1
- /**
2
- * Converts a number to Latvian cardinal (written) form.
3
- *
4
- * @param {number|string|bigint} value The number to convert.
5
- * @param {Object} [options={}] Configuration options.
6
- * @param {boolean} [options.feminine=false] Use feminine forms for numbers.
7
- * @returns {string} The number expressed in Latvian words.
8
- * @throws {TypeError} If value is NaN or invalid type.
9
- * @throws {Error} If value is an invalid number string.
10
- */
11
- export default function convertToWords(value: number | string | bigint, options?: {
12
- feminine?: boolean;
13
- }): string;
14
- /**
15
- * @typedef {Object} SlavicOptions
16
- * @property {boolean} [feminine=false] Use feminine forms for numbers.
17
- */
18
- /**
19
- * Latvian language converter.
20
- *
21
- * Implements Latvian number words using the Slavic language pattern:
22
- * - Latvian number words (viens, divi, trīs, četri, pieci...)
23
- * - Latvian-specific pluralization patterns
24
- * - Baltic grammatical structure
25
- * - Simplified gender handling compared to Lithuanian
26
- *
27
- * Key Features:
28
- * - Three-form pluralization system shared across Slavic/Baltic languages
29
- * * Form 1 (singular): 1 (e.g., "tūkstotis")
30
- * * Form 2 (few): 2-4, 22-24, 32-34... excluding teens (e.g., "tūkstoši")
31
- * * Form 3 (many): all other numbers (e.g., "tūkstošu")
32
- * - Chunk-based decomposition (splits into groups of 3 digits: ones, thousands, millions, etc.)
33
- * - Large number handling via thousands[] array with indexed [singular, few, many] forms
34
- *
35
- * Features:
36
- * - Latvian diacritical marks (ī, ā, ē, ū, etc.)
37
- * - Three-form pluralization (adapted for Latvian)
38
- * - Baltic number naming conventions
39
- * - Compound number formation (divdesmit, trīsdesmit)
40
- *
41
- * Inherits from SlavicLanguage for pluralization algorithms.
42
- */
43
- export class Latvian extends SlavicLanguage {
44
- ones: {
45
- 1: string;
46
- 2: string;
47
- 3: string;
48
- 4: string;
49
- 5: string;
50
- 6: string;
51
- 7: string;
52
- 8: string;
53
- 9: string;
54
- };
55
- tens: {
56
- 0: string;
57
- 1: string;
58
- 2: string;
59
- 3: string;
60
- 4: string;
61
- 5: string;
62
- 6: string;
63
- 7: string;
64
- 8: string;
65
- 9: string;
66
- };
67
- twenties: {
68
- 2: string;
69
- 3: string;
70
- 4: string;
71
- 5: string;
72
- 6: string;
73
- 7: string;
74
- 8: string;
75
- 9: string;
76
- };
77
- hundreds: string[];
78
- thousands: {
79
- 1: string[];
80
- 2: string[];
81
- 3: string[];
82
- 4: string[];
83
- 5: string[];
84
- 6: string[];
85
- 7: string[];
86
- 8: string[];
87
- 9: string[];
88
- 10: string[];
89
- };
90
- pluralize(n: any, forms: any): any;
91
- convertWholePart(number: any): string;
92
- }
93
- export type SlavicOptions = {
94
- /**
95
- * Use feminine forms for numbers.
96
- */
97
- feminine?: boolean;
98
- };
99
- import SlavicLanguage from '../classes/slavic-language.js';
@@ -1,12 +0,0 @@
1
- /**
2
- * Convert a number to Marathi words
3
- *
4
- * @param {number|string|bigint} value - The number to convert
5
- * @param {Object} [options={}] - Conversion options
6
- * @returns {string} The Marathi word representation
7
- * @example
8
- * convertToWords(42) // 'बेचाळीस'
9
- * convertToWords(1000) // 'एक हजार'
10
- * convertToWords(100000) // 'एक लाख'
11
- */
12
- export default function convertToWords(value: number | string | bigint, options?: any): string;
@@ -1,37 +0,0 @@
1
- export default function convertToWords(value: any, options?: {}): string;
2
- /**
3
- * Malay (Bahasa Melayu) language converter.
4
- *
5
- * Conventions:
6
- * - Base-10 structure
7
- * - "Se-" prefix for singular units (seratus, seribu, sejuta, sebilion, setrilion)
8
- * - Space-separated components (no conjunction like "dan" for tens/ones)
9
- * - Grouping by thousands (ribu, juta, bilion, trilion)
10
- */
11
- export class Malay extends AbstractLanguage {
12
- base: {
13
- 0: any[];
14
- 1: string[];
15
- 2: string[];
16
- 3: string[];
17
- 4: string[];
18
- 5: string[];
19
- 6: string[];
20
- 7: string[];
21
- 8: string[];
22
- 9: string[];
23
- };
24
- thousands: {
25
- 3: string;
26
- 6: string;
27
- 9: string;
28
- 12: string;
29
- };
30
- splitBy3(number: any): any[][];
31
- spell(blocks: any): any[];
32
- getHundreds(number: any): any[];
33
- getTens(number: any): any;
34
- join(wordBlocks: any): string;
35
- convertWholePart(number: any): string;
36
- }
37
- import AbstractLanguage from '../classes/abstract-language.js';
@@ -1,27 +0,0 @@
1
- /**
2
- * Converts a number to Norwegian cardinal (written) form.
3
- *
4
- * @param {number|string|bigint} value The number to convert.
5
- * @param {Object} [options] Conversion options (see Norwegian class options).
6
- * @returns {string} The number expressed in Norwegian words.
7
- * @throws {TypeError} If value is NaN or invalid type.
8
- * @throws {Error} If value is an invalid number string.
9
- *
10
- * @example
11
- * convertToWords(42); // 'førti-to'
12
- * convertToWords('1.5'); // 'en komma fem'
13
- */
14
- export default function convertToWords(value: number | string | bigint, options?: any): string;
15
- /**
16
- * Norwegian language converter.
17
- *
18
- * GreedyScaleLanguage with inline Norwegian merge rules:
19
- * - Hyphenation for compound numbers (e.g., "tjueen")
20
- * - "og" (and) for hundreds combinations
21
- * - Comma separation for non-magnitude additions
22
- * - Implicit '1' before tens and magnitudes
23
- * - Space separators for large numbers
24
- */
25
- export class Norwegian extends GreedyScaleLanguage {
26
- }
27
- import GreedyScaleLanguage from '../classes/greedy-scale-language.js';
@@ -1,65 +0,0 @@
1
- /**
2
- * Converts a number to Dutch cardinal (written) form.
3
- *
4
- * @param {number|string|bigint} value The number to convert.
5
- * @param {Object} [options] Conversion options (see Dutch class options).
6
- * @param {boolean} [options.includeOptionalAnd=false] Include optional 'en' (and) separator.
7
- * @param {boolean} [options.noHundredPairs=false] Don't combine hundreds with tens/units.
8
- * @param {boolean} [options.accentOne=true] Use accented 'één' for standalone 1.
9
- * @returns {string} The number expressed in Dutch words.
10
- * @throws {TypeError} If value is NaN or invalid type.
11
- * @throws {Error} If value is an invalid number string.
12
- *
13
- * @example
14
- * convertToWords(1); // 'één' (default accent)
15
- * convertToWords(1, { accentOne: false }); // 'een'
16
- * convertToWords(21); // 'eenentwintig' (no accent in compounds)
17
- * convertToWords(42); // 'tweeenveertig'
18
- * convertToWords('1.5'); // 'één komma vijf'
19
- */
20
- export default function convertToWords(value: number | string | bigint, options?: {
21
- includeOptionalAnd?: boolean;
22
- noHundredPairs?: boolean;
23
- accentOne?: boolean;
24
- }): string;
25
- /**
26
- * @typedef {Object} DutchOptions
27
- * @property {boolean} [includeOptionalAnd=false] Include optional "en" separator.
28
- * @property {boolean} [noHundredPairs=false] Disable comma before hundreds.
29
- * @property {boolean} [accentOne=true] Use accented "één" for one.
30
- */
31
- /**
32
- * Dutch language converter.
33
- *
34
- * Features:
35
- * - Optional "en" (and) separator for tens (includeOptionalAnd)
36
- * - Optional comma before hundreds (noHundredPairs)
37
- * - Compound word formation without hyphenation
38
- */
39
- export class Dutch extends GreedyScaleLanguage {
40
- /**
41
- * Initializes the Dutch converter with language-specific options.
42
- *
43
- * @param {DutchOptions} [options={}] Configuration options.
44
- */
45
- constructor({ includeOptionalAnd, noHundredPairs, accentOne }?: DutchOptions);
46
- includeOptionalAnd: boolean;
47
- noHundredPairs: boolean;
48
- accentOne: boolean;
49
- convertWholePart(value: any): string;
50
- }
51
- export type DutchOptions = {
52
- /**
53
- * Include optional "en" separator.
54
- */
55
- includeOptionalAnd?: boolean;
56
- /**
57
- * Disable comma before hundreds.
58
- */
59
- noHundredPairs?: boolean;
60
- /**
61
- * Use accented "één" for one.
62
- */
63
- accentOne?: boolean;
64
- };
65
- import GreedyScaleLanguage from '../classes/greedy-scale-language.js';
@@ -1 +0,0 @@
1
- export default function convertToWords(value: any, options?: {}): string;
@@ -1,116 +0,0 @@
1
- /**
2
- * Converts a number to Polish cardinal (written) form.
3
- *
4
- * @param {number|string|bigint} value The number to convert.
5
- * @param {SlavicOptions} [options={}] Configuration options.
6
- * @returns {string} The number expressed in Polish words.
7
- * @throws {TypeError} If value is NaN or invalid type.
8
- * @throws {Error} If value is an invalid number string.
9
- */
10
- export default function convertToWords(value: number | string | bigint, options?: SlavicOptions): string;
11
- /**
12
- * @typedef {Object} SlavicOptions
13
- * @property {boolean} [feminine=false] Use feminine forms for numbers.
14
- */
15
- /**
16
- * Polish language converter.
17
- *
18
- * Implements Polish number words using the Slavic language pattern:
19
- * - Polish number words (jeden, dwa, trzy, cztery, pięć...)
20
- * - Complex Slavic three-form pluralization (tysiąc/tysiące/tysięcy)
21
- * - Polish-specific declension patterns
22
- * - Distinctive Polish phonology and orthography
23
- *
24
- * Key Features:
25
- * - Three-form pluralization system shared across Slavic languages
26
- * * Form 1 (singular): 1 (e.g., "tysiąc")
27
- * * Form 2 (few): 2-4, 22-24, 32-34... excluding teens (e.g., "tysiące")
28
- * * Form 3 (many): all other numbers (e.g., "tysięcy")
29
- * - Chunk-based decomposition (splits into groups of 3 digits: ones, thousands, millions, etc.)
30
- * - Large number handling via thousands[] array with indexed [singular, few, many] forms
31
- *
32
- * Features:
33
- * - Polish diacritical marks (ą, ć, ę, ł, ń, ś, ź, ż)
34
- * - Gender and case agreement
35
- * - Polish-specific number word endings
36
- *
37
- * Inherits from SlavicLanguage for complex pluralization algorithms.
38
- */
39
- export class Polish extends SlavicLanguage {
40
- ones: {
41
- 1: string;
42
- 2: string;
43
- 3: string;
44
- 4: string;
45
- 5: string;
46
- 6: string;
47
- 7: string;
48
- 8: string;
49
- 9: string;
50
- };
51
- tens: {
52
- 0: string;
53
- 1: string;
54
- 2: string;
55
- 3: string;
56
- 4: string;
57
- 5: string;
58
- 6: string;
59
- 7: string;
60
- 8: string;
61
- 9: string;
62
- };
63
- twenties: {
64
- 2: string;
65
- 3: string;
66
- 4: string;
67
- 5: string;
68
- 6: string;
69
- 7: string;
70
- 8: string;
71
- 9: string;
72
- };
73
- hundreds: {
74
- 1: string;
75
- 2: string;
76
- 3: string;
77
- 4: string;
78
- 5: string;
79
- 6: string;
80
- 7: string;
81
- 8: string;
82
- 9: string;
83
- };
84
- thousands: {
85
- 1: string[];
86
- 2: string[];
87
- 3: string[];
88
- 4: string[];
89
- 5: string[];
90
- 6: string[];
91
- 7: string[];
92
- 8: string[];
93
- 9: string[];
94
- 10: string[];
95
- };
96
- /**
97
- * Implements Polish-specific three-form pluralization rules.
98
- *
99
- * Polish three-form system:
100
- * - Form 1 (singular): exactly n=1 (e.g., "tysiąc")
101
- * - Form 2 (few): n ends in 2-4, excluding teens (22-24, 32-34...) (e.g., "tysiące")
102
- * - Form 3 (many): all other numbers (e.g., "tysięcy")
103
- *
104
- * @param {bigint} n The number to classify.
105
- * @param {Array<string>} forms Array of [singular, few, many] word forms.
106
- * @returns {string} The appropriate form for the number n.
107
- */
108
- pluralize(n: bigint, forms: Array<string>): string;
109
- }
110
- export type SlavicOptions = {
111
- /**
112
- * Use feminine forms for numbers.
113
- */
114
- feminine?: boolean;
115
- };
116
- import SlavicLanguage from '../classes/slavic-language.js';
@@ -1,39 +0,0 @@
1
- /**
2
- * Converts a number to Portuguese cardinal (written) form.
3
- *
4
- * @param {number|string|bigint} value The number to convert.
5
- * @param {Object} [options] Conversion options (see Portuguese class options).
6
- * @returns {string} The number expressed in Portuguese words.
7
- * @throws {TypeError} If value is NaN or invalid type.
8
- * @throws {Error} If value is an invalid number string.
9
- *
10
- * @example
11
- * convertToWords(42); // 'quarenta e dois'
12
- * convertToWords('100.5'); // 'cem vírgula cinco'
13
- */
14
- export default function convertToWords(value: number | string | bigint, options?: any): string;
15
- /**
16
- * (European) Portuguese language converter.
17
- *
18
- * Features:
19
- * - Gender-aware hundreds (hundredos, duzentos, etc.)
20
- * - Million/Billion pluralization
21
- * - "e" (and) conjunction for number combinations
22
- * - Post-processing to normalize word flow
23
- */
24
- export class Portuguese extends GreedyScaleLanguage {
25
- static POSTCLEAN_REGEX: RegExp;
26
- hundreds: {
27
- 1: string;
28
- 2: string;
29
- 3: string;
30
- 4: string;
31
- 5: string;
32
- 6: string;
33
- 7: string;
34
- 8: string;
35
- 9: string;
36
- };
37
- finalizeWords(words: any): any;
38
- }
39
- import GreedyScaleLanguage from '../classes/greedy-scale-language.js';