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