UNPKG

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