class Morphy::Word

Attributes

para_id[RW]

Public Class Methods

new(word, para_id, index) click to toggle source
# File lib/word.rb, line 7
def initialize(word, para_id, index)
  @word = word
  @para_id = para_id.to_i
  @index = index.to_i
  @prefix_id = ::Morphy.paradigms[@para_id][@index * 3]
  @suffix_id = ::Morphy.paradigms[@para_id][@index * 3 + 1]
  @grammeme_id = ::Morphy.paradigms[@para_id][@index * 3 + 2]
end

Public Instance Methods

grammemes() click to toggle source
# File lib/word.rb, line 26
def grammemes
  ::Morphy.grammemes[@grammeme_id]
end
inflect(grammemes) click to toggle source
# File lib/word.rb, line 54
def inflect(grammemes)
  words = lexemme
  words.each do |word|
    return word if (word.grammemes & grammemes).length == grammemes.length
  end
  nil
end
inspect() click to toggle source
# File lib/word.rb, line 62
def inspect
  @word
end
lexemme() click to toggle source
# File lib/word.rb, line 45
def lexemme
  (0..(::Morphy.paradigms[@para_id].length / 3) - 1).map do |index|
    prefix = ::Morphy.prefixes[::Morphy.paradigms[@para_id][index * 3]]
    suffix = ::Morphy.suffixes[::Morphy.paradigms[@para_id][index * 3 + 1]]
    grammeme = ::Morphy.grammemes[::Morphy.paradigms[@para_id][index * 3 + 2]]
    Word.new(prefix + stem + suffix, @para_id, index)
  end
end
normal_form() click to toggle source
# File lib/word.rb, line 20
def normal_form
  prefix = ::Morphy.prefixes[::Morphy.paradigms[@para_id][0]]
  suffix = ::Morphy.suffixes[::Morphy.paradigms[@para_id][1]]
  "#{prefix}#{stem}#{suffix}"
end
same_paradigm?(other) click to toggle source
# File lib/word.rb, line 37
def same_paradigm?(other)
  @para_id == other.para_id
end
stem() click to toggle source
# File lib/word.rb, line 30
def stem
  word = @word.dup
  word.sub!(::Morphy.prefixes[@prefix_id], '')
  word = word.reverse.sub(::Morphy.suffixes[@suffix_id].reverse, '').reverse
  word
end
tag() click to toggle source
# File lib/word.rb, line 41
def tag
  ::Morphy.grammemes[@grammeme_id].join(',')
end
to_s() click to toggle source
# File lib/word.rb, line 16
def to_s
  @word
end