

decline-word@1.4.0
Helps you to inflect words of Russian, Ukrainian and English languages.
It may work for some other languages, who knows.
Installation
decline-word
is available via NPM:
$ npm i decline-word@1.4.0
Usage
For Russian and Ukrainian languages:
1st | true | | amount of items |
2nd | true | | main part of the word (unchangeable beginning of each form) |
3rd | false | '' | word ending for 1 item |
4th | false | '' | word ending for 2 items |
5th | false | '' | word ending for 5 items |
import declineWord from 'decline-word';
console.log(`12 ${declineWord(12, 'яблок', 'о', 'а')}`);
console.log(`22 ${declineWord(22, 'яблок', 'о', 'а')}`);
console.log(`159 ${declineWord(159, 'яблок', 'о', 'а')}`);
console.log(`1151 ${declineWord(1151, 'яблок', 'о', 'а')}`);
console.log(`1 ${declineWord(1, 'апельсин', '', 'и', 'ів')}`);
console.log(`11 ${declineWord(11, 'апельсин', '', 'и', 'ів')}`);
console.log(`84 ${declineWord(84, 'апельсин', '', 'и', 'ів')}`);
console.log(`147 ${declineWord(147, 'апельсин', '', 'и', 'ів')}`);
console.log(`0 ${declineWord(0, '', 'гра', 'гри', 'ігор')}`);
console.log(`1 ${declineWord(1, '', 'гра', 'гри', 'ігор')}`);
console.log(`4 ${declineWord(4, '', 'гра', 'гри', 'ігор')}`);
console.log(`25 ${declineWord(25, '', 'гра', 'гри', 'ігор')}`);
For English language:
There are some differences of parameter default values comparing to Russian and Ukrainian languages.
1st | true | | amount of items |
2nd | true | | main part of the word (unchangeable beginning of each form) |
3rd | false | '' | word ending for 1 item |
4th | false | 's' | word ending for 2 items |
5th | false | <4th parameter> | word ending for 5 items |
This difference makes more convenience for using English words.
Note: decline-word
declines English words incorrect according to language rules. Just because of if not equal to one
is very simple check algorithm (and I'm too lazy to change already made one) this package declines them according to Russian/Ukrainian language rules. Do not use decline-word
for English language if you want to decline words correctly.
import declineWord from 'decline-word';
console.log(`1 ${declineWord(1, 'door')}`);
console.log(`10 ${declineWord(10, 'door')}`);
console.log(`11 ${declineWord(11, 'hero', '', 'es')}`);
console.log(`21 ${declineWord(21, 'hero', '', 'es')}`);
console.log(`5 ${declineWord(5, 'cand', 'y', 'ies')}`);
console.log(`101 ${declineWord(101, 'cand', 'y', 'ies')}`);
console.log(`31 ${declineWord(31, '', 'tooth', 'teeth')}`);
console.log(`32 ${declineWord(32, '', 'tooth', 'teeth')}`);
Advanced usage
import { declineWrapper } from 'decline-word';
const declApples = declineWrapper('яблок', 'о', 'а');
const declOranges = declineWrapper('апельсин', '', 'а', 'ов');
const declPears = declineWrapper('груш', 'а', 'и');
for(let i = 0; i <= 6; i++) {
console.log(`${i} ${declApples(i)} | ${i} ${declOranges(i)} | ${i} ${declPears(i)}`);
}
Declination of cases:
import { declineWrapper } from 'decline-word';
const nomCase = declineWrapper('падеж', '', 'а', 'ей');
console.log('один', nomCase(1));
console.log('два', nomCase(2));
console.log('пять', nomCase(5));
const genCase = declineWrapper('падеж', 'а', 'ей', 'ей');
console.log('одного', genCase(1));
console.log('двух', genCase(2));
console.log('пяти', genCase(5));
const datCase = declineWrapper('падеж', 'у', 'ам', 'ам');
console.log('одному', datCase(1));
console.log('двум', datCase(2));
console.log('пяти', datCase(5));
const accCase = declineWrapper('падеж', '', 'а', 'ей');
console.log('один', accCase(1));
console.log('два', accCase(2));
console.log('пять', accCase(5));
const insCase = declineWrapper('падеж', 'ом', 'ами', 'ами');
console.log('одним', insCase(1));
console.log('двумя', insCase(2));
console.log('пятью', insCase(5));
const prepCase = declineWrapper('падеж', 'е', 'ах', 'ах');
console.log('на одном', prepCase(1));
console.log('на двух', prepCase(2));
console.log('на пяти', prepCase(5));
Testing
$ npm test
See also
Your improve suggestions and bug reports are welcome any time.