# encoding: utf-8
#
# Класс Склонятор, с метод для выбора нужной формы русских слов в соответствии с
# количеством. Взято из 9 урока.
#
# Версия после рефакторинга: добавлена опция, позволяющая вывести число вместе
# с правильной формой слова.
#
# (с) rubyrush.ru
class Sklonjator
  # В список параметров метода добавим ещё один параметр, причем запишем его
  # вместе с «дефолтным» значением — если метод будет вызван без этого
  # последнего параметра, то в него будет записано false.
  def self.sklonenie(number, one, few, many, with_number = false)
    number = 0 if number.nil? || !number.is_a?(Numeric)

    # Если попросили вывести форму слова с числом, запишем в переменную prefix
    # это число, иначе, оставим её пустой. Делаем мы это с помощью тернарного
    # оператора.
    #
    # a = (b == 0) ? 5 : 3
    #
    # Если b равно нулю, а будет равно 5, если нет — трем
    prefix = with_number ? "#{number} " : ''

    return prefix + many if (number % 100).between?(11, 14)

    word = case number % 10
           when 1 then one
           when 2..4 then few
           else
             many
           end

    prefix + word
  end
end
