n2words 1.23.0 → 1.24.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 (317) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +182 -53
  3. package/dist/languages/ar.js +2 -0
  4. package/dist/languages/ar.js.map +1 -0
  5. package/dist/languages/az.js +2 -0
  6. package/dist/languages/az.js.map +1 -0
  7. package/dist/languages/bn.js +2 -0
  8. package/dist/languages/bn.js.map +1 -0
  9. package/dist/languages/cs.js +2 -0
  10. package/dist/languages/cs.js.map +1 -0
  11. package/dist/languages/da.js +2 -0
  12. package/dist/languages/da.js.map +1 -0
  13. package/dist/languages/de.js +2 -0
  14. package/dist/languages/de.js.map +1 -0
  15. package/dist/languages/el.js +2 -0
  16. package/dist/languages/el.js.map +1 -0
  17. package/dist/languages/en.js +2 -0
  18. package/dist/languages/en.js.map +1 -0
  19. package/dist/languages/es.js +2 -0
  20. package/dist/languages/es.js.map +1 -0
  21. package/dist/languages/fa.js +2 -0
  22. package/dist/languages/fa.js.map +1 -0
  23. package/dist/languages/fil.js +2 -0
  24. package/dist/languages/fil.js.map +1 -0
  25. package/dist/languages/fr-BE.js +2 -0
  26. package/dist/languages/fr-BE.js.map +1 -0
  27. package/dist/languages/fr.js +2 -0
  28. package/dist/languages/fr.js.map +1 -0
  29. package/dist/languages/gu.js +2 -0
  30. package/dist/languages/gu.js.map +1 -0
  31. package/dist/languages/he.js +2 -0
  32. package/dist/languages/he.js.map +1 -0
  33. package/dist/languages/hi.js +2 -0
  34. package/dist/languages/hi.js.map +1 -0
  35. package/dist/languages/hr.js +2 -0
  36. package/dist/languages/hr.js.map +1 -0
  37. package/dist/languages/hu.js +2 -0
  38. package/dist/languages/hu.js.map +1 -0
  39. package/dist/languages/id.js +2 -0
  40. package/dist/languages/id.js.map +1 -0
  41. package/dist/languages/it.js +2 -0
  42. package/dist/languages/it.js.map +1 -0
  43. package/dist/languages/ja.js +2 -0
  44. package/dist/languages/ja.js.map +1 -0
  45. package/dist/languages/kn.js +2 -0
  46. package/dist/languages/kn.js.map +1 -0
  47. package/dist/languages/ko.js +2 -0
  48. package/dist/languages/ko.js.map +1 -0
  49. package/dist/languages/lt.js +2 -0
  50. package/dist/languages/lt.js.map +1 -0
  51. package/dist/languages/lv.js +2 -0
  52. package/dist/languages/lv.js.map +1 -0
  53. package/dist/languages/mr.js +2 -0
  54. package/dist/languages/mr.js.map +1 -0
  55. package/dist/languages/ms.js +2 -0
  56. package/dist/languages/ms.js.map +1 -0
  57. package/dist/languages/nb.js +2 -0
  58. package/dist/languages/nb.js.map +1 -0
  59. package/dist/languages/nl.js +2 -0
  60. package/dist/languages/nl.js.map +1 -0
  61. package/dist/languages/pa-Guru.js +2 -0
  62. package/dist/languages/pa-Guru.js.map +1 -0
  63. package/dist/languages/pl.js +2 -0
  64. package/dist/languages/pl.js.map +1 -0
  65. package/dist/languages/pt.js +2 -0
  66. package/dist/languages/pt.js.map +1 -0
  67. package/dist/languages/ro.js +2 -0
  68. package/dist/languages/ro.js.map +1 -0
  69. package/dist/languages/ru.js +2 -0
  70. package/dist/languages/ru.js.map +1 -0
  71. package/dist/languages/sr-Latn.js +2 -0
  72. package/dist/languages/sr-Latn.js.map +1 -0
  73. package/dist/languages/sv.js +2 -0
  74. package/dist/languages/sv.js.map +1 -0
  75. package/dist/languages/sw.js +2 -0
  76. package/dist/languages/sw.js.map +1 -0
  77. package/dist/languages/ta.js +2 -0
  78. package/dist/languages/ta.js.map +1 -0
  79. package/dist/languages/te.js +2 -0
  80. package/dist/languages/te.js.map +1 -0
  81. package/dist/languages/th.js +2 -0
  82. package/dist/languages/th.js.map +1 -0
  83. package/dist/languages/tr.js +2 -0
  84. package/dist/languages/tr.js.map +1 -0
  85. package/dist/languages/uk.js +2 -0
  86. package/dist/languages/uk.js.map +1 -0
  87. package/dist/languages/ur.js +2 -0
  88. package/dist/languages/ur.js.map +1 -0
  89. package/dist/languages/vi.js +2 -0
  90. package/dist/languages/vi.js.map +1 -0
  91. package/dist/languages/zh-Hans.js +2 -0
  92. package/dist/languages/zh-Hans.js.map +1 -0
  93. package/dist/n2words.js +1 -1
  94. package/dist/n2words.js.map +1 -1
  95. package/lib/classes/abstract-language.js +211 -110
  96. package/lib/classes/greedy-scale-language.js +195 -0
  97. package/lib/classes/slavic-language.js +251 -0
  98. package/lib/classes/south-asian-language.js +161 -0
  99. package/lib/classes/turkic-language.js +63 -0
  100. package/lib/languages/ar.js +243 -0
  101. package/lib/languages/az.js +58 -0
  102. package/lib/languages/bn.js +126 -0
  103. package/lib/languages/cs.js +212 -0
  104. package/lib/languages/da.js +167 -0
  105. package/lib/languages/de.js +135 -0
  106. package/lib/languages/el.js +116 -0
  107. package/lib/languages/en.js +123 -0
  108. package/lib/languages/es.js +153 -0
  109. package/lib/languages/fa.js +127 -0
  110. package/lib/languages/fil.js +162 -0
  111. package/lib/languages/fr-BE.js +61 -0
  112. package/lib/languages/fr.js +145 -0
  113. package/lib/languages/gu.js +156 -0
  114. package/lib/languages/he.js +329 -0
  115. package/lib/languages/hi.js +126 -0
  116. package/lib/languages/hr.js +157 -0
  117. package/lib/languages/hu.js +155 -0
  118. package/lib/languages/id.js +174 -0
  119. package/lib/languages/it.js +148 -0
  120. package/lib/languages/ja.js +190 -0
  121. package/lib/languages/kn.js +71 -0
  122. package/lib/languages/ko.js +83 -0
  123. package/lib/languages/lt.js +171 -0
  124. package/lib/languages/lv.js +153 -0
  125. package/lib/languages/mr.js +156 -0
  126. package/lib/languages/ms.js +146 -0
  127. package/lib/languages/nb.js +120 -0
  128. package/lib/languages/nl.js +206 -0
  129. package/lib/languages/pa-Guru.js +126 -0
  130. package/lib/languages/pl.js +189 -0
  131. package/lib/languages/pt.js +147 -0
  132. package/lib/languages/ro.js +380 -0
  133. package/lib/languages/ru.js +116 -0
  134. package/lib/languages/sr-Latn.js +157 -0
  135. package/lib/languages/sv.js +127 -0
  136. package/lib/languages/sw.js +121 -0
  137. package/lib/languages/ta.js +226 -0
  138. package/lib/languages/te.js +229 -0
  139. package/lib/languages/th.js +123 -0
  140. package/lib/languages/tr.js +83 -0
  141. package/lib/{i18n → languages}/uk.js +50 -23
  142. package/lib/languages/ur.js +126 -0
  143. package/lib/languages/vi.js +193 -0
  144. package/lib/languages/zh-Hans.js +165 -0
  145. package/lib/n2words.js +246 -75
  146. package/package.json +80 -72
  147. package/typings/classes/abstract-language.d.ts +144 -0
  148. package/typings/classes/greedy-scale-language.d.ts +148 -0
  149. package/typings/classes/slavic-language.d.ts +145 -0
  150. package/typings/classes/south-asian-language.d.ts +101 -0
  151. package/typings/classes/turkic-language.d.ts +42 -0
  152. package/typings/languages/ar.d.ts +93 -0
  153. package/typings/languages/az.d.ts +25 -0
  154. package/typings/languages/bn.d.ts +1 -0
  155. package/typings/languages/cs.d.ts +120 -0
  156. package/typings/languages/da.d.ts +53 -0
  157. package/typings/languages/de.d.ts +26 -0
  158. package/typings/languages/el.d.ts +11 -0
  159. package/typings/languages/en.d.ts +30 -0
  160. package/typings/languages/es.d.ts +43 -0
  161. package/typings/languages/fa.d.ts +81 -0
  162. package/typings/languages/fil.d.ts +12 -0
  163. package/typings/languages/fr-BE.d.ts +41 -0
  164. package/typings/languages/fr.d.ts +43 -0
  165. package/typings/languages/gu.d.ts +12 -0
  166. package/typings/languages/he.d.ts +197 -0
  167. package/typings/languages/hi.d.ts +1 -0
  168. package/typings/languages/hr.d.ts +110 -0
  169. package/typings/languages/hu.d.ts +37 -0
  170. package/typings/languages/id.d.ts +69 -0
  171. package/typings/languages/it.d.ts +51 -0
  172. package/typings/languages/ja.d.ts +58 -0
  173. package/typings/languages/kn.d.ts +11 -0
  174. package/typings/languages/ko.d.ts +25 -0
  175. package/typings/languages/lt.d.ts +110 -0
  176. package/typings/languages/lv.d.ts +99 -0
  177. package/typings/languages/mr.d.ts +12 -0
  178. package/typings/languages/ms.d.ts +37 -0
  179. package/typings/languages/nb.d.ts +27 -0
  180. package/typings/languages/nl.d.ts +65 -0
  181. package/typings/languages/pa-Guru.d.ts +1 -0
  182. package/typings/languages/pl.d.ts +116 -0
  183. package/typings/languages/pt.d.ts +39 -0
  184. package/typings/languages/ro.d.ts +229 -0
  185. package/typings/languages/ru.d.ts +108 -0
  186. package/typings/languages/sr-Latn.d.ts +98 -0
  187. package/typings/languages/sv.d.ts +30 -0
  188. package/typings/languages/sw.d.ts +1 -0
  189. package/typings/languages/ta.d.ts +1 -0
  190. package/typings/languages/te.d.ts +1 -0
  191. package/typings/languages/th.d.ts +1 -0
  192. package/typings/languages/tr.d.ts +46 -0
  193. package/typings/languages/uk.d.ts +117 -0
  194. package/typings/languages/ur.d.ts +1 -0
  195. package/typings/languages/vi.d.ts +116 -0
  196. package/typings/languages/zh-Hans.d.ts +57 -0
  197. package/typings/n2words.d.ts +177 -0
  198. package/dist/ar.js +0 -2
  199. package/dist/ar.js.map +0 -1
  200. package/dist/az.js +0 -2
  201. package/dist/az.js.map +0 -1
  202. package/dist/cz.js +0 -2
  203. package/dist/cz.js.map +0 -1
  204. package/dist/de.js +0 -2
  205. package/dist/de.js.map +0 -1
  206. package/dist/dk.js +0 -2
  207. package/dist/dk.js.map +0 -1
  208. package/dist/en.js +0 -2
  209. package/dist/en.js.map +0 -1
  210. package/dist/es.js +0 -2
  211. package/dist/es.js.map +0 -1
  212. package/dist/fa.js +0 -2
  213. package/dist/fa.js.map +0 -1
  214. package/dist/fr-BE.js +0 -2
  215. package/dist/fr-BE.js.map +0 -1
  216. package/dist/fr.js +0 -2
  217. package/dist/fr.js.map +0 -1
  218. package/dist/he.js +0 -2
  219. package/dist/he.js.map +0 -1
  220. package/dist/hr.js +0 -2
  221. package/dist/hr.js.map +0 -1
  222. package/dist/hu.js +0 -2
  223. package/dist/hu.js.map +0 -1
  224. package/dist/id.js +0 -2
  225. package/dist/id.js.map +0 -1
  226. package/dist/it.js +0 -2
  227. package/dist/it.js.map +0 -1
  228. package/dist/ko.js +0 -2
  229. package/dist/ko.js.map +0 -1
  230. package/dist/lt.js +0 -2
  231. package/dist/lt.js.map +0 -1
  232. package/dist/lv.js +0 -2
  233. package/dist/lv.js.map +0 -1
  234. package/dist/n2words.d.ts +0 -2
  235. package/dist/nl.js +0 -2
  236. package/dist/nl.js.map +0 -1
  237. package/dist/no.js +0 -2
  238. package/dist/no.js.map +0 -1
  239. package/dist/pl.js +0 -2
  240. package/dist/pl.js.map +0 -1
  241. package/dist/pt.js +0 -2
  242. package/dist/pt.js.map +0 -1
  243. package/dist/ro.js +0 -2
  244. package/dist/ro.js.map +0 -1
  245. package/dist/ru.js +0 -2
  246. package/dist/ru.js.map +0 -1
  247. package/dist/sr.js +0 -2
  248. package/dist/sr.js.map +0 -1
  249. package/dist/tr.js +0 -2
  250. package/dist/tr.js.map +0 -1
  251. package/dist/uk.js +0 -2
  252. package/dist/uk.js.map +0 -1
  253. package/dist/vi.js +0 -2
  254. package/dist/vi.js.map +0 -1
  255. package/dist/zh.js +0 -2
  256. package/dist/zh.js.map +0 -1
  257. package/lib/classes/abstract-language.d.ts +0 -54
  258. package/lib/classes/base-language.d.ts +0 -58
  259. package/lib/classes/base-language.js +0 -172
  260. package/lib/i18n/ar.d.ts +0 -41
  261. package/lib/i18n/ar.js +0 -209
  262. package/lib/i18n/az.d.ts +0 -15
  263. package/lib/i18n/az.js +0 -66
  264. package/lib/i18n/cz.d.ts +0 -68
  265. package/lib/i18n/cz.js +0 -135
  266. package/lib/i18n/de.d.ts +0 -17
  267. package/lib/i18n/de.js +0 -103
  268. package/lib/i18n/dk.d.ts +0 -14
  269. package/lib/i18n/dk.js +0 -110
  270. package/lib/i18n/en.d.ts +0 -22
  271. package/lib/i18n/en.js +0 -86
  272. package/lib/i18n/es.d.ts +0 -16
  273. package/lib/i18n/es.js +0 -110
  274. package/lib/i18n/fa.d.ts +0 -54
  275. package/lib/i18n/fa.js +0 -106
  276. package/lib/i18n/fr-BE.d.ts +0 -11
  277. package/lib/i18n/fr-BE.js +0 -20
  278. package/lib/i18n/fr.d.ts +0 -15
  279. package/lib/i18n/fr.js +0 -99
  280. package/lib/i18n/he.d.ts +0 -61
  281. package/lib/i18n/he.js +0 -132
  282. package/lib/i18n/hr.d.ts +0 -68
  283. package/lib/i18n/hr.js +0 -129
  284. package/lib/i18n/hu.d.ts +0 -17
  285. package/lib/i18n/hu.js +0 -135
  286. package/lib/i18n/id.d.ts +0 -43
  287. package/lib/i18n/id.js +0 -156
  288. package/lib/i18n/it.d.ts +0 -29
  289. package/lib/i18n/it.js +0 -137
  290. package/lib/i18n/ko.d.ts +0 -15
  291. package/lib/i18n/ko.js +0 -56
  292. package/lib/i18n/lt.d.ts +0 -68
  293. package/lib/i18n/lt.js +0 -138
  294. package/lib/i18n/lv.d.ts +0 -57
  295. package/lib/i18n/lv.js +0 -120
  296. package/lib/i18n/nl.d.ts +0 -20
  297. package/lib/i18n/nl.js +0 -125
  298. package/lib/i18n/no.d.ts +0 -15
  299. package/lib/i18n/no.js +0 -77
  300. package/lib/i18n/pl.d.ts +0 -67
  301. package/lib/i18n/pl.js +0 -126
  302. package/lib/i18n/pt.d.ts +0 -26
  303. package/lib/i18n/pt.js +0 -118
  304. package/lib/i18n/ro.d.ts +0 -109
  305. package/lib/i18n/ro.js +0 -360
  306. package/lib/i18n/ru.d.ts +0 -30
  307. package/lib/i18n/ru.js +0 -198
  308. package/lib/i18n/sr.d.ts +0 -56
  309. package/lib/i18n/sr.js +0 -127
  310. package/lib/i18n/tr.d.ts +0 -15
  311. package/lib/i18n/tr.js +0 -64
  312. package/lib/i18n/uk.d.ts +0 -78
  313. package/lib/i18n/vi.d.ts +0 -70
  314. package/lib/i18n/vi.js +0 -151
  315. package/lib/i18n/zh.d.ts +0 -18
  316. package/lib/i18n/zh.js +0 -78
  317. package/lib/n2words.d.ts +0 -9
