n2words 1.23.1 → 2.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 (322) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +317 -59
  3. package/dist/ArabicConverter.js +3 -0
  4. package/dist/ArabicConverter.js.map +1 -0
  5. package/dist/AzerbaijaniConverter.js +3 -0
  6. package/dist/AzerbaijaniConverter.js.map +1 -0
  7. package/dist/BanglaConverter.js +3 -0
  8. package/dist/BanglaConverter.js.map +1 -0
  9. package/dist/BiblicalHebrewConverter.js +3 -0
  10. package/dist/BiblicalHebrewConverter.js.map +1 -0
  11. package/dist/CroatianConverter.js +3 -0
  12. package/dist/CroatianConverter.js.map +1 -0
  13. package/dist/CzechConverter.js +3 -0
  14. package/dist/CzechConverter.js.map +1 -0
  15. package/dist/DanishConverter.js +3 -0
  16. package/dist/DanishConverter.js.map +1 -0
  17. package/dist/DutchConverter.js +3 -0
  18. package/dist/DutchConverter.js.map +1 -0
  19. package/dist/EnglishConverter.js +3 -0
  20. package/dist/EnglishConverter.js.map +1 -0
  21. package/dist/FilipinoConverter.js +3 -0
  22. package/dist/FilipinoConverter.js.map +1 -0
  23. package/dist/FrenchBelgiumConverter.js +3 -0
  24. package/dist/FrenchBelgiumConverter.js.map +1 -0
  25. package/dist/FrenchConverter.js +3 -0
  26. package/dist/FrenchConverter.js.map +1 -0
  27. package/dist/GermanConverter.js +3 -0
  28. package/dist/GermanConverter.js.map +1 -0
  29. package/dist/GreekConverter.js +3 -0
  30. package/dist/GreekConverter.js.map +1 -0
  31. package/dist/GujaratiConverter.js +3 -0
  32. package/dist/GujaratiConverter.js.map +1 -0
  33. package/dist/HebrewConverter.js +3 -0
  34. package/dist/HebrewConverter.js.map +1 -0
  35. package/dist/HindiConverter.js +3 -0
  36. package/dist/HindiConverter.js.map +1 -0
  37. package/dist/HungarianConverter.js +3 -0
  38. package/dist/HungarianConverter.js.map +1 -0
  39. package/dist/IndonesianConverter.js +3 -0
  40. package/dist/IndonesianConverter.js.map +1 -0
  41. package/dist/ItalianConverter.js +3 -0
  42. package/dist/ItalianConverter.js.map +1 -0
  43. package/dist/JapaneseConverter.js +3 -0
  44. package/dist/JapaneseConverter.js.map +1 -0
  45. package/dist/KannadaConverter.js +3 -0
  46. package/dist/KannadaConverter.js.map +1 -0
  47. package/dist/KoreanConverter.js +3 -0
  48. package/dist/KoreanConverter.js.map +1 -0
  49. package/dist/LatvianConverter.js +3 -0
  50. package/dist/LatvianConverter.js.map +1 -0
  51. package/dist/LithuanianConverter.js +3 -0
  52. package/dist/LithuanianConverter.js.map +1 -0
  53. package/dist/MalayConverter.js +3 -0
  54. package/dist/MalayConverter.js.map +1 -0
  55. package/dist/MarathiConverter.js +3 -0
  56. package/dist/MarathiConverter.js.map +1 -0
  57. package/dist/NorwegianBokmalConverter.js +3 -0
  58. package/dist/NorwegianBokmalConverter.js.map +1 -0
  59. package/dist/PersianConverter.js +3 -0
  60. package/dist/PersianConverter.js.map +1 -0
  61. package/dist/PolishConverter.js +3 -0
  62. package/dist/PolishConverter.js.map +1 -0
  63. package/dist/PortugueseConverter.js +3 -0
  64. package/dist/PortugueseConverter.js.map +1 -0
  65. package/dist/PunjabiConverter.js +3 -0
  66. package/dist/PunjabiConverter.js.map +1 -0
  67. package/dist/RomanianConverter.js +3 -0
  68. package/dist/RomanianConverter.js.map +1 -0
  69. package/dist/RussianConverter.js +3 -0
  70. package/dist/RussianConverter.js.map +1 -0
  71. package/dist/SerbianCyrillicConverter.js +3 -0
  72. package/dist/SerbianCyrillicConverter.js.map +1 -0
  73. package/dist/SerbianLatinConverter.js +3 -0
  74. package/dist/SerbianLatinConverter.js.map +1 -0
  75. package/dist/SimplifiedChineseConverter.js +3 -0
  76. package/dist/SimplifiedChineseConverter.js.map +1 -0
  77. package/dist/SpanishConverter.js +3 -0
  78. package/dist/SpanishConverter.js.map +1 -0
  79. package/dist/SwahiliConverter.js +3 -0
  80. package/dist/SwahiliConverter.js.map +1 -0
  81. package/dist/SwedishConverter.js +3 -0
  82. package/dist/SwedishConverter.js.map +1 -0
  83. package/dist/TamilConverter.js +3 -0
  84. package/dist/TamilConverter.js.map +1 -0
  85. package/dist/TeluguConverter.js +3 -0
  86. package/dist/TeluguConverter.js.map +1 -0
  87. package/dist/ThaiConverter.js +3 -0
  88. package/dist/ThaiConverter.js.map +1 -0
  89. package/dist/TraditionalChineseConverter.js +3 -0
  90. package/dist/TraditionalChineseConverter.js.map +1 -0
  91. package/dist/TurkishConverter.js +3 -0
  92. package/dist/TurkishConverter.js.map +1 -0
  93. package/dist/UkrainianConverter.js +3 -0
  94. package/dist/UkrainianConverter.js.map +1 -0
  95. package/dist/UrduConverter.js +3 -0
  96. package/dist/UrduConverter.js.map +1 -0
  97. package/dist/VietnameseConverter.js +3 -0
  98. package/dist/VietnameseConverter.js.map +1 -0
  99. package/dist/n2words.js +3 -2
  100. package/dist/n2words.js.map +1 -1
  101. package/lib/classes/abstract-language.d.ts +158 -34
  102. package/lib/classes/abstract-language.js +223 -115
  103. package/lib/classes/greedy-scale-language.d.ts +109 -0
  104. package/lib/classes/greedy-scale-language.js +201 -0
  105. package/lib/classes/slavic-language.d.ts +148 -0
  106. package/lib/classes/slavic-language.js +281 -0
  107. package/lib/classes/south-asian-language.d.ts +70 -0
  108. package/lib/classes/south-asian-language.js +154 -0
  109. package/lib/classes/turkic-language.d.ts +26 -0
  110. package/lib/classes/turkic-language.js +59 -0
  111. package/lib/languages/ar.d.ts +30 -0
  112. package/lib/languages/ar.js +159 -0
  113. package/lib/languages/az.d.ts +12 -0
  114. package/lib/languages/az.js +42 -0
  115. package/lib/languages/bn.d.ts +11 -0
  116. package/lib/languages/bn.js +131 -0
  117. package/lib/languages/cs.d.ts +88 -0
  118. package/lib/languages/cs.js +143 -0
  119. package/lib/languages/da.d.ts +15 -0
  120. package/lib/languages/da.js +120 -0
  121. package/lib/languages/de.d.ts +14 -0
  122. package/lib/languages/de.js +101 -0
  123. package/lib/languages/el.d.ts +14 -0
  124. package/lib/languages/el.js +90 -0
  125. package/lib/languages/en.d.ts +16 -0
  126. package/lib/languages/en.js +86 -0
  127. package/lib/languages/es.d.ts +15 -0
  128. package/lib/languages/es.js +121 -0
  129. package/lib/languages/fa.d.ts +47 -0
  130. package/lib/languages/fa.js +144 -0
  131. package/lib/languages/fil.d.ts +16 -0
  132. package/lib/languages/fil.js +121 -0
  133. package/lib/languages/fr-BE.d.ts +11 -0
  134. package/lib/languages/fr-BE.js +25 -0
  135. package/lib/languages/fr.d.ts +15 -0
  136. package/lib/languages/fr.js +106 -0
  137. package/lib/languages/gu.d.ts +11 -0
  138. package/lib/languages/gu.js +132 -0
  139. package/lib/languages/hbo.d.ts +113 -0
  140. package/lib/languages/hbo.js +251 -0
  141. package/lib/languages/he.d.ts +80 -0
  142. package/lib/languages/he.js +206 -0
  143. package/lib/languages/hi.d.ts +11 -0
  144. package/lib/languages/hi.js +131 -0
  145. package/lib/languages/hr.d.ts +80 -0
  146. package/lib/languages/hr.js +113 -0
  147. package/lib/languages/hu.d.ts +22 -0
  148. package/lib/languages/hu.js +137 -0
  149. package/lib/languages/id.d.ts +37 -0
  150. package/lib/languages/id.js +159 -0
  151. package/lib/languages/it.d.ts +37 -0
  152. package/lib/languages/it.js +132 -0
  153. package/lib/languages/ja.d.ts +17 -0
  154. package/lib/languages/ja.js +137 -0
  155. package/lib/languages/kn.d.ts +11 -0
  156. package/lib/languages/kn.js +42 -0
  157. package/lib/languages/ko.d.ts +14 -0
  158. package/lib/languages/ko.js +55 -0
  159. package/lib/{i18n/pl.d.ts → languages/lt.d.ts} +18 -15
  160. package/lib/languages/lt.js +136 -0
  161. package/lib/{i18n/lt.d.ts → languages/lv.d.ts} +16 -14
  162. package/lib/languages/lv.js +130 -0
  163. package/lib/languages/mr.d.ts +11 -0
  164. package/lib/languages/mr.js +132 -0
  165. package/lib/languages/ms.d.ts +31 -0
  166. package/lib/languages/ms.js +150 -0
  167. package/lib/languages/nb.d.ts +12 -0
  168. package/lib/languages/nb.js +100 -0
  169. package/lib/languages/nl.d.ts +16 -0
  170. package/lib/languages/nl.js +155 -0
  171. package/lib/languages/pa.d.ts +11 -0
  172. package/lib/languages/pa.js +131 -0
  173. package/lib/{i18n/uk.d.ts → languages/pl.d.ts} +16 -14
  174. package/lib/languages/pl.js +110 -0
  175. package/lib/languages/pt.d.ts +29 -0
  176. package/lib/languages/pt.js +112 -0
  177. package/lib/languages/ro.d.ts +158 -0
  178. package/lib/languages/ro.js +273 -0
  179. package/lib/languages/ru.d.ts +85 -0
  180. package/lib/languages/ru.js +96 -0
  181. package/lib/languages/sr-Cyrl.d.ts +80 -0
  182. package/lib/languages/sr-Cyrl.js +113 -0
  183. package/lib/{i18n/cz.d.ts → languages/sr-Latn.d.ts} +26 -14
  184. package/lib/languages/sr-Latn.js +113 -0
  185. package/lib/languages/sv.d.ts +14 -0
  186. package/lib/languages/sv.js +90 -0
  187. package/lib/languages/sw.d.ts +39 -0
  188. package/lib/languages/sw.js +126 -0
  189. package/lib/languages/ta.d.ts +20 -0
  190. package/lib/languages/ta.js +226 -0
  191. package/lib/languages/te.d.ts +22 -0
  192. package/lib/languages/te.js +219 -0
  193. package/lib/languages/th.d.ts +17 -0
  194. package/lib/languages/th.js +117 -0
  195. package/lib/languages/tr.d.ts +12 -0
  196. package/lib/languages/tr.js +56 -0
  197. package/lib/languages/uk.d.ts +85 -0
  198. package/lib/{i18n → languages}/uk.js +33 -32
  199. package/lib/languages/ur.d.ts +11 -0
  200. package/lib/languages/ur.js +131 -0
  201. package/lib/{i18n → languages}/vi.d.ts +15 -13
  202. package/lib/languages/vi.js +147 -0
  203. package/lib/languages/zh-Hans.d.ts +21 -0
  204. package/lib/languages/zh-Hans.js +111 -0
  205. package/lib/languages/zh-Hant.d.ts +21 -0
  206. package/lib/languages/zh-Hant.js +111 -0
  207. package/lib/n2words.d.ts +207 -7
  208. package/lib/n2words.js +535 -81
  209. package/package.json +126 -79
  210. package/dist/ar.js +0 -2
  211. package/dist/ar.js.map +0 -1
  212. package/dist/az.js +0 -2
  213. package/dist/az.js.map +0 -1
  214. package/dist/cz.js +0 -2
  215. package/dist/cz.js.map +0 -1
  216. package/dist/de.js +0 -2
  217. package/dist/de.js.map +0 -1
  218. package/dist/dk.js +0 -2
  219. package/dist/dk.js.map +0 -1
  220. package/dist/en.js +0 -2
  221. package/dist/en.js.map +0 -1
  222. package/dist/es.js +0 -2
  223. package/dist/es.js.map +0 -1
  224. package/dist/fa.js +0 -2
  225. package/dist/fa.js.map +0 -1
  226. package/dist/fr-BE.js +0 -2
  227. package/dist/fr-BE.js.map +0 -1
  228. package/dist/fr.js +0 -2
  229. package/dist/fr.js.map +0 -1
  230. package/dist/he.js +0 -2
  231. package/dist/he.js.map +0 -1
  232. package/dist/hr.js +0 -2
  233. package/dist/hr.js.map +0 -1
  234. package/dist/hu.js +0 -2
  235. package/dist/hu.js.map +0 -1
  236. package/dist/id.js +0 -2
  237. package/dist/id.js.map +0 -1
  238. package/dist/it.js +0 -2
  239. package/dist/it.js.map +0 -1
  240. package/dist/ko.js +0 -2
  241. package/dist/ko.js.map +0 -1
  242. package/dist/lt.js +0 -2
  243. package/dist/lt.js.map +0 -1
  244. package/dist/lv.js +0 -2
  245. package/dist/lv.js.map +0 -1
  246. package/dist/n2words.d.ts +0 -2
  247. package/dist/nl.js +0 -2
  248. package/dist/nl.js.map +0 -1
  249. package/dist/no.js +0 -2
  250. package/dist/no.js.map +0 -1
  251. package/dist/pl.js +0 -2
  252. package/dist/pl.js.map +0 -1
  253. package/dist/pt.js +0 -2
  254. package/dist/pt.js.map +0 -1
  255. package/dist/ro.js +0 -2
  256. package/dist/ro.js.map +0 -1
  257. package/dist/ru.js +0 -2
  258. package/dist/ru.js.map +0 -1
  259. package/dist/sr.js +0 -2
  260. package/dist/sr.js.map +0 -1
  261. package/dist/tr.js +0 -2
  262. package/dist/tr.js.map +0 -1
  263. package/dist/uk.js +0 -2
  264. package/dist/uk.js.map +0 -1
  265. package/dist/vi.js +0 -2
  266. package/dist/vi.js.map +0 -1
  267. package/dist/zh.js +0 -2
  268. package/dist/zh.js.map +0 -1
  269. package/lib/classes/base-language.d.ts +0 -58
  270. package/lib/classes/base-language.js +0 -172
  271. package/lib/i18n/ar.d.ts +0 -41
  272. package/lib/i18n/ar.js +0 -209
  273. package/lib/i18n/az.d.ts +0 -15
  274. package/lib/i18n/az.js +0 -66
  275. package/lib/i18n/cz.js +0 -135
  276. package/lib/i18n/de.d.ts +0 -17
  277. package/lib/i18n/de.js +0 -103
  278. package/lib/i18n/dk.d.ts +0 -14
  279. package/lib/i18n/dk.js +0 -110
  280. package/lib/i18n/en.d.ts +0 -22
  281. package/lib/i18n/en.js +0 -86
  282. package/lib/i18n/es.d.ts +0 -16
  283. package/lib/i18n/es.js +0 -110
  284. package/lib/i18n/fa.d.ts +0 -54
  285. package/lib/i18n/fa.js +0 -106
  286. package/lib/i18n/fr-BE.d.ts +0 -11
  287. package/lib/i18n/fr-BE.js +0 -20
  288. package/lib/i18n/fr.d.ts +0 -15
  289. package/lib/i18n/fr.js +0 -99
  290. package/lib/i18n/he.d.ts +0 -61
  291. package/lib/i18n/he.js +0 -132
  292. package/lib/i18n/hr.d.ts +0 -68
  293. package/lib/i18n/hr.js +0 -129
  294. package/lib/i18n/hu.d.ts +0 -17
  295. package/lib/i18n/hu.js +0 -135
  296. package/lib/i18n/id.d.ts +0 -43
  297. package/lib/i18n/id.js +0 -156
  298. package/lib/i18n/it.d.ts +0 -29
  299. package/lib/i18n/it.js +0 -137
  300. package/lib/i18n/ko.d.ts +0 -15
  301. package/lib/i18n/ko.js +0 -56
  302. package/lib/i18n/lt.js +0 -138
  303. package/lib/i18n/lv.d.ts +0 -57
  304. package/lib/i18n/lv.js +0 -120
  305. package/lib/i18n/nl.d.ts +0 -20
  306. package/lib/i18n/nl.js +0 -125
  307. package/lib/i18n/no.d.ts +0 -15
  308. package/lib/i18n/no.js +0 -77
  309. package/lib/i18n/pl.js +0 -126
  310. package/lib/i18n/pt.d.ts +0 -26
  311. package/lib/i18n/pt.js +0 -118
  312. package/lib/i18n/ro.d.ts +0 -109
  313. package/lib/i18n/ro.js +0 -360
  314. package/lib/i18n/ru.d.ts +0 -30
  315. package/lib/i18n/ru.js +0 -198
  316. package/lib/i18n/sr.d.ts +0 -56
  317. package/lib/i18n/sr.js +0 -127
  318. package/lib/i18n/tr.d.ts +0 -15
  319. package/lib/i18n/tr.js +0 -64
  320. package/lib/i18n/vi.js +0 -151
  321. package/lib/i18n/zh.d.ts +0 -18
  322. package/lib/i18n/zh.js +0 -78
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.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
- }
package/lib/i18n/ro.d.ts DELETED
@@ -1,109 +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
- */
7
- export default function floatToCardinal(value: number | string | bigint, options?: object): string;
8
- export class N2WordsRO extends AbstractLanguage {
9
- constructor(options: any);
10
- /** @type {boolean} */
11
- feminine: boolean;
12
- /** @type {object} */
13
- ones: object;
14
- /** @type {object} */
15
- onesFeminine: object;
16
- /** @type {object} */
17
- tens: object;
18
- /** @type {object} */
19
- tensMasculine: object;
20
- /** @type {object} */
21
- twenties: object;
22
- /** @type {object} */
23
- hundreds: object;
24
- /**
25
- * Romanian big units.
26
- * For each power group we keep: singular, plural, feminineUnits?, needsDe?
27
- * - 10^3: mie/mii (feminine units in chunk; "de" for chunk >= 20)
28
- * - 10^6: milion/milioane ("de" for chunk >= 20)
29
- * - 10^9: miliard/miliarde ("de" for chunk >= 20)
30
- */
31
- thousands: {
32
- 1: {
33
- singular: string;
34
- plural: string;
35
- feminine: boolean;
36
- needsDe: boolean;
37
- };
38
- 2: {
39
- singular: string;
40
- plural: string;
41
- feminine: boolean;
42
- needsDe: boolean;
43
- };
44
- 3: {
45
- singular: string;
46
- plural: string;
47
- feminine: boolean;
48
- needsDe: boolean;
49
- };
50
- 4: {
51
- singular: string;
52
- plural: string;
53
- feminine: boolean;
54
- needsDe: boolean;
55
- };
56
- 5: {
57
- singular: string;
58
- plural: string;
59
- feminine: boolean;
60
- needsDe: boolean;
61
- };
62
- 6: {
63
- singular: string;
64
- plural: string;
65
- feminine: boolean;
66
- needsDe: boolean;
67
- };
68
- 7: {
69
- singular: string;
70
- plural: string;
71
- feminine: boolean;
72
- needsDe: boolean;
73
- };
74
- 8: {
75
- singular: string;
76
- plural: string;
77
- feminine: boolean;
78
- needsDe: boolean;
79
- };
80
- };
81
- toCardinal(number: any): any;
82
- /**
83
- * Split numeric string into BigInt groups of size x from left to right.
84
- * @param {string} n - The numeric string to split
85
- * @param {number} x - The size of each group
86
- * @returns {bigint[]} Array of BigInt groups
87
- */
88
- splitByX(n: string, x: number): bigint[];
89
- getDigits(value: any): any;
90
- /**
91
- * Romanian pluralization & "de" rule for big units.
92
- * - 1 → singular with article ("o mie", "un milion", "un miliard", …)
93
- * - otherwise → spell chunk + (optional "de") + plural
94
- * "de" is inserted when chunk >= 20 (e.g., "douăzeci de mii/milioane/miliarde").
95
- * @param {bigint} chunk - The chunk value
96
- * @param {object} form - The form object with singular, plural, feminine, needsDe properties
97
- * @returns {string} The pluralized form
98
- */
99
- romanianPluralize(chunk: bigint, form: object): string;
100
- spellUnder100(n: any, feminineUnits?: boolean): any;
101
- spellUnder1000(n: any, feminineUnits?: boolean): any;
102
- /**
103
- * Convert number to cardinal form using masculine units
104
- * @param {bigint} number Number to convert
105
- * @returns {string} Value in written format
106
- */
107
- toCardinalWithMasculine(number: bigint): string;
108
- }
109
- import AbstractLanguage from '../classes/abstract-language.js';