n2words 1.23.1 → 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.
- package/LICENSE +1 -1
- package/README.md +181 -52
- package/dist/languages/ar.js +2 -0
- package/dist/languages/ar.js.map +1 -0
- package/dist/languages/az.js +2 -0
- package/dist/languages/az.js.map +1 -0
- package/dist/languages/bn.js +2 -0
- package/dist/languages/bn.js.map +1 -0
- package/dist/languages/cs.js +2 -0
- package/dist/languages/cs.js.map +1 -0
- package/dist/languages/da.js +2 -0
- package/dist/languages/da.js.map +1 -0
- package/dist/languages/de.js +2 -0
- package/dist/languages/de.js.map +1 -0
- package/dist/languages/el.js +2 -0
- package/dist/languages/el.js.map +1 -0
- package/dist/languages/en.js +2 -0
- package/dist/languages/en.js.map +1 -0
- package/dist/languages/es.js +2 -0
- package/dist/languages/es.js.map +1 -0
- package/dist/languages/fa.js +2 -0
- package/dist/languages/fa.js.map +1 -0
- package/dist/languages/fil.js +2 -0
- package/dist/languages/fil.js.map +1 -0
- package/dist/languages/fr-BE.js +2 -0
- package/dist/languages/fr-BE.js.map +1 -0
- package/dist/languages/fr.js +2 -0
- package/dist/languages/fr.js.map +1 -0
- package/dist/languages/gu.js +2 -0
- package/dist/languages/gu.js.map +1 -0
- package/dist/languages/he.js +2 -0
- package/dist/languages/he.js.map +1 -0
- package/dist/languages/hi.js +2 -0
- package/dist/languages/hi.js.map +1 -0
- package/dist/languages/hr.js +2 -0
- package/dist/languages/hr.js.map +1 -0
- package/dist/languages/hu.js +2 -0
- package/dist/languages/hu.js.map +1 -0
- package/dist/languages/id.js +2 -0
- package/dist/languages/id.js.map +1 -0
- package/dist/languages/it.js +2 -0
- package/dist/languages/it.js.map +1 -0
- package/dist/languages/ja.js +2 -0
- package/dist/languages/ja.js.map +1 -0
- package/dist/languages/kn.js +2 -0
- package/dist/languages/kn.js.map +1 -0
- package/dist/languages/ko.js +2 -0
- package/dist/languages/ko.js.map +1 -0
- package/dist/languages/lt.js +2 -0
- package/dist/languages/lt.js.map +1 -0
- package/dist/languages/lv.js +2 -0
- package/dist/languages/lv.js.map +1 -0
- package/dist/languages/mr.js +2 -0
- package/dist/languages/mr.js.map +1 -0
- package/dist/languages/ms.js +2 -0
- package/dist/languages/ms.js.map +1 -0
- package/dist/languages/nb.js +2 -0
- package/dist/languages/nb.js.map +1 -0
- package/dist/languages/nl.js +2 -0
- package/dist/languages/nl.js.map +1 -0
- package/dist/languages/pa-Guru.js +2 -0
- package/dist/languages/pa-Guru.js.map +1 -0
- package/dist/languages/pl.js +2 -0
- package/dist/languages/pl.js.map +1 -0
- package/dist/languages/pt.js +2 -0
- package/dist/languages/pt.js.map +1 -0
- package/dist/languages/ro.js +2 -0
- package/dist/languages/ro.js.map +1 -0
- package/dist/languages/ru.js +2 -0
- package/dist/languages/ru.js.map +1 -0
- package/dist/languages/sr-Latn.js +2 -0
- package/dist/languages/sr-Latn.js.map +1 -0
- package/dist/languages/sv.js +2 -0
- package/dist/languages/sv.js.map +1 -0
- package/dist/languages/sw.js +2 -0
- package/dist/languages/sw.js.map +1 -0
- package/dist/languages/ta.js +2 -0
- package/dist/languages/ta.js.map +1 -0
- package/dist/languages/te.js +2 -0
- package/dist/languages/te.js.map +1 -0
- package/dist/languages/th.js +2 -0
- package/dist/languages/th.js.map +1 -0
- package/dist/languages/tr.js +2 -0
- package/dist/languages/tr.js.map +1 -0
- package/dist/languages/uk.js +2 -0
- package/dist/languages/uk.js.map +1 -0
- package/dist/languages/ur.js +2 -0
- package/dist/languages/ur.js.map +1 -0
- package/dist/languages/vi.js +2 -0
- package/dist/languages/vi.js.map +1 -0
- package/dist/languages/zh-Hans.js +2 -0
- package/dist/languages/zh-Hans.js.map +1 -0
- package/dist/n2words.js +1 -1
- package/dist/n2words.js.map +1 -1
- package/lib/classes/abstract-language.js +211 -110
- package/lib/classes/greedy-scale-language.js +195 -0
- package/lib/classes/slavic-language.js +251 -0
- package/lib/classes/south-asian-language.js +161 -0
- package/lib/classes/turkic-language.js +63 -0
- package/lib/languages/ar.js +243 -0
- package/lib/languages/az.js +58 -0
- package/lib/languages/bn.js +126 -0
- package/lib/languages/cs.js +212 -0
- package/lib/languages/da.js +167 -0
- package/lib/languages/de.js +135 -0
- package/lib/languages/el.js +116 -0
- package/lib/languages/en.js +123 -0
- package/lib/languages/es.js +153 -0
- package/lib/languages/fa.js +127 -0
- package/lib/languages/fil.js +162 -0
- package/lib/languages/fr-BE.js +61 -0
- package/lib/languages/fr.js +145 -0
- package/lib/languages/gu.js +156 -0
- package/lib/languages/he.js +329 -0
- package/lib/languages/hi.js +126 -0
- package/lib/languages/hr.js +157 -0
- package/lib/languages/hu.js +155 -0
- package/lib/languages/id.js +174 -0
- package/lib/languages/it.js +148 -0
- package/lib/languages/ja.js +190 -0
- package/lib/languages/kn.js +71 -0
- package/lib/languages/ko.js +83 -0
- package/lib/languages/lt.js +171 -0
- package/lib/languages/lv.js +153 -0
- package/lib/languages/mr.js +156 -0
- package/lib/languages/ms.js +146 -0
- package/lib/languages/nb.js +120 -0
- package/lib/languages/nl.js +206 -0
- package/lib/languages/pa-Guru.js +126 -0
- package/lib/languages/pl.js +189 -0
- package/lib/languages/pt.js +147 -0
- package/lib/languages/ro.js +380 -0
- package/lib/languages/ru.js +116 -0
- package/lib/languages/sr-Latn.js +157 -0
- package/lib/languages/sv.js +127 -0
- package/lib/languages/sw.js +121 -0
- package/lib/languages/ta.js +226 -0
- package/lib/languages/te.js +229 -0
- package/lib/languages/th.js +123 -0
- package/lib/languages/tr.js +83 -0
- package/lib/{i18n → languages}/uk.js +50 -23
- package/lib/languages/ur.js +126 -0
- package/lib/languages/vi.js +193 -0
- package/lib/languages/zh-Hans.js +165 -0
- package/lib/n2words.js +246 -75
- package/package.json +80 -72
- package/typings/classes/abstract-language.d.ts +144 -0
- package/typings/classes/greedy-scale-language.d.ts +148 -0
- package/typings/classes/slavic-language.d.ts +145 -0
- package/typings/classes/south-asian-language.d.ts +101 -0
- package/typings/classes/turkic-language.d.ts +42 -0
- package/typings/languages/ar.d.ts +93 -0
- package/typings/languages/az.d.ts +25 -0
- package/typings/languages/bn.d.ts +1 -0
- package/typings/languages/cs.d.ts +120 -0
- package/typings/languages/da.d.ts +53 -0
- package/typings/languages/de.d.ts +26 -0
- package/typings/languages/el.d.ts +11 -0
- package/typings/languages/en.d.ts +30 -0
- package/typings/languages/es.d.ts +43 -0
- package/typings/languages/fa.d.ts +81 -0
- package/typings/languages/fil.d.ts +12 -0
- package/typings/languages/fr-BE.d.ts +41 -0
- package/typings/languages/fr.d.ts +43 -0
- package/typings/languages/gu.d.ts +12 -0
- package/typings/languages/he.d.ts +197 -0
- package/typings/languages/hi.d.ts +1 -0
- package/typings/languages/hr.d.ts +110 -0
- package/typings/languages/hu.d.ts +37 -0
- package/typings/languages/id.d.ts +69 -0
- package/typings/languages/it.d.ts +51 -0
- package/typings/languages/ja.d.ts +58 -0
- package/typings/languages/kn.d.ts +11 -0
- package/typings/languages/ko.d.ts +25 -0
- package/typings/languages/lt.d.ts +110 -0
- package/typings/languages/lv.d.ts +99 -0
- package/typings/languages/mr.d.ts +12 -0
- package/typings/languages/ms.d.ts +37 -0
- package/typings/languages/nb.d.ts +27 -0
- package/typings/languages/nl.d.ts +65 -0
- package/typings/languages/pa-Guru.d.ts +1 -0
- package/typings/languages/pl.d.ts +116 -0
- package/typings/languages/pt.d.ts +39 -0
- package/typings/languages/ro.d.ts +229 -0
- package/typings/languages/ru.d.ts +108 -0
- package/typings/languages/sr-Latn.d.ts +98 -0
- package/typings/languages/sv.d.ts +30 -0
- package/typings/languages/sw.d.ts +1 -0
- package/typings/languages/ta.d.ts +1 -0
- package/typings/languages/te.d.ts +1 -0
- package/typings/languages/th.d.ts +1 -0
- package/typings/languages/tr.d.ts +46 -0
- package/typings/languages/uk.d.ts +117 -0
- package/typings/languages/ur.d.ts +1 -0
- package/typings/languages/vi.d.ts +116 -0
- package/typings/languages/zh-Hans.d.ts +57 -0
- package/typings/n2words.d.ts +177 -0
- package/dist/ar.js +0 -2
- package/dist/ar.js.map +0 -1
- package/dist/az.js +0 -2
- package/dist/az.js.map +0 -1
- package/dist/cz.js +0 -2
- package/dist/cz.js.map +0 -1
- package/dist/de.js +0 -2
- package/dist/de.js.map +0 -1
- package/dist/dk.js +0 -2
- package/dist/dk.js.map +0 -1
- package/dist/en.js +0 -2
- package/dist/en.js.map +0 -1
- package/dist/es.js +0 -2
- package/dist/es.js.map +0 -1
- package/dist/fa.js +0 -2
- package/dist/fa.js.map +0 -1
- package/dist/fr-BE.js +0 -2
- package/dist/fr-BE.js.map +0 -1
- package/dist/fr.js +0 -2
- package/dist/fr.js.map +0 -1
- package/dist/he.js +0 -2
- package/dist/he.js.map +0 -1
- package/dist/hr.js +0 -2
- package/dist/hr.js.map +0 -1
- package/dist/hu.js +0 -2
- package/dist/hu.js.map +0 -1
- package/dist/id.js +0 -2
- package/dist/id.js.map +0 -1
- package/dist/it.js +0 -2
- package/dist/it.js.map +0 -1
- package/dist/ko.js +0 -2
- package/dist/ko.js.map +0 -1
- package/dist/lt.js +0 -2
- package/dist/lt.js.map +0 -1
- package/dist/lv.js +0 -2
- package/dist/lv.js.map +0 -1
- package/dist/n2words.d.ts +0 -2
- package/dist/nl.js +0 -2
- package/dist/nl.js.map +0 -1
- package/dist/no.js +0 -2
- package/dist/no.js.map +0 -1
- package/dist/pl.js +0 -2
- package/dist/pl.js.map +0 -1
- package/dist/pt.js +0 -2
- package/dist/pt.js.map +0 -1
- package/dist/ro.js +0 -2
- package/dist/ro.js.map +0 -1
- package/dist/ru.js +0 -2
- package/dist/ru.js.map +0 -1
- package/dist/sr.js +0 -2
- package/dist/sr.js.map +0 -1
- package/dist/tr.js +0 -2
- package/dist/tr.js.map +0 -1
- package/dist/uk.js +0 -2
- package/dist/uk.js.map +0 -1
- package/dist/vi.js +0 -2
- package/dist/vi.js.map +0 -1
- package/dist/zh.js +0 -2
- package/dist/zh.js.map +0 -1
- package/lib/classes/abstract-language.d.ts +0 -54
- package/lib/classes/base-language.d.ts +0 -58
- package/lib/classes/base-language.js +0 -172
- package/lib/i18n/ar.d.ts +0 -41
- package/lib/i18n/ar.js +0 -209
- package/lib/i18n/az.d.ts +0 -15
- package/lib/i18n/az.js +0 -66
- package/lib/i18n/cz.d.ts +0 -68
- package/lib/i18n/cz.js +0 -135
- package/lib/i18n/de.d.ts +0 -17
- package/lib/i18n/de.js +0 -103
- package/lib/i18n/dk.d.ts +0 -14
- package/lib/i18n/dk.js +0 -110
- package/lib/i18n/en.d.ts +0 -22
- package/lib/i18n/en.js +0 -86
- package/lib/i18n/es.d.ts +0 -16
- package/lib/i18n/es.js +0 -110
- package/lib/i18n/fa.d.ts +0 -54
- package/lib/i18n/fa.js +0 -106
- package/lib/i18n/fr-BE.d.ts +0 -11
- package/lib/i18n/fr-BE.js +0 -20
- package/lib/i18n/fr.d.ts +0 -15
- package/lib/i18n/fr.js +0 -99
- package/lib/i18n/he.d.ts +0 -61
- package/lib/i18n/he.js +0 -132
- package/lib/i18n/hr.d.ts +0 -68
- package/lib/i18n/hr.js +0 -129
- package/lib/i18n/hu.d.ts +0 -17
- package/lib/i18n/hu.js +0 -135
- package/lib/i18n/id.d.ts +0 -43
- package/lib/i18n/id.js +0 -156
- package/lib/i18n/it.d.ts +0 -29
- package/lib/i18n/it.js +0 -137
- package/lib/i18n/ko.d.ts +0 -15
- package/lib/i18n/ko.js +0 -56
- package/lib/i18n/lt.d.ts +0 -68
- package/lib/i18n/lt.js +0 -138
- package/lib/i18n/lv.d.ts +0 -57
- package/lib/i18n/lv.js +0 -120
- package/lib/i18n/nl.d.ts +0 -20
- package/lib/i18n/nl.js +0 -125
- package/lib/i18n/no.d.ts +0 -15
- package/lib/i18n/no.js +0 -77
- package/lib/i18n/pl.d.ts +0 -67
- package/lib/i18n/pl.js +0 -126
- package/lib/i18n/pt.d.ts +0 -26
- package/lib/i18n/pt.js +0 -118
- package/lib/i18n/ro.d.ts +0 -109
- package/lib/i18n/ro.js +0 -360
- package/lib/i18n/ru.d.ts +0 -30
- package/lib/i18n/ru.js +0 -198
- package/lib/i18n/sr.d.ts +0 -56
- package/lib/i18n/sr.js +0 -127
- package/lib/i18n/tr.d.ts +0 -15
- package/lib/i18n/tr.js +0 -64
- package/lib/i18n/uk.d.ts +0 -78
- package/lib/i18n/vi.d.ts +0 -70
- package/lib/i18n/vi.js +0 -151
- package/lib/i18n/zh.d.ts +0 -18
- package/lib/i18n/zh.js +0 -78
- package/lib/n2words.d.ts +0 -9
package/lib/i18n/dk.js
DELETED
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
import BaseLanguage from '../classes/base-language.js';
|
|
2
|
-
|
|
3
|
-
export class N2WordsDK extends BaseLanguage {
|
|
4
|
-
ordFlag;
|
|
5
|
-
|
|
6
|
-
constructor(options) {
|
|
7
|
-
options = Object.assign({
|
|
8
|
-
negativeWord: 'minus',
|
|
9
|
-
separatorWord: 'komma',
|
|
10
|
-
zero: 'nul',
|
|
11
|
-
ordFlag: false
|
|
12
|
-
}, options);
|
|
13
|
-
|
|
14
|
-
super(options, [
|
|
15
|
-
[1_000_000_000_000_000_000_000_000_000n, 'quadrillarder'],
|
|
16
|
-
[1_000_000_000_000_000_000_000_000n, 'quadrillioner'],
|
|
17
|
-
[1_000_000_000_000_000_000_000n, 'trillarder'],
|
|
18
|
-
[1_000_000_000_000_000_000n, 'trillioner'],
|
|
19
|
-
[1_000_000_000_000_000n, 'billarder'],
|
|
20
|
-
[1_000_000_000_000n, 'billioner'],
|
|
21
|
-
[1_000_000_000n, 'millarder'],
|
|
22
|
-
[1_000_000n, 'millioner'],
|
|
23
|
-
[1000n, 'tusind'],
|
|
24
|
-
[100n, 'hundrede'],
|
|
25
|
-
[90n, 'halvfems'],
|
|
26
|
-
[80n, 'firs'],
|
|
27
|
-
[70n, 'halvfjerds'],
|
|
28
|
-
[60n, 'treds'],
|
|
29
|
-
[50n, 'halvtreds'],
|
|
30
|
-
[40n, 'fyrre'],
|
|
31
|
-
[30n, 'tredive'],
|
|
32
|
-
[20n, 'tyve'],
|
|
33
|
-
[19n, 'nitten'],
|
|
34
|
-
[18n, 'atten'],
|
|
35
|
-
[17n, 'sytten'],
|
|
36
|
-
[16n, 'seksten'],
|
|
37
|
-
[15n, 'femten'],
|
|
38
|
-
[14n, 'fjorten'],
|
|
39
|
-
[13n, 'tretten'],
|
|
40
|
-
[12n, 'tolv'],
|
|
41
|
-
[11n, 'elleve'],
|
|
42
|
-
[10n, 'ti'],
|
|
43
|
-
[9n, 'ni'],
|
|
44
|
-
[8n, 'otte'],
|
|
45
|
-
[7n, 'syv'],
|
|
46
|
-
[6n, 'seks'],
|
|
47
|
-
[5n, 'fem'],
|
|
48
|
-
[4n, 'fire'],
|
|
49
|
-
[3n, 'tre'],
|
|
50
|
-
[2n, 'to'],
|
|
51
|
-
[1n, 'et'],
|
|
52
|
-
[0n, 'nul']
|
|
53
|
-
]);
|
|
54
|
-
|
|
55
|
-
this.ordFlag = options.ordFlag;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
merge(current, next) {
|
|
59
|
-
let cText = Object.keys(current)[0];
|
|
60
|
-
let nText = Object.keys(next)[0];
|
|
61
|
-
const cNumber = BigInt(Object.values(current)[0]);
|
|
62
|
-
const nNumber = BigInt(Object.values(next)[0]);
|
|
63
|
-
let value;
|
|
64
|
-
if (nNumber == 100 || nNumber == 1000) {
|
|
65
|
-
next = { [`et${nText}`]: nNumber };
|
|
66
|
-
}
|
|
67
|
-
if (cNumber == 1) {
|
|
68
|
-
if (nNumber < 1_000_000 || this.ordFlag) {
|
|
69
|
-
return next;
|
|
70
|
-
}
|
|
71
|
-
cText = 'en';
|
|
72
|
-
}
|
|
73
|
-
if (nNumber > cNumber) {
|
|
74
|
-
if (nNumber >= 1_000_000) {
|
|
75
|
-
cText += ' ';
|
|
76
|
-
}
|
|
77
|
-
value = cNumber * nNumber;
|
|
78
|
-
} else {
|
|
79
|
-
if (cNumber >= 100 && cNumber < 1000) {
|
|
80
|
-
cText += ' og ';
|
|
81
|
-
} else if (cNumber >= 1000 && cNumber <= 100_000) {
|
|
82
|
-
cText += 'e og ';
|
|
83
|
-
}
|
|
84
|
-
if ((nNumber < 10) && (10 < cNumber) && (cNumber < 100)) {
|
|
85
|
-
if (nNumber == 1) {
|
|
86
|
-
nText = 'en';
|
|
87
|
-
}
|
|
88
|
-
const temporary = nText;
|
|
89
|
-
nText = cText;
|
|
90
|
-
cText = temporary + 'og';
|
|
91
|
-
} else if (cNumber >= 1_000_000) {
|
|
92
|
-
cText += ' ';
|
|
93
|
-
}
|
|
94
|
-
value = cNumber + nNumber;
|
|
95
|
-
}
|
|
96
|
-
const word = cText + nText;
|
|
97
|
-
return { [`${word}`]: value };
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
/**
|
|
102
|
-
* Converts a value to cardinal (written) form.
|
|
103
|
-
* @param {number|string|bigint} value Number to be convert.
|
|
104
|
-
* @param {object} [options] Options for class.
|
|
105
|
-
* @returns {string} Value in cardinal (written) format.
|
|
106
|
-
* @throws {Error} Value cannot be invalid.
|
|
107
|
-
*/
|
|
108
|
-
export default function floatToCardinal (value, options = {}) {
|
|
109
|
-
return new N2WordsDK(options).floatToCardinal(value);
|
|
110
|
-
}
|
package/lib/i18n/en.d.ts
DELETED
|
@@ -1,22 +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
|
-
/**
|
|
10
|
-
* This class is for converting numbers to english words.
|
|
11
|
-
*/
|
|
12
|
-
export class English extends BaseLanguage {
|
|
13
|
-
constructor(options: any);
|
|
14
|
-
/**
|
|
15
|
-
* Merge word set pairs
|
|
16
|
-
* @param {object} lPair {'one':1}
|
|
17
|
-
* @param {object} rPair {'hundred':100}
|
|
18
|
-
* @returns {object} {'one hundred': 100}
|
|
19
|
-
*/
|
|
20
|
-
merge(lPair: object, rPair: object): object;
|
|
21
|
-
}
|
|
22
|
-
import BaseLanguage from '../classes/base-language.js';
|
package/lib/i18n/en.js
DELETED
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import BaseLanguage from '../classes/base-language.js';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* This class is for converting numbers to english words.
|
|
5
|
-
*/
|
|
6
|
-
export class English extends BaseLanguage {
|
|
7
|
-
constructor(options) {
|
|
8
|
-
options = Object.assign({
|
|
9
|
-
negativeWord: 'minus',
|
|
10
|
-
separatorWord: 'point',
|
|
11
|
-
zero: 'zero'
|
|
12
|
-
}, options);
|
|
13
|
-
|
|
14
|
-
super(options, [
|
|
15
|
-
[1_000_000_000_000_000_000_000_000_000n, 'octillion'],
|
|
16
|
-
[1_000_000_000_000_000_000_000_000n, 'septillion'],
|
|
17
|
-
[1_000_000_000_000_000_000_000n, 'sextillion'],
|
|
18
|
-
[1_000_000_000_000_000_000n, 'quintillion'],
|
|
19
|
-
[1_000_000_000_000_000n, 'quadrillion'],
|
|
20
|
-
[1_000_000_000_000n, 'trillion'],
|
|
21
|
-
[1_000_000_000n, 'billion'],
|
|
22
|
-
[1_000_000n, 'million'],
|
|
23
|
-
[1000n, 'thousand'],
|
|
24
|
-
[100n, 'hundred'],
|
|
25
|
-
[90n, 'ninety'],
|
|
26
|
-
[80n, 'eighty'],
|
|
27
|
-
[70n, 'seventy'],
|
|
28
|
-
[60n, 'sixty'],
|
|
29
|
-
[50n, 'fifty'],
|
|
30
|
-
[40n, 'forty'],
|
|
31
|
-
[30n, 'thirty'],
|
|
32
|
-
[20n, 'twenty'],
|
|
33
|
-
[19n, 'nineteen'],
|
|
34
|
-
[18n, 'eighteen'],
|
|
35
|
-
[17n, 'seventeen'],
|
|
36
|
-
[16n, 'sixteen'],
|
|
37
|
-
[15n, 'fifteen'],
|
|
38
|
-
[14n, 'fourteen'],
|
|
39
|
-
[13n, 'thirteen'],
|
|
40
|
-
[12n, 'twelve'],
|
|
41
|
-
[11n, 'eleven'],
|
|
42
|
-
[10n, 'ten'],
|
|
43
|
-
[9n, 'nine'],
|
|
44
|
-
[8n, 'eight'],
|
|
45
|
-
[7n, 'seven'],
|
|
46
|
-
[6n, 'six'],
|
|
47
|
-
[5n, 'five'],
|
|
48
|
-
[4n, 'four'],
|
|
49
|
-
[3n, 'three'],
|
|
50
|
-
[2n, 'two'],
|
|
51
|
-
[1n, 'one'],
|
|
52
|
-
[0n, 'zero']
|
|
53
|
-
]);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* Merge word set pairs
|
|
58
|
-
* @param {object} lPair {'one':1}
|
|
59
|
-
* @param {object} rPair {'hundred':100}
|
|
60
|
-
* @returns {object} {'one hundred': 100}
|
|
61
|
-
*/
|
|
62
|
-
merge(lPair, rPair) {
|
|
63
|
-
const lText = Object.keys(lPair)[0];
|
|
64
|
-
const lNumber = BigInt(Object.values(lPair)[0]);
|
|
65
|
-
const rText = Object.keys(rPair)[0];
|
|
66
|
-
const rNumber = BigInt(Object.values(rPair)[0]);
|
|
67
|
-
|
|
68
|
-
if (lNumber == 1 && rNumber < 100) return { [rText]: rNumber };
|
|
69
|
-
else if (100 > lNumber && lNumber > rNumber) return { [`${lText}-${rText}`]: lNumber + rNumber };
|
|
70
|
-
else if (lNumber >= 100 && 100 > rNumber) return { [`${lText} and ${rText}`]: lNumber + rNumber };
|
|
71
|
-
else if (rNumber > lNumber) return { [`${lText} ${rText}`]: lNumber * rNumber };
|
|
72
|
-
|
|
73
|
-
return { [`${lText} ${rText}`]: lNumber + rNumber };
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* Converts a value to cardinal (written) form.
|
|
79
|
-
* @param {number|string|bigint} value Number to be convert.
|
|
80
|
-
* @param {object} [options] Options for class.
|
|
81
|
-
* @returns {string} Value in cardinal (written) format.
|
|
82
|
-
* @throws {Error} Value cannot be invalid.
|
|
83
|
-
*/
|
|
84
|
-
export default function floatToCardinal (value, options = {}) {
|
|
85
|
-
return new English(options).floatToCardinal(value);
|
|
86
|
-
}
|
package/lib/i18n/es.d.ts
DELETED
|
@@ -1,16 +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 N2WordsES extends BaseLanguage {
|
|
10
|
-
constructor(options: any);
|
|
11
|
-
genderStem: any;
|
|
12
|
-
merge(current: any, next: any): {
|
|
13
|
-
[x: string]: bigint;
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
import BaseLanguage from '../classes/base-language.js';
|
package/lib/i18n/es.js
DELETED
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
import BaseLanguage from '../classes/base-language.js';
|
|
2
|
-
|
|
3
|
-
export class N2WordsES extends BaseLanguage {
|
|
4
|
-
genderStem;
|
|
5
|
-
|
|
6
|
-
constructor(options) {
|
|
7
|
-
options = Object.assign({
|
|
8
|
-
negativeWord: 'menos',
|
|
9
|
-
separatorWord: 'punto',
|
|
10
|
-
zero: 'cero',
|
|
11
|
-
genderStem: 'o'
|
|
12
|
-
}, options);
|
|
13
|
-
|
|
14
|
-
super(options, [
|
|
15
|
-
[1_000_000_000_000_000_000_000_000n, 'cuatrillón'],
|
|
16
|
-
[1_000_000_000_000_000_000n, 'trillón'],
|
|
17
|
-
[1_000_000_000_000n, 'billón'],
|
|
18
|
-
[1_000_000n, 'millón'],
|
|
19
|
-
[1000n, 'mil'],
|
|
20
|
-
[100n, 'cien'],
|
|
21
|
-
[90n, 'noventa'],
|
|
22
|
-
[80n, 'ochenta'],
|
|
23
|
-
[70n, 'setenta'],
|
|
24
|
-
[60n, 'sesenta'],
|
|
25
|
-
[50n, 'cincuenta'],
|
|
26
|
-
[40n, 'cuarenta'],
|
|
27
|
-
[30n, 'treinta'],
|
|
28
|
-
[29n, 'veintinueve'],
|
|
29
|
-
[28n, 'veintiocho'],
|
|
30
|
-
[27n, 'veintisiete'],
|
|
31
|
-
[26n, 'veintiséis'],
|
|
32
|
-
[25n, 'veinticinco'],
|
|
33
|
-
[24n, 'veinticuatro'],
|
|
34
|
-
[23n, 'veintitrés'],
|
|
35
|
-
[22n, 'veintidós'],
|
|
36
|
-
[21n, 'veintiuno'],
|
|
37
|
-
[20n, 'veinte'],
|
|
38
|
-
[19n, 'diecinueve'],
|
|
39
|
-
[18n, 'dieciocho'],
|
|
40
|
-
[17n, 'diecisiete'],
|
|
41
|
-
[16n, 'dieciseis'],
|
|
42
|
-
[15n, 'quince'],
|
|
43
|
-
[14n, 'catorce'],
|
|
44
|
-
[13n, 'trece'],
|
|
45
|
-
[12n, 'doce'],
|
|
46
|
-
[11n, 'once'],
|
|
47
|
-
[10n, 'diez'],
|
|
48
|
-
[9n, 'nueve'],
|
|
49
|
-
[8n, 'ocho'],
|
|
50
|
-
[7n, 'siete'],
|
|
51
|
-
[6n, 'seis'],
|
|
52
|
-
[5n, 'cinco'],
|
|
53
|
-
[4n, 'cuatro'],
|
|
54
|
-
[3n, 'tres'],
|
|
55
|
-
[2n, 'dos'],
|
|
56
|
-
[1n, 'uno'],
|
|
57
|
-
[0n, 'cero']
|
|
58
|
-
]);
|
|
59
|
-
|
|
60
|
-
this.genderStem = options.genderStem;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
merge(current, next) {
|
|
64
|
-
let cText = Object.keys(current)[0];
|
|
65
|
-
let nText = Object.keys(next)[0];
|
|
66
|
-
const cNumber = BigInt(Object.values(current)[0]);
|
|
67
|
-
const nNumber = BigInt(Object.values(next)[0]);
|
|
68
|
-
if (cNumber == 1) {
|
|
69
|
-
if (nNumber < 1_000_000) return { [nText]: nNumber };
|
|
70
|
-
cText = 'un';
|
|
71
|
-
} else if (cNumber == 100 && nNumber % 1000n != 0) {
|
|
72
|
-
cText += 't' + this.genderStem;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
if (nNumber < cNumber) {
|
|
76
|
-
if (cNumber < 100) {
|
|
77
|
-
return { [`${cText} y ${nText}`]: cNumber + nNumber };
|
|
78
|
-
}
|
|
79
|
-
return { [`${cText} ${nText}`]: cNumber + nNumber };
|
|
80
|
-
} else if (nNumber % 1_000_000n == 0 && cNumber > 1) {
|
|
81
|
-
nText = nText.slice(0, -3) + 'lones';
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
if (nNumber == 100) {
|
|
85
|
-
if (cNumber == 5) {
|
|
86
|
-
cText = 'quinien';
|
|
87
|
-
nText = '';
|
|
88
|
-
} else if (cNumber == 7) {
|
|
89
|
-
cText = 'sete';
|
|
90
|
-
} else if (cNumber == 9) {
|
|
91
|
-
cText = 'nove';
|
|
92
|
-
}
|
|
93
|
-
nText += 't' + this.genderStem + 's';
|
|
94
|
-
} else {
|
|
95
|
-
nText = ' ' + nText;
|
|
96
|
-
}
|
|
97
|
-
return { [`${cText}${nText}`]: cNumber * nNumber };
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
/**
|
|
102
|
-
* Converts a value to cardinal (written) form.
|
|
103
|
-
* @param {number|string|bigint} value Number to be convert.
|
|
104
|
-
* @param {object} [options] Options for class.
|
|
105
|
-
* @returns {string} Value in cardinal (written) format.
|
|
106
|
-
* @throws {Error} Value cannot be invalid.
|
|
107
|
-
*/
|
|
108
|
-
export default function floatToCardinal (value, options = {}) {
|
|
109
|
-
return new N2WordsES(options).floatToCardinal(value);
|
|
110
|
-
}
|
package/lib/i18n/fa.d.ts
DELETED
|
@@ -1,54 +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 N2WordsFA extends AbstractLanguage {
|
|
10
|
-
constructor(options: any);
|
|
11
|
-
namedNumbers: {
|
|
12
|
-
0: string;
|
|
13
|
-
1: string;
|
|
14
|
-
2: string;
|
|
15
|
-
3: string;
|
|
16
|
-
4: string;
|
|
17
|
-
5: string;
|
|
18
|
-
6: string;
|
|
19
|
-
7: string;
|
|
20
|
-
8: string;
|
|
21
|
-
9: string;
|
|
22
|
-
10: string;
|
|
23
|
-
11: string;
|
|
24
|
-
12: string;
|
|
25
|
-
13: string;
|
|
26
|
-
14: string;
|
|
27
|
-
15: string;
|
|
28
|
-
16: string;
|
|
29
|
-
17: string;
|
|
30
|
-
18: string;
|
|
31
|
-
19: string;
|
|
32
|
-
20: string;
|
|
33
|
-
30: string;
|
|
34
|
-
40: string;
|
|
35
|
-
50: string;
|
|
36
|
-
60: string;
|
|
37
|
-
70: string;
|
|
38
|
-
80: string;
|
|
39
|
-
90: string;
|
|
40
|
-
100: string;
|
|
41
|
-
200: string;
|
|
42
|
-
300: string;
|
|
43
|
-
400: string;
|
|
44
|
-
500: string;
|
|
45
|
-
600: string;
|
|
46
|
-
700: string;
|
|
47
|
-
800: string;
|
|
48
|
-
900: string;
|
|
49
|
-
1000: string;
|
|
50
|
-
1000000: string;
|
|
51
|
-
};
|
|
52
|
-
toCardinal(number: any): any;
|
|
53
|
-
}
|
|
54
|
-
import AbstractLanguage from '../classes/abstract-language.js';
|
package/lib/i18n/fa.js
DELETED
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
import AbstractLanguage from '../classes/abstract-language.js';
|
|
2
|
-
|
|
3
|
-
export class N2WordsFA extends AbstractLanguage {
|
|
4
|
-
namedNumbers = {
|
|
5
|
-
0: 'صفر',
|
|
6
|
-
1: 'یک',
|
|
7
|
-
2: 'دو',
|
|
8
|
-
3: 'سه',
|
|
9
|
-
4: 'چهار',
|
|
10
|
-
5: 'پنج',
|
|
11
|
-
6: 'شش',
|
|
12
|
-
7: 'هفت',
|
|
13
|
-
8: 'هشت',
|
|
14
|
-
9: 'نه',
|
|
15
|
-
10: 'ده',
|
|
16
|
-
11: 'یازده',
|
|
17
|
-
12: 'دوازده',
|
|
18
|
-
13: 'سیزده',
|
|
19
|
-
14: 'چهارده',
|
|
20
|
-
15: 'پانزده',
|
|
21
|
-
16: 'شانزده',
|
|
22
|
-
17: 'هفده',
|
|
23
|
-
18: 'هجده',
|
|
24
|
-
19: 'نوزده',
|
|
25
|
-
20: 'بیست',
|
|
26
|
-
30: 'سی',
|
|
27
|
-
40: 'چهل',
|
|
28
|
-
50: 'پنجاه',
|
|
29
|
-
60: 'شصت',
|
|
30
|
-
70: 'هفتاد',
|
|
31
|
-
80: 'هشتاد',
|
|
32
|
-
90: 'نود',
|
|
33
|
-
100: 'صد',
|
|
34
|
-
200: 'دویست',
|
|
35
|
-
300: 'سيصد',
|
|
36
|
-
400: 'چهار صد',
|
|
37
|
-
500: 'پانصد',
|
|
38
|
-
600: 'ششصد',
|
|
39
|
-
700: 'هفتصد',
|
|
40
|
-
800: 'هشتصد',
|
|
41
|
-
900: 'نهصد',
|
|
42
|
-
1000: 'هزار',
|
|
43
|
-
1_000_000: 'میلیون',
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
constructor(options) {
|
|
47
|
-
options = Object.assign({
|
|
48
|
-
negativeWord: 'منفى',
|
|
49
|
-
separatorWord: 'ممیّز',
|
|
50
|
-
zero: 'صفر'
|
|
51
|
-
}, options);
|
|
52
|
-
|
|
53
|
-
super(options);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
toCardinal(number) {
|
|
57
|
-
if (this.namedNumbers[number] && number !== 1_000_000n) {
|
|
58
|
-
return this.namedNumbers[number];
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
if (number > 20n && number < 100n) {
|
|
62
|
-
let xone = number % 10n;
|
|
63
|
-
let xten = number - xone;
|
|
64
|
-
return `${this.namedNumbers[xten]} و ${this.namedNumbers[xone]}`;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
if (number > 100n && number < 1000n) {
|
|
68
|
-
let xhundred = 100n * (number / 100n);
|
|
69
|
-
let tail = this.toCardinal(number - xhundred);
|
|
70
|
-
return `${this.namedNumbers[xhundred]} و ${tail}`;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
if (number > 1000n && number < 1_000_000n) {
|
|
74
|
-
let thousandMultiplier = number / 1000n;
|
|
75
|
-
let namedThousandMultiplier =
|
|
76
|
-
(thousandMultiplier == 1n
|
|
77
|
-
? ''
|
|
78
|
-
: this.toCardinal(thousandMultiplier)) +
|
|
79
|
-
' ' +
|
|
80
|
-
this.namedNumbers[1000];
|
|
81
|
-
let tailNumber = number - thousandMultiplier * 1000n;
|
|
82
|
-
let tail = tailNumber == 0n ? '' : ' ' + this.toCardinal(tailNumber);
|
|
83
|
-
return `${namedThousandMultiplier}${tail}`;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
if (number >= 1_000_000n) {
|
|
87
|
-
let millionMultiplier = number / 1_000_000n;
|
|
88
|
-
let namedMillion =
|
|
89
|
-
this.toCardinal(millionMultiplier) + ' ' + this.namedNumbers[1_000_000];
|
|
90
|
-
let tailNumber = number - millionMultiplier * 1_000_000n;
|
|
91
|
-
let tail = tailNumber == 0n ? '' : ' و ' + this.toCardinal(tailNumber);
|
|
92
|
-
return `${namedMillion}${tail}`;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
/**
|
|
98
|
-
* Converts a value to cardinal (written) form.
|
|
99
|
-
* @param {number|string|bigint} value Number to be convert.
|
|
100
|
-
* @param {object} [options] Options for class.
|
|
101
|
-
* @returns {string} Value in cardinal (written) format.
|
|
102
|
-
* @throws {Error} Value cannot be invalid.
|
|
103
|
-
*/
|
|
104
|
-
export default function floatToCardinal (value, options = {}) {
|
|
105
|
-
return new N2WordsFA(options).floatToCardinal(value);
|
|
106
|
-
}
|
package/lib/i18n/fr-BE.d.ts
DELETED
|
@@ -1,11 +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 N2WordsFRBE extends N2WordsFR {
|
|
10
|
-
}
|
|
11
|
-
import { N2WordsFR } from './fr.js';
|
package/lib/i18n/fr-BE.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { N2WordsFR } from './fr.js';
|
|
2
|
-
|
|
3
|
-
export class N2WordsFRBE extends N2WordsFR {
|
|
4
|
-
constructor(options) {
|
|
5
|
-
options = Object.assign({}, options, { _region: 'BE' });
|
|
6
|
-
|
|
7
|
-
super(options);
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Converts a value to cardinal (written) form.
|
|
13
|
-
* @param {number|string|bigint} value Number to be convert.
|
|
14
|
-
* @param {object} [options] Options for class.
|
|
15
|
-
* @returns {string} Value in cardinal (written) format.
|
|
16
|
-
* @throws {Error} Value cannot be invalid.
|
|
17
|
-
*/
|
|
18
|
-
export default function floatToCardinal (value, options = {}) {
|
|
19
|
-
return new N2WordsFRBE(options).floatToCardinal(value);
|
|
20
|
-
}
|
package/lib/i18n/fr.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 converted.
|
|
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 N2WordsFR extends BaseLanguage {
|
|
10
|
-
constructor(options: any);
|
|
11
|
-
merge(current: any, next: any): {
|
|
12
|
-
[x: string]: bigint;
|
|
13
|
-
};
|
|
14
|
-
}
|
|
15
|
-
import BaseLanguage from '../classes/base-language.js';
|
package/lib/i18n/fr.js
DELETED
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
import BaseLanguage from '../classes/base-language.js';
|
|
2
|
-
|
|
3
|
-
export class N2WordsFR extends BaseLanguage {
|
|
4
|
-
constructor(options) {
|
|
5
|
-
options = Object.assign({
|
|
6
|
-
negativeWord: 'moins',
|
|
7
|
-
separatorWord: 'virgule',
|
|
8
|
-
zero: 'zéro',
|
|
9
|
-
_region: 'FR',
|
|
10
|
-
withHyphenSeparator: false,
|
|
11
|
-
spaceSeparator: (options.withHyphenSeparator === true ? '-' : ' '),
|
|
12
|
-
}, options);
|
|
13
|
-
|
|
14
|
-
super(options, [
|
|
15
|
-
[1_000_000_000_000_000_000_000_000_000n, 'quadrilliard'],
|
|
16
|
-
[1_000_000_000_000_000_000_000_000n, 'quadrillion'],
|
|
17
|
-
[1_000_000_000_000_000_000_000n, 'trilliard'],
|
|
18
|
-
[1_000_000_000_000_000_000n, 'trillion'],
|
|
19
|
-
[1_000_000_000_000_000n, 'billiard'],
|
|
20
|
-
[1_000_000_000_000n, 'billion'],
|
|
21
|
-
[1_000_000_000n, 'milliard'],
|
|
22
|
-
[1_000_000n, 'million'],
|
|
23
|
-
[1000n, 'mille'],
|
|
24
|
-
[100n, 'cent'],
|
|
25
|
-
...(['BE'].includes(options._region) ? [[90n, 'nonante']] : []),
|
|
26
|
-
[80n, 'quatre-vingts'],
|
|
27
|
-
...(['BE'].includes(options._region) ? [[70n, 'septante']] : []),
|
|
28
|
-
[60n, 'soixante'],
|
|
29
|
-
[50n, 'cinquante'],
|
|
30
|
-
[40n, 'quarante'],
|
|
31
|
-
[30n, 'trente'],
|
|
32
|
-
[20n, 'vingt'],
|
|
33
|
-
[19n, 'dix-neuf'],
|
|
34
|
-
[18n, 'dix-huit'],
|
|
35
|
-
[17n, 'dix-sept'],
|
|
36
|
-
[16n, 'seize'],
|
|
37
|
-
[15n, 'quinze'],
|
|
38
|
-
[14n, 'quatorze'],
|
|
39
|
-
[13n, 'treize'],
|
|
40
|
-
[12n, 'douze'],
|
|
41
|
-
[11n, 'onze'],
|
|
42
|
-
[10n, 'dix'],
|
|
43
|
-
[9n, 'neuf'],
|
|
44
|
-
[8n, 'huit'],
|
|
45
|
-
[7n, 'sept'],
|
|
46
|
-
[6n, 'six'],
|
|
47
|
-
[5n, 'cinq'],
|
|
48
|
-
[4n, 'quatre'],
|
|
49
|
-
[3n, 'trois'],
|
|
50
|
-
[2n, 'deux'],
|
|
51
|
-
[1n, 'un'],
|
|
52
|
-
[0n, 'zéro']
|
|
53
|
-
]);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
merge(current, next) { // {'cent':100}, {'vingt-cinq':25}
|
|
57
|
-
let cText = Object.keys(current)[0];
|
|
58
|
-
let nText = Object.keys(next)[0];
|
|
59
|
-
const cNumber = BigInt(Object.values(current)[0]);
|
|
60
|
-
const nNumber = BigInt(Object.values(next)[0]);
|
|
61
|
-
if (cNumber == 1) {
|
|
62
|
-
if (nNumber < 1_000_000) {
|
|
63
|
-
return { [nText]: nNumber };
|
|
64
|
-
}
|
|
65
|
-
} else {
|
|
66
|
-
if (
|
|
67
|
-
((cNumber - 80n) % 100n == 0 || (cNumber % 100n == 0 && cNumber < 1000)) &&
|
|
68
|
-
nNumber < 1_000_000 &&
|
|
69
|
-
cText.at(-1) == 's'
|
|
70
|
-
) {
|
|
71
|
-
cText = cText.slice(0, -1); // without last elem
|
|
72
|
-
}
|
|
73
|
-
if (
|
|
74
|
-
cNumber < 1000 && nNumber != 1000 &&
|
|
75
|
-
nText.at(-1) != 's' &&
|
|
76
|
-
nNumber % 100n == 0
|
|
77
|
-
) {
|
|
78
|
-
nText += 's';
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
if (nNumber < cNumber && cNumber < 100) {
|
|
82
|
-
if (nNumber % 10n == 1 && cNumber != 80) return { [`${cText}${this.spaceSeparator}et${this.spaceSeparator}${nText}`]: cNumber + nNumber };
|
|
83
|
-
return { [`${cText}-${nText}`]: cNumber + nNumber };
|
|
84
|
-
}
|
|
85
|
-
if (nNumber > cNumber) return { [`${cText}${this.spaceSeparator}${nText}`]: cNumber * nNumber };
|
|
86
|
-
return { [`${cText}${this.spaceSeparator}${nText}`]: cNumber + nNumber };
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* Converts a value to cardinal (written) form.
|
|
92
|
-
* @param {number|string|bigint} value Number to be converted.
|
|
93
|
-
* @param {object} [options] Options for class.
|
|
94
|
-
* @returns {string} Value in cardinal (written) format.
|
|
95
|
-
* @throws {Error} Value cannot be invalid.
|
|
96
|
-
*/
|
|
97
|
-
export default function floatToCardinal (value, options = {}) {
|
|
98
|
-
return new N2WordsFR(options).floatToCardinal(value);
|
|
99
|
-
}
|