package/lib/i18n/lv.js DELETED
@@ -1,120 +0,0 @@
1
- import { N2WordsRU } from './ru.js';
2
-
3
- export class N2WordsLV extends N2WordsRU {
4
- ones = {
5
- 1: 'viens',
6
- 2: 'divi',
7
- 3: 'trīs',
8
- 4: 'četri',
9
- 5: 'pieci',
10
- 6: 'seši',
11
- 7: 'septiņi',
12
- 8: 'astoņi',
13
- 9: 'deviņi'
14
- };
15
-
16
- tens = {
17
- 0: 'desmit',
18
- 1: 'vienpadsmit',
19
- 2: 'divpadsmit',
20
- 3: 'trīspadsmit',
21
- 4: 'četrpadsmit',
22
- 5: 'piecpadsmit',
23
- 6: 'sešpadsmit',
24
- 7: 'septiņpadsmit',
25
- 8: 'astoņpadsmit',
26
- 9: 'deviņpadsmit'
27
- };
28
-
29
- twenties = {
30
- 2: 'divdesmit',
31
- 3: 'trīsdesmit',
32
- 4: 'četrdesmit',
33
- 5: 'piecdesmit',
34
- 6: 'sešdesmit',
35
- 7: 'septiņdesmit',
36
- 8: 'astoņdesmit',
37
- 9: 'deviņdesmit'
38
- };
39
-
40
- hundreds = ['simts', 'simti', 'simtu'];
41
-
42
- thousands = {
43
- 1: ['tūkstotis', 'tūkstoši', 'tūkstošu'],
44
- 2: ['miljons', 'miljoni', 'miljonu'],
45
- 3: ['miljards', 'miljardi', 'miljardu'],
46
- 4: ['triljons', 'triljoni', 'triljonu'],
47
- 5: ['kvadriljons', 'kvadriljoni', 'kvadriljonu'],
48
- 6: ['kvintiljons', 'kvintiljoni', 'kvintiljonu'],
49
- 7: ['sikstiljons', 'sikstiljoni', 'sikstiljonu'],
50
- 8: ['septiljons', 'septiljoni', 'septiljonu'],
51
- 9: ['oktiljons', 'oktiljoni', 'oktiljonu'],
52
- 10: ['nontiljons', 'nontiljoni', 'nontiljonu'],
53
- };
54
-
55
- constructor(options) {
56
- options = Object.assign({
57
- negativeWord: 'mīnus',
58
- separatorWord: 'komats',
59
- zero: 'nulle'
60
- }, options);
61
-
62
- super(options);
63
- }
64
-
65
- pluralize(n, forms) {
66
- let form = 2;
67
- if (n != 0n) {
68
- form = n % 10n == 1n && n % 100n != 11n ? 0 : 1;
69
- }
70
- return forms[form];
71
- }
72
-
73
- toCardinal(number) {
74
- if (number == 0) {
75
- return this.zero;
76
- }
77
- const words = [];
78
- const chunks = this.splitByX(number.toString(), 3);
79
- let index = chunks.length;
80
- for (const x of chunks) {
81
- index = index - 1;
82
- if (x == 0) {
83
- continue;
84
- }
85
- const [n1, n2, n3] = this.getDigits(x);
86
- if (n3 > 0) {
87
- if (n3 == 1 && n2 == 0 && n1 > 0) {
88
- words.push(this.hundreds[2]);
89
- } else if (n3 > 1) {
90
- words.push(this.ones[n3], this.hundreds[1]);
91
- } else {
92
- words.push(this.hundreds[0]);
93
- }
94
- }
95
- if (n2 > 1) {
96
- words.push(this.twenties[n2]);
97
- }
98
- if (n2 == 1) {
99
- words.push(this.tens[n1]);
100
- } else if (n1 > 0 && !(index > 0 && x == 1)) {
101
- words.push(this.ones[n1]);
102
- }
103
- if (index > 0) {
104
- words.push(this.pluralize(x, this.thousands[index]));
105
- }
106
- }
107
- return words.join(' ');
108
- }
109
- }
110
-
111
- /**
112
- * Converts a value to cardinal (written) form.
113
- * @param {number|string|bigint} value Number to be convert.
114
- * @param {object} [options] Options for class.
115
- * @returns {string} Value in cardinal (written) format.
116
- * @throws {Error} Value cannot be invalid.
117
- */
118
- export default function floatToCardinal (value, options = {}) {
119
- return new N2WordsLV(options).floatToCardinal(value);
120
- }
package/lib/i18n/nl.d.ts DELETED
@@ -1,20 +0,0 @@
1
- /**
2
- * Converts a value to cardinal (written) form.
3
- * @param {number|string|bigint} value Number to be convert.
4
- * @param {object} [options] Options for class.
5
- * @returns {string} Value in cardinal (written) format.
6
- * @throws {Error} Value cannot be invalid.
7
- */
8
- export default function floatToCardinal(value: number | string | bigint, options?: object): string;
9
- export class N2WordsNL extends BaseLanguage {
10
- constructor(options: any);
11
- includeOptionalAnd: any;
12
- noHundredPairs: any;
13
- merge(current: any, next: any): {
14
- [x: string]: bigint;
15
- } | {
16
- [x: string]: number;
17
- };
18
- toCardinal(value: any): string;
19
- }
20
- import BaseLanguage from '../classes/base-language.js';
package/lib/i18n/nl.js DELETED
@@ -1,125 +0,0 @@
1
- import BaseLanguage from '../classes/base-language.js';
2
-
3
- export class N2WordsNL extends BaseLanguage {
4
- includeOptionalAnd;
5
- noHundredPairs;
6
-
7
- constructor(options) {
8
- options = Object.assign({
9
- negativeWord: 'min',
10
- separatorWord: 'komma',
11
- zero: 'nul',
12
- includeOptionalAnd: false,
13
- noHundredPairs: false
14
- }, options);
15
-
16
- super(options, [
17
- [1_000_000_000_000_000_000_000_000_000n, 'quadriljard'],
18
- [1_000_000_000_000_000_000_000_000n, 'quadriljoen'],
19
- [1_000_000_000_000_000_000_000n, 'triljard'],
20
- [1_000_000_000_000_000_000n, 'triljoen'],
21
- [1_000_000_000_000_000n, 'biljard'],
22
- [1_000_000_000_000n, 'biljoen'],
23
- [1_000_000_000n, 'miljard'],
24
- [1_000_000n, 'miljoen'],
25
- [1000n, 'duizend'],
26
- [100n, 'honderd'],
27
- [90n, 'negentig'],
28
- [80n, 'tachtig'],
29
- [70n, 'zeventig'],
30
- [60n, 'zestig'],
31
- [50n, 'vijftig'],
32
- [40n, 'veertig'],
33
- [30n, 'dertig'],
34
- [20n, 'twintig'],
35
- [19n, 'negentien'],
36
- [18n, 'achttien'],
37
- [17n, 'zeventien'],
38
- [16n, 'zestien'],
39
- [15n, 'vijftien'],
40
- [14n, 'veertien'],
41
- [13n, 'dertien'],
42
- [12n, 'twaalf'],
43
- [11n, 'elf'],
44
- [10n, 'tien'],
45
- [9n, 'negen'],
46
- [8n, 'acht'],
47
- [7n, 'zeven'],
48
- [6n, 'zes'],
49
- [5n, 'vijf'],
50
- [4n, 'vier'],
51
- [3n, 'drie'],
52
- [2n, 'twee'],
53
- [1n, 'een'],
54
- [0n, 'nul'],
55
- ]);
56
-
57
- this.includeOptionalAnd = options.includeOptionalAnd;
58
- this.noHundredPairs = options.noHundredPairs;
59
- }
60
-
61
- merge(current, next) {
62
- let cText = Object.keys(current)[0];
63
- let nText = Object.keys(next)[0];
64
- const cNumber = BigInt(Object.values(current)[0]);
65
- const nNumber = BigInt(Object.values(next)[0]);
66
- if (cNumber == 1) {
67
- if (nNumber < 1_000_000) {
68
- return { [nText]: nNumber };
69
- }
70
- cText = 'een';
71
- }
72
-
73
- let value = 0;
74
- if (nNumber > cNumber) {
75
- if (nNumber >= 1_000_000) {
76
- cText += ' ';
77
- } else if (nNumber > 100) {
78
- nText += ' ';
79
- }
80
- value = cNumber * nNumber;
81
- } else {
82
- if (nNumber < 10 && cNumber > 10 && cNumber < 100) {
83
- const temporary = nText;
84
- nText = cText;
85
- const andTxt = temporary.endsWith('e') ? 'ën' : 'en';
86
- cText = `${temporary}${andTxt}`;
87
- } else if (nNumber < 13 && cNumber < 1000 && this.includeOptionalAnd) {
88
- cText = `${cText}en`;
89
- } else if (nNumber < 13 && cNumber >= 1000 && this.includeOptionalAnd) {
90
- nText = ` en ${nText}`;
91
- } else if (cNumber >= 1_000_000) {
92
- cText += ' ';
93
- } else {
94
- if (cNumber == 1000) {
95
- cText += ' ';
96
- }
97
- }
98
- value = cNumber + nNumber;
99
- }
100
- return { [`${cText}${nText}`]: value };
101
- }
102
-
103
- toCardinal(value) {
104
- if (value >= 1100n && value < 10_000n && !this.noHundredPairs) {
105
- const high = value / 100n;
106
- const low = value % 100n;
107
- if (high % 10n !== 0n) {
108
- return super.toCardinal(high) + 'honderd' +
109
- (low ? (this.includeOptionalAnd ? ' en ' : ' ') + super.toCardinal(low) : '');
110
- }
111
- }
112
- return super.toCardinal(value);
113
- }
114
- }
115
-
116
- /**
117
- * Converts a value to cardinal (written) form.
118
- * @param {number|string|bigint} value Number to be convert.
119
- * @param {object} [options] Options for class.
120
- * @returns {string} Value in cardinal (written) format.
121
- * @throws {Error} Value cannot be invalid.
122
- */
123
- export default function floatToCardinal (value, options = {}) {
124
- return new N2WordsNL(options).floatToCardinal(value);
125
- }
package/lib/i18n/no.d.ts DELETED
@@ -1,15 +0,0 @@
1
- /**
2
- * Converts a value to cardinal (written) form.
3
- * @param {number|string|bigint} value Number to be convert.
4
- * @param {object} [options] Options for class.
5
- * @returns {string} Value in cardinal (written) format.
6
- * @throws {Error} Value cannot be invalid.
7
- */
8
- export default function floatToCardinal(value: number | string | bigint, options?: object): string;
9
- export class N2WordsNO extends BaseLanguage {
10
- constructor(options: any);
11
- merge(lPair: any, rPair: any): {
12
- [x: string]: bigint;
13
- };
14
- }
15
- import BaseLanguage from '../classes/base-language.js';
package/lib/i18n/no.js DELETED
@@ -1,77 +0,0 @@
1
- import BaseLanguage from '../classes/base-language.js';
2
-
3
- export class N2WordsNO extends BaseLanguage {
4
- constructor(options) {
5
- options = Object.assign({
6
- negativeWord: 'minus',
7
- separatorWord: 'komma',
8
- zero: 'null'
9
- }, options);
10
-
11
- super(options, [
12
- [1_000_000_000_000_000_000_000_000_000_000_000n, 'quintillard'],
13
- [1_000_000_000_000_000_000_000_000_000_000n, 'quintillion'],
14
- [1_000_000_000_000_000_000_000_000_000n, 'quadrillard'],
15
- [1_000_000_000_000_000_000_000_000n, 'quadrillion'],
16
- [1_000_000_000_000_000_000_000n, 'trillard'],
17
- [1_000_000_000_000_000_000n, 'trillion'],
18
- [1_000_000_000_000_000n, 'billard'],
19
- [1_000_000_000_000n, 'billion'],
20
- [1_000_000_000n, 'millard'],
21
- [1_000_000n, 'million'],
22
- [1000n, 'tusen'],
23
- [100n, 'hundre'],
24
- [90n, 'nitti'],
25
- [80n, 'åtti'],
26
- [70n, 'sytti'],
27
- [60n, 'seksti'],
28
- [50n, 'femti'],
29
- [40n, 'førti'],
30
- [30n, 'tretti'],
31
- [20n, 'tjue'],
32
- [19n, 'nitten'],
33
- [18n, 'atten'],
34
- [17n, 'sytten'],
35
- [16n, 'seksten'],
36
- [15n, 'femten'],
37
- [14n, 'fjorten'],
38
- [13n, 'tretten'],
39
- [12n, 'tolv'],
40
- [11n, 'elleve'],
41
- [10n, 'ti'],
42
- [9n, 'ni'],
43
- [8n, 'åtte'],
44
- [7n, 'syv'],
45
- [6n, 'seks'],
46
- [5n, 'fem'],
47
- [4n, 'fire'],
48
- [3n, 'tre'],
49
- [2n, 'to'],
50
- [1n, 'en'],
51
- [0n, 'null']
52
- ]);
53
- }
54
-
55
- merge(lPair, rPair) { // {'one':1}, {'hundred':100}
56
- const lText = Object.keys(lPair)[0];
57
- const rText = Object.keys(rPair)[0];
58
- const lNumber = BigInt(Object.values(lPair)[0]);
59
- const rNumber = BigInt(Object.values(rPair)[0]);
60
- if (lNumber == 1 && rNumber < 100) return { [rText]: rNumber };
61
- else if (lNumber < 100 && lNumber > rNumber) return { [`${lText}-${rText}`]: lNumber + rNumber };
62
- else if (lNumber >= 100 && rNumber < 100) return { [`${lText} og ${rText}`]: lNumber + rNumber };
63
- else if (rNumber > lNumber) return { [`${lText} ${rText}`]: lNumber * rNumber };
64
- return { [`${lText}, ${rText}`]: lNumber + rNumber };
65
- }
66
- }
67
-
68
- /**
69
- * Converts a value to cardinal (written) form.
70
- * @param {number|string|bigint} value Number to be convert.
71
- * @param {object} [options] Options for class.
72
- * @returns {string} Value in cardinal (written) format.
73
- * @throws {Error} Value cannot be invalid.
74
- */
75
- export default function floatToCardinal (value, options = {}) {
76
- return new N2WordsNO(options).floatToCardinal(value);
77
- }
package/lib/i18n/pl.d.ts DELETED
@@ -1,67 +0,0 @@
1
- /**
2
- * Converts a value to cardinal (written) form.
3
- * @param {number|string|bigint} value Number to be convert.
4
- * @param {object} [options] Options for class.
5
- * @returns {string} Value in cardinal (written) format.
6
- * @throws {Error} Value cannot be invalid.
7
- */
8
- export default function floatToCardinal(value: number | string | bigint, options?: object): string;
9
- export class N2WordsPL extends N2WordsRU {
10
- ones: {
11
- 1: string;
12
- 2: string;
13
- 3: string;
14
- 4: string;
15
- 5: string;
16
- 6: string;
17
- 7: string;
18
- 8: string;
19
- 9: string;
20
- };
21
- tens: {
22
- 0: string;
23
- 1: string;
24
- 2: string;
25
- 3: string;
26
- 4: string;
27
- 5: string;
28
- 6: string;
29
- 7: string;
30
- 8: string;
31
- 9: string;
32
- };
33
- twenties: {
34
- 2: string;
35
- 3: string;
36
- 4: string;
37
- 5: string;
38
- 6: string;
39
- 7: string;
40
- 8: string;
41
- 9: string;
42
- };
43
- hundreds: {
44
- 1: string;
45
- 2: string;
46
- 3: string;
47
- 4: string;
48
- 5: string;
49
- 6: string;
50
- 7: string;
51
- 8: string;
52
- 9: string;
53
- };
54
- thousands: {
55
- 1: string[];
56
- 2: string[];
57
- 3: string[];
58
- 4: string[];
59
- 5: string[];
60
- 6: string[];
61
- 7: string[];
62
- 8: string[];
63
- 9: string[];
64
- 10: string[];
65
- };
66
- }
67
- import { N2WordsRU } from './ru.js';
package/lib/i18n/pl.js DELETED
@@ -1,126 +0,0 @@
1
- import { N2WordsRU } from './ru.js';
2
-
3
- export class N2WordsPL extends N2WordsRU {
4
- ones = {
5
- 1: 'jeden',
6
- 2: 'dwa',
7
- 3: 'trzy',
8
- 4: 'cztery',
9
- 5: 'pięć',
10
- 6: 'sześć',
11
- 7: 'siedem',
12
- 8: 'osiem',
13
- 9: 'dziewięć'
14
- };
15
-
16
- tens = {
17
- 0: 'dziesięć',
18
- 1: 'jedenaście',
19
- 2: 'dwanaście',
20
- 3: 'trzynaście',
21
- 4: 'czternaście',
22
- 5: 'piętnaście',
23
- 6: 'szesnaście',
24
- 7: 'siedemnaście',
25
- 8: 'osiemnaście',
26
- 9: 'dziewiętnaście'
27
- };
28
-
29
- twenties = {
30
- 2: 'dwadzieścia',
31
- 3: 'trzydzieści',
32
- 4: 'czterdzieści',
33
- 5: 'pięćdziesiąt',
34
- 6: 'sześćdziesiąt',
35
- 7: 'siedemdziesiąt',
36
- 8: 'osiemdziesiąt',
37
- 9: 'dziewięćdzisiąt'
38
- };
39
-
40
- hundreds = {
41
- 1: 'sto',
42
- 2: 'dwieście',
43
- 3: 'trzysta',
44
- 4: 'czterysta',
45
- 5: 'pięćset',
46
- 6: 'sześćset',
47
- 7: 'siedemset',
48
- 8: 'osiemset',
49
- 9: 'dziewięćset'
50
- };
51
-
52
- thousands = {
53
- 1: ['tysiąc', 'tysiące', 'tysięcy'], // 10^ 3
54
- 2: ['milion', 'miliony', 'milionów'], // 10^ 6
55
- 3: ['miliard', 'miliardy', 'miliardów'], // 10^ 9
56
- 4: ['bilion', 'biliony', 'bilionów'], // 10^ 12
57
- 5: ['biliard', 'biliardy', 'biliardów'], // 10^ 15
58
- 6: ['trylion', 'tryliony', 'trylionów'], // 10^ 18
59
- 7: ['tryliard', 'tryliardy', 'tryliardów'], // 10^ 21
60
- 8: ['kwadrylion', 'kwadryliony', 'kwadrylionów'], // 10^ 24
61
- 9: ['kwaryliard', 'kwadryliardy', 'kwadryliardów'], // 10^ 27
62
- 10: ['kwintylion', 'kwintyliony', 'kwintylionów'], // 10^ 30
63
- };
64
-
65
- constructor(options) {
66
- options = Object.assign({
67
- negativeWord: 'minus',
68
- separatorWord: 'przecinek',
69
- zero: 'zero'
70
- }, options);
71
-
72
- super(options);
73
- }
74
-
75
- pluralize(n, forms) {
76
- let form = 2;
77
- if (n == 1) {
78
- form = 0;
79
- } else if ((n % 10n < 5n) && (n % 10n > 1n) && ((n % 100n < 10n) || (n % 100n > 20n))) {
80
- form = 1;
81
- }
82
- return forms[form];
83
- }
84
-
85
- toCardinal(number) {
86
- if (number == 0) {
87
- return this.zero;
88
- }
89
- const words = [];
90
- const chunks = this.splitByX(number.toString(), 3);
91
- let index = chunks.length;
92
- for (const x of chunks) {
93
- index = index - 1;
94
- if (x == 0) {
95
- continue;
96
- }
97
- const [n1, n2, n3] = this.getDigits(x);
98
- if (n3 > 0) {
99
- words.push(this.hundreds[n3]);
100
- }
101
- if (n2 > 1) {
102
- words.push(this.twenties[n2]);
103
- }
104
- if (n2 == 1) {
105
- words.push(this.tens[n1]);
106
- } else if (n1 > 0 && !(index > 0 && x == 1)) {
107
- words.push(this.ones[n1]);
108
- }
109
- if (index > 0) {
110
- words.push(this.pluralize(x, this.thousands[index]));
111
- }
112
- }
113
- return words.join(' ');
114
- }
115
- }
116
-
117
- /**
118
- * Converts a value to cardinal (written) form.
119
- * @param {number|string|bigint} value Number to be convert.
120
- * @param {object} [options] Options for class.
121
- * @returns {string} Value in cardinal (written) format.
122
- * @throws {Error} Value cannot be invalid.
123
- */
124
- export default function floatToCardinal (value, options = {}) {
125
- return new N2WordsPL(options).floatToCardinal(value);
126
- }
package/lib/i18n/pt.d.ts DELETED
@@ -1,26 +0,0 @@
1
- /**
2
- * Converts a value to cardinal (written) form.
3
- * @param {number|string|bigint} value Number to be convert.
4
- * @param {object} [options] Options for class.
5
- * @returns {string} Value in cardinal (written) format.
6
- * @throws {Error} Value cannot be invalid.
7
- */
8
- export default function floatToCardinal(value: number | string | bigint, options?: object): string;
9
- export class N2WordsPT extends BaseLanguage {
10
- constructor(options: any);
11
- hundreds: {
12
- 1: string;
13
- 2: string;
14
- 3: string;
15
- 4: string;
16
- 5: string;
17
- 6: string;
18
- 7: string;
19
- 8: string;
20
- 9: string;
21
- };
22
- merge(current: any, next: any): {
23
- [x: string]: bigint;
24
- };
25
- }
26
- import BaseLanguage from '../classes/base-language.js';
package/lib/i18n/pt.js DELETED
@@ -1,118 +0,0 @@
1
- import BaseLanguage from '../classes/base-language.js';
2
-
3
- export class N2WordsPT extends BaseLanguage {
4
- hundreds = {
5
- 1: 'cento',
6
- 2: 'duzentos',
7
- 3: 'trezentos',
8
- 4: 'quatrocentos',
9
- 5: 'quinhentos',
10
- 6: 'seiscentos',
11
- 7: 'setecentos',
12
- 8: 'oitocentos',
13
- 9: 'novecentos'
14
- };
15
-
16
- constructor(options) {
17
- options = Object.assign({
18
- negativeWord: 'menos',
19
- separatorWord: 'vírgula',
20
- zero: 'zero'
21
- }, options);
22
-
23
- super(options, [
24
- [1_000_000_000_000_000_000_000_000n, 'quatrilião'],
25
- [1_000_000_000_000_000_000n, 'trilião'],
26
- [1_000_000_000_000n, 'bilião'],
27
- [1_000_000n, 'milião'],
28
- [1000n, 'mil'],
29
- [100n, 'cem'],
30
- [90n, 'noventa'],
31
- [80n, 'oitenta'],
32
- [70n, 'setenta'],
33
- [60n, 'sessenta'],
34
- [50n, 'cinquenta'],
35
- [40n, 'quarenta'],
36
- [30n, 'trinta'],
37
- [20n, 'vinte'],
38
- [19n, 'dezanove'],
39
- [18n, 'dezoito'],
40
- [17n, 'dezassete'],
41
- [16n, 'dezasseis'],
42
- [15n, 'quinze'],
43
- [14n, 'catorze'],
44
- [13n, 'treze'],
45
- [12n, 'doze'],
46
- [11n, 'onze'],
47
- [10n, 'dez'],
48
- [9n, 'nove'],
49
- [8n, 'oito'],
50
- [7n, 'sete'],
51
- [6n, 'seis'],
52
- [5n, 'cinco'],
53
- [4n, 'quatro'],
54
- [3n, 'três'],
55
- [2n, 'dois'],
56
- [1n, 'um'],
57
- [0n, 'zero']
58
- ]);
59
- }
60
-
61
- postClean(words) {
62
- const transforms = ['mil', 'milhão', 'milhões', 'mil milhões', 'bilião', 'biliões', 'mil biliões'];
63
-
64
- for (const transform of transforms) {
65
- if (new RegExp(`.*${transform} e \\w*entos? (?=.*e)`).test(words)) {
66
- words = words.replaceAll(new RegExp(`${transform} e`, 'g'), `${transform}`);
67
- }
68
- }
69
-
70
- return words;
71
- }
72
-
73
- merge(current, next) {
74
- let cText = Object.keys(current)[0];
75
- let nText = Object.keys(next)[0];
76
- const cNumber = BigInt(Object.values(current)[0]);
77
- const nNumber = BigInt(Object.values(next)[0]);
78
-
79
- if (cNumber == 1) {
80
- if (nNumber < 1_000_000) return { [nText]: nNumber };
81
- cText = 'um';
82
- } else if (cNumber == 100 && nNumber % 1000n != 0) {
83
- cText = 'cento';
84
- }
85
-
86
- if (nNumber < cNumber) {
87
- // if (cNum < 100) {
88
- // return { [`${cText} e ${nText}`]: cNum + nNum }
89
- // }
90
- return { [`${cText} e ${nText}`]: cNumber + nNumber };
91
- } else if (nNumber % 1_000_000_000n == 0 && cNumber > 1) {
92
- nText = nText.slice(0, -4) + 'liões';
93
- } else if (nNumber % 1_000_000n == 0 && cNumber > 1) {
94
- nText = nText.slice(0, -4) + 'lhões';
95
- }
96
-
97
- if (nText == 'milião') nText = 'milhão';
98
-
99
- if (nNumber == 100) {
100
- cText = this.hundreds[cNumber];
101
- nText = '';
102
- } else {
103
- nText = ' ' + nText;
104
- }
105
- return { [`${cText}${nText}`]: cNumber * nNumber };
106
- }
107
- }
108
-
109
- /**
110
- * Converts a value to cardinal (written) form.
111
- * @param {number|string|bigint} value Number to be convert.
112
- * @param {object} [options] Options for class.
113
- * @returns {string} Value in cardinal (written) format.
114
- * @throws {Error} Value cannot be invalid.
115
- */
116
- export default function floatToCardinal (value, options = {}) {
117
- return new N2WordsPT(options).floatToCardinal(value);
118
- }