Skip to content

Instantly share code, notes, and snippets.

@termi
Created October 21, 2013 09:55
Show Gist options
  • Select an option

  • Save termi/7081408 to your computer and use it in GitHub Desktop.

Select an option

Save termi/7081408 to your computer and use it in GitHub Desktop.

Revisions

  1. termi created this gist Oct 21, 2013.
    30 changes: 30 additions & 0 deletions declension.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,30 @@
    /**
    * Склонение существительных
    * Правильная форма 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
    ;
    };