1 | Helps you to decline words in **Russian**, **Ukrainian** and **English** languages.
|
2 |
|
3 | ## Installation
|
4 | `decline-word` is available via npm:
|
5 | ``` bash
|
6 | $ npm i decline-word
|
7 | ```
|
8 |
|
9 | ## Usage
|
10 | ### For Russian and Ukrainian languages:
|
11 | 1st parameter: **amount** of item(s)\
|
12 | 2nd: **main** part of the word (unchangeable for each form)\
|
13 | 3rd (optional, default = `''`): word ending for **1 item**\
|
14 | 4th (optional, default = `''`): word ending for **2 items**\
|
15 | 5th (optional, default = `''`): word ending for **5 items**
|
16 | ``` js
|
17 | const declineWord = require('decline-word');
|
18 |
|
19 | console.log(`12 ${declineWord(12, 'яблок', 'о', 'а')}`); // 12 яблок
|
20 | console.log(`22 ${declineWord(22, 'яблок', 'о', 'а')}`); // 22 яблока
|
21 | console.log(`159 ${declineWord(159, 'яблок', 'о', 'а')}`); // 159 яблок
|
22 | console.log(`1151 ${declineWord(1151, 'яблок', 'о', 'а')}`); // 1151 яблоко
|
23 |
|
24 | console.log(`1 ${declineWord(1, 'апельсин', '', 'и', 'ів')}`); // 1 апельсин
|
25 | console.log(`11 ${declineWord(11, 'апельсин', '', 'и', 'ів')}`); // 11 апельсинів
|
26 | console.log(`84 ${declineWord(84, 'апельсин', '', 'и', 'ів')}`); // 84 апельсини
|
27 | console.log(`147 ${declineWord(147, 'апельсин', '', 'и', 'ів')}`); // 147 апельсинів
|
28 | ```
|
29 |
|
30 | ### For English language:
|
31 | There are some differences of default parameter values comparing with the Russian and Ukrainian languages.\
|
32 | 1st parameter: **amount** of item(s)\
|
33 | 2nd: **main** part of the word (unchangeable for each form)\
|
34 | 3rd (optional, default = `''`): word ending for **1 item**\
|
35 | 4th (optional, default = `'s'`): word ending for **2 items**\
|
36 | 5th (optional, default = `<4th parameter>`): word ending for **5 items**\
|
37 | That difference is made for more convenience using with English words.
|
38 | ``` js
|
39 | const declineWord = require('decline-word');
|
40 |
|
41 | console.log(`1 ${declineWord(1, 'door')}`); // 1 door
|
42 | console.log(`10 ${declineWord(10, 'door')}`); // 10 doors
|
43 |
|
44 | console.log(`11 ${declineWord(11, 'hero', '', 'es')}`); // 11 heroes
|
45 | console.log(`21 ${declineWord(21, 'hero', '', 'es')}`); // 21 hero
|
46 |
|
47 | console.log(`5 ${declineWord(5, 'cand', 'y', 'ies')}`); // 5 candies
|
48 | console.log(`101 ${declineWord(101, 'cand', 'y', 'ies')}`); // 101 candy
|
49 |
|
50 | // declineWord(31, 't', 'ooth', 'eeth') or...
|
51 | console.log(`31 ${declineWord(31, '', 'tooth', 'teeth')}`); // 31 tooth
|
52 | console.log(`32 ${declineWord(32, '', 'tooth', 'teeth')}`); // 32 teeth
|
53 | ```
|
54 |
|
55 | ## Advanced usage
|
56 | ``` js
|
57 | const declineWord = require('decline-word');
|
58 |
|
59 | const declineWrapper = (...args) => n => declineWord(n, ...args);
|
60 |
|
61 | const declApples = declineWrapper('яблок', 'о', 'а');
|
62 | const declOranges = declineWrapper('апельсин', '', 'а', 'ов');
|
63 | const declPears = declineWrapper('груш', 'а', 'и');
|
64 |
|
65 | for(let i = 0; i <= 6; i++) {
|
66 | console.log(`${i} ${declApples(i)} | ${i} ${declOranges(i)} | ${i} ${declPears(i)}`);
|
67 | }
|
68 |
|
69 | /*
|
70 | 1st iteration: '0 яблок | 0 апельсинов | 0 груш'
|
71 | 2nd iteration: '1 яблоко | 1 апельсин | 1 груша'
|
72 | 3rd iteration: '2 яблока | 2 апельсина | 2 груши'
|
73 | 4th iteration: '3 яблока | 3 апельсина | 3 груши'
|
74 | 5th iteration: '4 яблока | 4 апельсина | 4 груши'
|
75 | 6th iteration: '5 яблок | 5 апельсинов | 5 груш'
|
76 | 7th iteration: '6 яблок | 6 апельсинов | 6 груш'
|
77 | */
|
78 | ```
|
79 |
|
80 | ### Declination of cases:
|
81 | ``` js
|
82 | const declineWord = require('decline-word');
|
83 |
|
84 | const declineWrapper = (...args) => n => declineWord(n, ...args);
|
85 |
|
86 | // Nominative case, именительный падеж, називний відмінок
|
87 | const nomCase = declineWrapper('падеж', '', 'а', 'ей');
|
88 | console.log('один', nomCase(1)); // один падеж
|
89 | console.log('два', nomCase(2)); // два падежа
|
90 | console.log('пять', nomCase(5)); // пять падежей
|
91 |
|
92 | // Genitive case, родительный падеж, родовий відмінок
|
93 | const genCase = declineWrapper('падеж', 'а', 'ей', 'ей');
|
94 | console.log('одного', genCase(1)); // одного падежа
|
95 | console.log('двух', genCase(2)); // двух падежей
|
96 | console.log('пяти', genCase(5)); // пяти падежей
|
97 |
|
98 | // Dative case, дательный падеж, давальний відмінок
|
99 | const datCase = declineWrapper('падеж', 'у', 'ам', 'ам');
|
100 | console.log('одному', datCase(1)); // одному падежу
|
101 | console.log('двум', datCase(2)); // двум падежам
|
102 | console.log('пяти', datCase(5)); // пяти падежам
|
103 |
|
104 | // Accusative case, винительный падеж, знахідний відмінок
|
105 | const accCase = declineWrapper('падеж', '', 'а', 'ей');
|
106 | console.log('один', accCase(1)); // один падеж
|
107 | console.log('два', accCase(2)); // два падежа
|
108 | console.log('пять', accCase(5)); // пять падежей
|
109 |
|
110 | // Instrumental case, творительный падеж, орудний відмінок
|
111 | const insCase = declineWrapper('падеж', 'ом', 'ами', 'ами');
|
112 | console.log('одним', insCase(1)); // одним падежом
|
113 | console.log('двумя', insCase(2)); // двумя падежами
|
114 | console.log('пятью', insCase(5)); // пятью падежами
|
115 |
|
116 | // Prepositional case, предложный падеж, місцевий відмінок
|
117 | const prepCase = declineWrapper('падеж', 'е', 'ах', 'ах');
|
118 | console.log('на одном', prepCase(1)); // на одном падеже
|
119 | console.log('на двух', prepCase(2)); // на двух падежах
|
120 | console.log('на пяти', prepCase(5)); // на пяти падежах
|
121 | ```
|
122 |
|
123 | ## Testing
|
124 | ``` bash
|
125 | $ npm test
|
126 | ```
|
127 |
|
128 | Your improve suggestions and bug reports are welcome any time.
|