Die Klasse Word bündelt spezifische Eigenschaften eines Wortes mit den dazu notwendigen Methoden.
Exakte Representation der originären Zeichenkette, so wie sie im Satz
gefunden wurde, z.B. form = "RubyLing"
Ergebnis der Wörterbuch-Suche. Sie stellt die Grundform des Wortes dar.
Dabei kann es mehrere mögliche Grundformen geben, z.B. kann
abgeschoben als Grundform das Adjektiv
abgeschoben sein, oder aber das Verb
abschieben.
lemma = [['abgeschoben', '#a'], ['abschieben', '#v']].
Achtung: Lemma wird nicht durch die Word-Klasse bestückt, sondern extern durch die Klasse Dictionary
# File lib/lingo/language/word.rb, line 60 def initialize(form, attr = WA_UNSET) super @lexicals = [] end
# File lib/lingo/language/word.rb, line 41 def new_lexical(form, attr, lex_attr) new_lexicals(form, attr, Lexical.new(form, lex_attr)) end
# File lib/lingo/language/word.rb, line 37 def new_lexicals(form, attr, lex) new(form, attr) << lex end
# File lib/lingo/language/word.rb, line 126 def <<(*other) lexicals.concat(other.tap(&:flatten!)) self end
# File lib/lingo/language/word.rb, line 131 def <=>(other) other.nil? ? 1 : to_a.push(lexicals) <=> other.to_a.push(other.lexicals) end
# File lib/lingo/language/word.rb, line 81 def add_lexicals(lex) @lexicals.concat(lex) @lexicals.sort! @lexicals.uniq! self end
# File lib/lingo/language/word.rb, line 90 def attrs(compound_parts = true) lexicals(compound_parts).map(&:attr) end
# File lib/lingo/language/word.rb, line 118 def compo_form get_class(LA_COMPOUND).first if attr == WA_COMPOUND end
# File lib/lingo/language/word.rb, line 122 def full_compound? attr == WA_COMPOUND && get_class('x+').empty? end
Gibt genau die Grundform der Wortklasse zurück, die der RegExp des
Übergabe-Parameters entspricht, z.B. word.get_wc(/a/) =
['abgeschoben', '#a']
# File lib/lingo/language/word.rb, line 104 def get_class(wc_re) wc_re = Regexp.new(wc_re) unless wc_re.is_a?(Regexp) unless lexicals.empty? lexicals.select { |lex| lex.attr =~ wc_re } else attr =~ wc_re ? [self] : [] end end
# File lib/lingo/language/word.rb, line 65 def lexicals(compound_parts = true) if !compound_parts && attr == WA_COMPOUND @lexicals.select { |lex| lex.attr == LA_COMPOUND } else @lexicals end end
# File lib/lingo/language/word.rb, line 73 def lexicals=(lex) if lex.is_a?(Array) @lexicals = lex.sort.uniq else raise TypeError, "wrong argument type #{lex.class} (expected Array)" end end
# File lib/lingo/language/word.rb, line 98 def min_part_size form.length end
# File lib/lingo/language/word.rb, line 114 def norm identified? ? lexicals.first.form : form end
# File lib/lingo/language/word.rb, line 94 def parts 1 end
# File lib/lingo/language/word.rb, line 135 def to_s s = "<#{form}" s << "|#{attr}" unless identified? s << " = #{lexicals.inspect}" unless lexicals.empty? s << '>' end