n2words 1.12.2 → 1.14.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/lib/i18n/HU.mjs CHANGED
@@ -1,70 +1,69 @@
1
- import N2WordsBase from '../classes/N2WordsBase.mjs';
1
+ import BaseLanguage from '../classes/BaseLanguage.mjs';
2
2
 
3
- export class N2WordsHU extends N2WordsBase {
3
+ export class N2WordsHU extends BaseLanguage {
4
4
  constructor() {
5
- super();
6
-
7
- this.negativeWord = 'mínusz';
8
- this.separatorWord = 'egész';
9
- this.cards = [
10
- { '1000000000000000000000000000': 'quadrilliárd' },
11
- { '1000000000000000000000000': 'quadrillió' },
12
- { '1000000000000000000000': 'trilliárd' },
13
- { '1000000000000000000': 'trillió' },
14
- { '1000000000000000': 'billiárd' },
15
- { '1000000000000': 'billió' },
16
- { '1000000000': 'milliárd' },
17
- { '1000000': 'millió' },
18
- { '1000': 'ezer' },
19
- { '100': 'száz' },
20
- { '90': 'kilencven' },
21
- { '80': 'nyolcvan' },
22
- { '70': 'hetven' },
23
- { '60': 'hatvan' },
24
- { '50': 'ötven' },
25
- { '40': 'negyven' },
26
- { '30': 'harminc' },
27
- { '29': 'huszonkilenc' },
28
- { '28': 'huszonnyolc' },
29
- { '27': 'huszonhét' },
30
- { '26': 'huszonhat' },
31
- { '25': 'huszonöt' },
32
- { '24': 'huszonnégy' },
33
- { '23': 'huszonhárom' },
34
- { '22': 'huszonkettő' },
35
- { '21': 'huszonegy' },
36
- { '20': 'húsz' },
37
- { '19': 'tizenkilenc' },
38
- { '18': 'tizennyolc' },
39
- { '17': 'tizenhét' },
40
- { '16': 'tizenhat' },
41
- { '15': 'tizenöt' },
42
- { '14': 'tizennégy' },
43
- { '13': 'tizenhárom' },
44
- { '12': 'tizenkettő' },
45
- { '11': 'tizenegy' },
46
- { '10': 'tíz' },
47
- { '9': 'kilenc' },
48
- { '8': 'nyolc' },
49
- { '7': 'hét' },
50
- { '6': 'hat' },
51
- { '5': 'öt' },
52
- { '4': 'négy' },
53
- { '3': 'három' },
54
- { '2': 'kettő' },
55
- { '1': 'egy' },
56
- { '0': 'nulla' }
57
- ];
58
- this.zero = 'nulla';
5
+ super({
6
+ negativeWord: 'mínusz',
7
+ separatorWord: 'egész',
8
+ zero: 'nulla'
9
+ },[
10
+ [1000000000000000000000000000n, 'quadrilliárd'],
11
+ [1000000000000000000000000n, 'quadrillió'],
12
+ [1000000000000000000000n, 'trilliárd'],
13
+ [1000000000000000000n, 'trillió'],
14
+ [1000000000000000n, 'billiárd'],
15
+ [1000000000000n, 'billió'],
16
+ [1000000000n, 'milliárd'],
17
+ [1000000n, 'millió'],
18
+ [1000n, 'ezer'],
19
+ [100n, 'száz'],
20
+ [90n, 'kilencven'],
21
+ [80n, 'nyolcvan'],
22
+ [70n, 'hetven'],
23
+ [60n, 'hatvan'],
24
+ [50n, 'ötven'],
25
+ [40n, 'negyven'],
26
+ [30n, 'harminc'],
27
+ [29n, 'huszonkilenc'],
28
+ [28n, 'huszonnyolc'],
29
+ [27n, 'huszonhét'],
30
+ [26n, 'huszonhat'],
31
+ [25n, 'huszonöt'],
32
+ [24n, 'huszonnégy'],
33
+ [23n, 'huszonhárom'],
34
+ [22n, 'huszonkettő'],
35
+ [21n, 'huszonegy'],
36
+ [20n, 'húsz'],
37
+ [19n, 'tizenkilenc'],
38
+ [18n, 'tizennyolc'],
39
+ [17n, 'tizenhét'],
40
+ [16n, 'tizenhat'],
41
+ [15n, 'tizenöt'],
42
+ [14n, 'tizennégy'],
43
+ [13n, 'tizenhárom'],
44
+ [12n, 'tizenkettő'],
45
+ [11n, 'tizenegy'],
46
+ [10n, 'tíz'],
47
+ [9n, 'kilenc'],
48
+ [8n, 'nyolc'],
49
+ [7n, 'hét'],
50
+ [6n, 'hat'],
51
+ [5n, 'öt'],
52
+ [4n, 'négy'],
53
+ [3n, 'három'],
54
+ [2n, 'kettő'],
55
+ [1n, 'egy'],
56
+ [0n, 'nulla']
57
+ ]);
59
58
  }
60
59
 
61
60
  tensToCardinal(number) {
62
- if (this.getValueFromCards(number)) {
63
- return this.getValueFromCards(number);
61
+ if (this.getCardWord(number)) {
62
+ return this.getCardWord(number);
64
63
  } else {
65
64
  const tens = Math.floor(number / 10);
66
65
  const units = number % 10;
67
- return this.getValueFromCards(tens * 10) + this.toCardinal(units);
66
+ return this.getCardWord(tens * 10) + this.toCardinal(units);
68
67
  }
69
68
  }
70
69
 
@@ -85,35 +84,35 @@ export class N2WordsHU extends N2WordsBase {
85
84
  prefix = this.toCardinal(thousands, '') + prefix;
86
85
  }
87
86
  let postfix = this.toCardinal(number % 1000, '');
88
- let middle = (number <= 2000 || postfix === '') ? '' : '-';
87
+ let middle = (number <= 2000 || postfix == '') ? '' : '-';
89
88
  return prefix + middle + postfix;
90
89
  }
91
90
 
92
91
  bigNumberToCardinal(number) {
93
- const numberLength = String(number).length;
92
+ const numberLength = number.toString().length;
94
93
  let digits = (numberLength % 3 !== 0) ? numberLength : numberLength - 2;
95
94
  let exp = 10 ** (Math.floor(digits / 3) * 3);
96
- let prefix = this.toCardinal(Math.floor(number / exp), '');
97
- let rest = this.toCardinal(number % exp, '');
95
+ let prefix = this.toCardinal(number / BigInt(exp), '');
96
+ let rest = this.toCardinal(number % BigInt(exp), '');
98
97
  let postfix = (rest !== '') ? ('-' + rest) : '';
99
- return prefix + this.getValueFromCards(exp) + postfix;
98
+ return prefix + this.getCardWord(exp) + postfix;
100
99
  }
101
100
 
102
101
  toCardinal(number, zero = this.zero) {
103
102
  let words = '';
104
103
 
105
- if (number == 0) {
104
+ if (number == 0n) {
106
105
  words = zero;
107
106
  } else if (zero == '' && number == 2) {
108
107
  words = 'két';
109
- } else if (number < 30) {
110
- words = this.getValueFromCards(number);
111
- } else if (number < 100) {
112
- words = this.tensToCardinal(number);
113
- } else if (number < 1000) {
114
- words = this.hundredsToCardinal(number);
115
- } else if (number < 1000000) {
116
- words = this.thousandsToCardinal(number);
108
+ } else if (number < 30n) {
109
+ words = this.getCardWord(Number(number));
110
+ } else if (number < 100n) {
111
+ words = this.tensToCardinal(Number(number));
112
+ } else if (number < 1000n) {
113
+ words = this.hundredsToCardinal(Number(number));
114
+ } else if (number < 1000000n) {
115
+ words = this.thousandsToCardinal(Number(number));
117
116
  } else {
118
117
  words = this.bigNumberToCardinal(number);
119
118
  }
@@ -122,6 +121,12 @@ export class N2WordsHU extends N2WordsBase {
122
121
  }
123
122
  }
124
123
 
125
- export default function(n) {
126
- return new N2WordsHU().floatToCardinal(n);
124
+ /**
125
+ * Converts a value to cardinal (written) form.
126
+ * @param {number|string} value Number to be convert.
127
+ * @throws {Error} Value cannot be invalid.
128
+ * @returns {string} Value in cardinal (written) format.
129
+ */
130
+ export default function(value) {
131
+ return new N2WordsHU().floatToCardinal(value);
127
132
  }
package/lib/i18n/ID.mjs CHANGED
@@ -1,12 +1,13 @@
1
- import N2WordsAbs from '../classes/N2WordsAbs.mjs';
1
+ import AbstractLanguage from '../classes/AbstractLanguage.mjs';
2
2
 
3
- export class N2WordsID extends N2WordsAbs {
3
+ export class N2WordsID extends AbstractLanguage {
4
4
  constructor() {
5
- super();
5
+ super({
6
+ negativeWord: 'min',
7
+ separatorWord: 'koma',
8
+ zero: 'nol'
9
+ });
6
10
 
7
- this.negativeWord = 'min';
8
- this.separatorWord = 'koma';
9
- this.zero = 'nol';
10
11
  this.base = {
11
12
  0: [],
12
13
  1: ['satu'],
@@ -37,7 +38,7 @@ export class N2WordsID extends N2WordsAbs {
37
38
  splitBy3(number) {
38
39
  // Split to groups of 3 numbers: 1234567 -> [['1'], ['234'], ['567']]
39
40
  let blocks = [];
40
- let strNumber = String(number);
41
+ let strNumber = number.toString();
41
42
  let length = strNumber.length;
42
43
  let firstBlock;
43
44
 
@@ -66,13 +67,13 @@ export class N2WordsID extends N2WordsAbs {
66
67
  let wordBlocks = [];
67
68
  let spelling;
68
69
  let firstBlock = blocks[0];
69
- if (firstBlock[0].length === 1) {
70
- if (firstBlock[0] === '0') {
70
+ if (firstBlock[0].length == 1) {
71
+ if (firstBlock[0] == '0') {
71
72
  spelling = ['nol'];
72
73
  } else {
73
74
  spelling = this.base[parseInt(firstBlock[0])];
74
75
  }
75
- } else if (firstBlock[0].length === 2) {
76
+ } else if (firstBlock[0].length == 2) {
76
77
  spelling = this.getTens(firstBlock[0]);
77
78
  } else {
78
79
  spelling = this.getHundreds(
@@ -92,9 +93,9 @@ export class N2WordsID extends N2WordsAbs {
92
93
  }
93
94
 
94
95
  getHundreds(number) { // 'ratus'
95
- if (number === '1') {
96
+ if (number == '1') {
96
97
  return ['seratus'];
97
- } else if (number === '0') {
98
+ } else if (number == '0') {
98
99
  return [];
99
100
  } else {
100
101
  return this.base[parseInt(number)].concat(['ratus']);
@@ -102,15 +103,15 @@ export class N2WordsID extends N2WordsAbs {
102
103
  }
103
104
 
104
105
  getTens(number) { // 'puluh'
105
- if (number[0] === '1') {
106
- if (number[1] === '0') {
106
+ if (number[0] == '1') {
107
+ if (number[1] == '0') {
107
108
  return ['sepuluh'];
108
- } else if (number[1] === '1') {
109
+ } else if (number[1] == '1') {
109
110
  return ['sebelas'];
110
111
  } else {
111
112
  return this.base[parseInt(number[1])].concat(['belas']);
112
113
  }
113
- } else if (number[0] === '0') {
114
+ } else if (number[0] == '0') {
114
115
  return this.base[parseInt(number[1])];
115
116
  } else {
116
117
  return this.base[parseInt(number[0])].concat(['puluh']).concat(
@@ -124,7 +125,7 @@ export class N2WordsID extends N2WordsAbs {
124
125
  let length = wordBlocks.length - 1;
125
126
  let firstBlock = [wordBlocks[0]];
126
127
  let start = 0;
127
- if (length === 1 && firstBlock[0][0] === '1') {
128
+ if (length == 1 && firstBlock[0][0] == '1') {
128
129
  wordList.push('seribu');
129
130
  start = 1;
130
131
  }
@@ -133,7 +134,7 @@ export class N2WordsID extends N2WordsAbs {
133
134
  if (!wordBlocks[i][1].length) {
134
135
  continue;
135
136
  }
136
- if (i === length) {
137
+ if (i == length) {
137
138
  break;
138
139
  }
139
140
  wordList = wordList.concat([this.thousands[(length - i) * 3]]);
@@ -150,6 +151,12 @@ export class N2WordsID extends N2WordsAbs {
150
151
  }
151
152
  }
152
153
 
153
- export default function (n) {
154
- return new N2WordsID().floatToCardinal(n);
154
+ /**
155
+ * Converts a value to cardinal (written) form.
156
+ * @param {number|string} value Number to be convert.
157
+ * @throws {Error} Value cannot be invalid.
158
+ * @returns {string} Value in cardinal (written) format.
159
+ */
160
+ export default function (value) {
161
+ return new N2WordsID().floatToCardinal(value);
155
162
  }
package/lib/i18n/IT.mjs CHANGED
@@ -1,12 +1,15 @@
1
- import N2WordsBase from '../classes/N2WordsBase.mjs';
1
+ import BaseLanguage from '../classes/BaseLanguage.mjs';
2
2
 
3
- export class N2WordsIT extends N2WordsBase {
3
+ export class N2WordsIT extends BaseLanguage {
4
4
  constructor() {
5
- super();
5
+ super({
6
+ negativeWord: 'meno',
7
+ separatorWord: 'virgola',
8
+ zero: 'zero'
9
+ },[]);
10
+
11
+ /** @todo Adapt language to work with {@link BaseLanguage} better */
6
12
 
7
- this.negativeWord = 'meno';
8
- this.separatorWord = 'virgola';
9
- this.zero = 'zero';
10
13
  this.cardinalWords = [
11
14
  this.zero, 'uno', 'due', 'tre', 'quattro', 'cinque', 'sei', 'sette', 'otto',
12
15
  'nove', 'dieci', 'undici', 'dodici', 'tredici', 'quattordici', 'quindici',
@@ -83,7 +86,7 @@ export class N2WordsIT extends N2WordsBase {
83
86
  }
84
87
 
85
88
  bigNumberToCardinal(number) {
86
- const digits = Array.from(String(number));
89
+ const digits = Array.from(number.toString());
87
90
  const predigits = (digits.length % 3 == 0) ? 3 : digits.length % 3;
88
91
  const multiplier = digits.slice(0, predigits); // first `predigits` elements
89
92
  const exponent = digits.slice(predigits); // without the first `predigits` elements
@@ -95,7 +98,7 @@ export class N2WordsIT extends N2WordsBase {
95
98
  prefix = this.toCardinal(parseInt(multiplier.join('')));
96
99
  infix = ' ' + infix.slice(0, -1) + 'i'; // without last element
97
100
  }
98
- const isSetsEqual = (a, b) => a.size === b.size && [...a].every(value => b.has(value));
101
+ const isSetsEqual = (a, b) => a.size == b.size && [...a].every(value => b.has(value));
99
102
  if (!isSetsEqual(new Set(exponent), new Set(['0']))) {
100
103
  postfix = this.toCardinal(parseInt(exponent.join('')));
101
104
  if (postfix.includes(' e ')) {
@@ -112,14 +115,14 @@ export class N2WordsIT extends N2WordsBase {
112
115
  toCardinal(number) {
113
116
  let words = '';
114
117
 
115
- if (number < 20) {
118
+ if (number < 20n) {
116
119
  words = this.cardinalWords[number];
117
- } else if (number < 100) {
118
- words = this.tensToCardinal(number);
119
- } else if (number < 1000) {
120
- words = this.hundredsToCardinal(number);
121
- } else if (number < 1000000) {
122
- words = this.thousandsToCardinal(number);
120
+ } else if (number < 100n) {
121
+ words = this.tensToCardinal(Number(number));
122
+ } else if (number < 1000n) {
123
+ words = this.hundredsToCardinal(Number(number));
124
+ } else if (number < 1000000n) {
125
+ words = this.thousandsToCardinal(Number(number));
123
126
  } else {
124
127
  words = this.bigNumberToCardinal(number);
125
128
  }
@@ -128,6 +131,12 @@ export class N2WordsIT extends N2WordsBase {
128
131
  }
129
132
  }
130
133
 
131
- export default function(n) {
132
- return new N2WordsIT().floatToCardinal(n);
134
+ /**
135
+ * Converts a value to cardinal (written) form.
136
+ * @param {number|string} value Number to be convert.
137
+ * @throws {Error} Value cannot be invalid.
138
+ * @returns {string} Value in cardinal (written) format.
139
+ */
140
+ export default function(value) {
141
+ return new N2WordsIT().floatToCardinal(value);
133
142
  }
package/lib/i18n/KO.mjs CHANGED
@@ -1,34 +1,33 @@
1
- import N2WordsBase from '../classes/N2WordsBase.mjs';
1
+ import BaseLanguage from '../classes/BaseLanguage.mjs';
2
2
 
3
- export class N2WordsKO extends N2WordsBase {
3
+ export class N2WordsKO extends BaseLanguage {
4
4
  constructor() {
5
- super();
6
-
7
- this.negativeWord = '마이너스';
8
- this.separatorWord = '';
9
- this.zero = '영';
10
- this.cards = [
11
- { '10000000000000000000000000000': '양' },
12
- { '1000000000000000000000000': '자' },
13
- { '100000000000000000000': '해' },
14
- { '10000000000000000': '경' },
15
- { '1000000000000': '조' },
16
- { '100000000': '억' },
17
- { '10000': '만' },
18
- { '1000': '천' },
19
- { '100': '백' },
20
- { '10': '십' },
21
- { '9': '구' },
22
- { '8': '팔' },
23
- { '7': '칠' },
24
- { '6': '육' },
25
- { '5': '오' },
26
- { '4': '사' },
27
- { '3': '삼' },
28
- { '2': '이' },
29
- { '1': '일' },
30
- { '0': '영' }
31
- ];
5
+ super({
6
+ negativeWord: '마이너스',
7
+ separatorWord: '',
8
+ zero: ''
9
+ },[
10
+ [10000000000000000000000000000n, '양'],
11
+ [1000000000000000000000000n, ''],
12
+ [100000000000000000000n, ''],
13
+ [10000000000000000n, ''],
14
+ [1000000000000n, ''],
15
+ [100000000n, ''],
16
+ [10000n, ''],
17
+ [1000n, ''],
18
+ [100n, ''],
19
+ [10n, ''],
20
+ [9n, ''],
21
+ [8n, ''],
22
+ [7n, ''],
23
+ [6n, ''],
24
+ [5n, ''],
25
+ [4n, ''],
26
+ [3n, ''],
27
+ [2n, ''],
28
+ [1n, ''],
29
+ [0n, '']
30
+ ]);
32
31
  }
33
32
 
34
33
  merge(lPair, rPair) {
@@ -43,6 +42,12 @@ export class N2WordsKO extends N2WordsBase {
43
42
  }
44
43
  }
45
44
 
46
- export default function(n) {
47
- return new N2WordsKO().floatToCardinal(n);
45
+ /**
46
+ * Converts a value to cardinal (written) form.
47
+ * @param {number|string} value Number to be convert.
48
+ * @throws {Error} Value cannot be invalid.
49
+ * @returns {string} Value in cardinal (written) format.
50
+ */
51
+ export default function(value) {
52
+ return new N2WordsKO().floatToCardinal(value);
48
53
  }
package/lib/i18n/LT.mjs CHANGED
@@ -1,70 +1,77 @@
1
1
  import {N2WordsRU} from './RU.mjs';
2
2
 
3
3
  export class N2WordsLT extends N2WordsRU {
4
- constructor() {
5
- super();
4
+ feminine = false;
5
+
6
+ ones = {
7
+ 1: 'vienas',
8
+ 2: 'du',
9
+ 3: 'trys',
10
+ 4: 'keturi',
11
+ 5: 'penki',
12
+ 6: 'šeši',
13
+ 7: 'septyni',
14
+ 8: 'aštuoni',
15
+ 9: 'devyni'
16
+ };
17
+
18
+ onesFeminine = {
19
+ 1: 'viena',
20
+ 2: 'dvi',
21
+ 3: 'trys',
22
+ 4: 'keturios',
23
+ 5: 'penkios',
24
+ 6: 'šešios',
25
+ 7: 'septynios',
26
+ 8: 'aštuonios',
27
+ 9: 'devynios'
28
+ };
29
+
30
+ tens = {
31
+ 0: 'dešimt',
32
+ 1: 'vienuolika',
33
+ 2: 'dvylika',
34
+ 3: 'trylika',
35
+ 4: 'keturiolika',
36
+ 5: 'penkiolika',
37
+ 6: 'šešiolika',
38
+ 7: 'septyniolika',
39
+ 8: 'aštuoniolika',
40
+ 9: 'devyniolika'
41
+ };
6
42
 
7
- this.negativeWord = 'minus';
8
- this.separatorWord = 'kablelis';
9
- this.feminine = false;
10
- this.zero = 'nulis';
11
- this.ones = {
12
- 1: 'vienas',
13
- 2: 'du',
14
- 3: 'trys',
15
- 4: 'keturi',
16
- 5: 'penki',
17
- 6: 'šeši',
18
- 7: 'septyni',
19
- 8: 'aštuoni',
20
- 9: 'devyni'
21
- };
22
- this.onesFeminine = {
23
- 1: 'viena',
24
- 2: 'dvi',
25
- 3: 'trys',
26
- 4: 'keturios',
27
- 5: 'penkios',
28
- 6: 'šešios',
29
- 7: 'septynios',
30
- 8: 'aštuonios',
31
- 9: 'devynios'
32
- };
33
- this.tens = {
34
- 0: 'dešimt',
35
- 1: 'vienuolika',
36
- 2: 'dvylika',
37
- 3: 'trylika',
38
- 4: 'keturiolika',
39
- 5: 'penkiolika',
40
- 6: 'šešiolika',
41
- 7: 'septyniolika',
42
- 8: 'aštuoniolika',
43
- 9: 'devyniolika'
44
- };
45
- this.twenties = {
46
- 2: 'dvidešimt',
47
- 3: 'trisdešimt',
48
- 4: 'keturiasdešimt',
49
- 5: 'penkiasdešimt',
50
- 6: 'šešiasdešimt',
51
- 7: 'septyniasdešimt',
52
- 8: 'aštuoniasdešimt',
53
- 9: 'devyniasdešimt'
54
- };
55
- this.hundreds = ['šimtas', 'šimtai'];
56
- this.thousands = {
57
- 1: ['tūkstantis', 'tūkstančiai', 'tūkstančių'],
58
- 2: ['milijonas', 'milijonai', 'milijonų'],
59
- 3: ['milijardas', 'milijardai', 'milijardų'],
60
- 4: ['trilijonas', 'trilijonai', 'trilijonų'],
61
- 5: ['kvadrilijonas', 'kvadrilijonai', 'kvadrilijonų'],
62
- 6: ['kvintilijonas', 'kvintilijonai', 'kvintilijonų'],
63
- 7: ['sikstilijonas', 'sikstilijonai', 'sikstilijonų'],
64
- 8: ['septilijonas', 'septilijonai', 'septilijonų'],
65
- 9: ['oktilijonas', 'oktilijonai', 'oktilijonų'],
66
- 10: ['naintilijonas', 'naintilijonai', 'naintilijonų'],
67
- };
43
+ twenties = {
44
+ 2: 'dvidešimt',
45
+ 3: 'trisdešimt',
46
+ 4: 'keturiasdešimt',
47
+ 5: 'penkiasdešimt',
48
+ 6: 'šešiasdešimt',
49
+ 7: 'septyniasdešimt',
50
+ 8: 'aštuoniasdešimt',
51
+ 9: 'devyniasdešimt'
52
+ };
53
+
54
+ hundreds = ['šimtas', 'šimtai'];
55
+
56
+ thousands = {
57
+ 1: ['tūkstantis', 'tūkstančiai', 'tūkstančių'],
58
+ 2: ['milijonas', 'milijonai', 'milijonų'],
59
+ 3: ['milijardas', 'milijardai', 'milijardų'],
60
+ 4: ['trilijonas', 'trilijonai', 'trilijonų'],
61
+ 5: ['kvadrilijonas', 'kvadrilijonai', 'kvadrilijonų'],
62
+ 6: ['kvintilijonas', 'kvintilijonai', 'kvintilijonų'],
63
+ 7: ['sikstilijonas', 'sikstilijonai', 'sikstilijonų'],
64
+ 8: ['septilijonas', 'septilijonai', 'septilijonų'],
65
+ 9: ['oktilijonas', 'oktilijonai', 'oktilijonų'],
66
+ 10: ['naintilijonas', 'naintilijonai', 'naintilijonų'],
67
+ };
68
+
69
+ constructor() {
70
+ super({
71
+ negativeWord: 'minus',
72
+ separatorWord: 'kablelis',
73
+ zero: 'nulis'
74
+ });
68
75
  }
69
76
 
70
77
  pluralize(n, forms) {
@@ -79,11 +86,11 @@ export class N2WordsLT extends N2WordsRU {
79
86
  }
80
87
 
81
88
  toCardinal(number) {
82
- if (parseInt(number) == 0) {
89
+ if (number == 0) {
83
90
  return this.zero;
84
91
  }
85
92
  const words = [];
86
- const chunks = this.splitByX(JSON.stringify(number), 3);
93
+ const chunks = this.splitByX(number.toString(), 3);
87
94
  let i = chunks.length;
88
95
  for (let j = 0; j < chunks.length; j++) {
89
96
  const x = chunks[j];
@@ -120,6 +127,12 @@ export class N2WordsLT extends N2WordsRU {
120
127
  }
121
128
  }
122
129
 
123
- export default function(n) {
124
- return new N2WordsLT().floatToCardinal(n);
130
+ /**
131
+ * Converts a value to cardinal (written) form.
132
+ * @param {number|string} value Number to be convert.
133
+ * @throws {Error} Value cannot be invalid.
134
+ * @returns {string} Value in cardinal (written) format.
135
+ */
136
+ export default function(value) {
137
+ return new N2WordsLT().floatToCardinal(value);
125
138
  }