Class: Morphy::Word

Inherits:
Object
  • Object
show all
Defined in:
lib/morphy.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(word, para_id, index) ⇒ Word

Returns a new instance of Word.



7
8
9
10
11
12
13
14
15
# File 'lib/morphy.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

Instance Attribute Details

#para_idObject

Returns the value of attribute para_id.



5
6
7
# File 'lib/morphy.rb', line 5

def para_id
  @para_id
end

Instance Method Details

#grammemesObject



27
28
29
# File 'lib/morphy.rb', line 27

def grammemes
  Morphy.grammemes[@grammeme_id]      
end

#inflect(grammemes) ⇒ Object



57
58
59
60
61
62
63
# File 'lib/morphy.rb', line 57

def inflect(grammemes)
  words = lexemme
  words.each do |word|
    return word if word.grammemes.last(grammemes.length) == grammemes
  end
  nil
end

#lexemmeObject



48
49
50
51
52
53
54
55
# File 'lib/morphy.rb', line 48

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_formObject



21
22
23
24
25
26
# File 'lib/morphy.rb', line 21

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) ⇒ Boolean

Returns:

  • (Boolean)


40
41
42
# File 'lib/morphy.rb', line 40

def same_paradigm?(other)
  @para_id == other.para_id      
end

#stemObject



30
31
32
33
34
35
36
37
38
# File 'lib/morphy.rb', line 30

def stem
  prefix = Morphy.prefixes[Morphy.paradigms[@para_id][0]]
  suffix = Morphy.suffixes[Morphy.paradigms[@para_id][1]]
  grammeme = Morphy.grammemes[Morphy.paradigms[@para_id][2]]
  word = @word.dup
  word.sub!(Morphy.prefixes[@prefix_id],"")
  word = word.reverse.sub(Morphy.suffixes[@suffix_id],"").reverse
  word
end

#tagObject



44
45
46
# File 'lib/morphy.rb', line 44

def tag
  Morphy.grammemes[@grammeme_id].join(",") 
end

#to_sObject



17
18
19
# File 'lib/morphy.rb', line 17

def to_s
  @word      
end