Module: MorpherInflect

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

Defined Under Namespace

Classes: Inflection

Constant Summary collapse

INFLECTIONS_COUNT =

Число доступных вариантов склонений

6
VERSION =
'0.0.2'
@@cache =

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

{}

Class Method Summary collapse

Class Method Details

.clear_cacheObject

Очистить кеш



62
63
64
# File 'lib/morpher_inflect.rb', line 62

def self.clear_cache
  @@cache.clear
end

.inflections(word) ⇒ Object

Возвращает массив склонений (размером INFLECTIONS_COUNT) для слова word.

Если слово не найдено в словаре, будет возвращен массив размерностью INFLECTIONS_COUNT, заполненный этим словом.



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/morpher_inflect.rb', line 34

def self.inflections(word)
  inflections = []
  
  lookup = cache_lookup(word) 
  return lookup if lookup
  
  get = Inflection.new.get(word) rescue nil # если поднято исключение, переходим к третьему варианту и не кешируем
  case get
    when Array
      # Морфер вернул массив склонений
      inflections = [word] + get
      # Кладем в кеш
      cache_store(word, inflections)
    when String
      # Морфер вернул не массив склонений (слово не найдено в словаре),
      # а только строку. Скорее всего это ошибка. Забиваем оригинальным словом
      inflections.fill(word, 0..INFLECTIONS_COUNT-1)
      # Кладем в кеш
      cache_store(word, inflections)
    else
      # Забиваем варианты склонений оригиналом
      inflections.fill(word, 0..INFLECTIONS_COUNT-1)
  end
 
  inflections
end