Module: MorpherInflecter

Defined in:
lib/morpher_inflecter.rb,
lib/morpher_inflecter/version.rb

Defined Under Namespace

Classes: Inflection

Constant Summary collapse

URL =
'https://ws3.morpher.ru/russian/declension'.freeze
CASES =

Падежи

%w(И Р Д В Т П)
ERROR_CODES =
{
   "1"  => ["402", "Превышен лимит на количество запросов в сутки. Перейдите на следующий тарифный план."],
   "3"  => ["403", "IP заблокирован."],
   "4"  => ["495", "Склонение числительных в declension не поддерживается. Используйте метод spell."],
   "5"  => ["496", "Не найдено русских слов."],
   "6"  => ["400", "Не указан обязательный параметр s."],
   "7"  => ["402", "Необходимо оплатить услугу."],
   "9"  => ["498", "Данный token не найден."],
   "10" => ["497", "Неверный формат токена."],
   "11" => ["500", "Ошибка сервера."],
   "12" => ["494", "Указаны неправильные флаги."]
}
VERSION =
"0.0.4"
@@cache =

Кеширование успешных результатов запроса к веб-сервису

{}

Class Method Summary collapse

Class Method Details

.clear_cacheObject

Очистить кеш



86
87
88
# File 'lib/morpher_inflecter.rb', line 86

def self.clear_cache
  @@cache.clear
end

.inflections(word, options = {}) ⇒ Object

Возвращает хэш склонений в следуюшем формате => [], :plural => [] Если слово не найдено в словаре или произошла ошибка, будет возвращен код ошибки { error: “XXX”, code: “Y”, message: ‘error message’ }



53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/morpher_inflecter.rb', line 53

def self.inflections(word, options = {})

  lookup = cache_lookup(word)
  return lookup if lookup
  resp = Inflection.new.get(word, options[:token])
  inflections = {}

  if resp[:error]
    inflections = resp
  else
    plural_only = resp['множественное'].nil?

    inflections[:singular] = [] unless plural_only
    inflections[:plural] = []

    CASES.each do |_case|
      i = _case == 'И' ? word : resp[_case]

      if plural_only
        inflections[:plural] << i
      else
        inflections[:singular] << i
        inflections[:plural] << resp['множественное'][_case]
      end
    end

    cache_store(word, inflections)
  end

  inflections
end