Раз уж пошла такая пьянка (смотрите предыдущий пост на rubyflow), то мы решили представить и свою, похожую разработку - гем petrovich.
Пример использования:
# Указание пола снижает количество отказов
p = Petrovich.new(:male)
p.lastname('Иванов', :dative) # => Иванову
p.firstname('Пётр', :dative) # => Петру
p.middlename('Сергеевич', :dative) # => Сергеевичу
Так же можно подмешать специальный миксин в любой класс, который создаст методы для склонения по падежам, на основе существующих методов. Эти методы вы указываете при помощи простого DSL. Выглядит это так:
class User < ActiveRecord::Base
include Petrovich::Extension
petrovich :firstname => :my_firstname,
:middlename => :my_middlename,
:lastname => :my_lastname,
:gender => :my_gender
def my_firstname
'Пётр'
end
def my_middlename
'Петрович'
end
def my_lastname
'Петренко'
end
# Если пол не был указан, используется автоматическое определение
# пола на основе отчества. Если отчество также не было указано,
# пытаемся определить правильное склонение на основе файла правил.
def my_gender
:male # :male, :female или :both
end
end
А используется следующим образом:
# Получаем имя в дательном падеже
user = User.new
user.my_firstname # => Пётр
user.my_firstname_dative # => Петру
user.my_middlename_dative # => Петровичу
user.my_lastname_dative # => Петренко
Надеемся, petrovich вам пригодится.
Все-таки 1.9.3-p429, а не 2.0.0...