Skip to content

Instantly share code, notes, and snippets.

@termi
Created October 21, 2013 09:55
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save termi/7081408 to your computer and use it in GitHub Desktop.
Save termi/7081408 to your computer and use it in GitHub Desktop.
Склонение существительных
/**
* Склонение существительных
* Правильная форма cуществительного рядом с числом (счетная форма).
*
* @example declension("файл", "файлов", "файла", 0);//returns "файлов"
* @example declension("файл", "файлов", "файла", 1);//returns "файл"
* @example declension("файл", "файлов", "файла", 2);//returns "файла"
*
* @param {string} oneNominative единственное число (именительный падеж)
* @param {string} severalGenitive множественное число (родительный падеж)
* @param {string} severalNominative множественное число (именительный падеж)
* @param {(string|number)} number количество
* @returns {string}
*/
function declension(oneNominative, severalGenitive, severalNominative, number) {
number = number % 100;
return (number <= 14 && number >= 11)
? severalGenitive
: (number %= 10) < 5
? number > 2
? severalNominative
: number === 1
? oneNominative
: number === 0
? severalGenitive
: severalNominative//number === 2
: severalGenitive
;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment