Class: Lingo::Language::LexicalHash

Inherits:
Object
  • Object
show all
Defined in:
lib/lingo/language/lexical_hash.rb

Overview

– Die Klasse LexicalHash ermöglicht den Zugriff auf die Lingodatenbanken. Im Gegensatz zur Klasse Database, welche nur Strings als Ergebnis zurück gibt, wird hier als Ergebnis ein Array von Lexical-Objekten zurück gegeben. ++

Constant Summary

KEY_REF_RE =
%r{\A#{Regexp.escape(Database::KEY_REF)}(\d+)\z}o

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(id, lingo) ⇒ LexicalHash

Returns a new instance of LexicalHash



47
48
49
# File 'lib/lingo/language/lexical_hash.rb', line 47

def initialize(id, lingo)
  @src = Database.open(id, lingo)
end

Class Method Details

.open(*args) ⇒ Object



41
42
43
44
45
# File 'lib/lingo/language/lexical_hash.rb', line 41

def self.open(*args)
  yield lexical_hash = new(*args)
ensure
  lexical_hash.close if lexical_hash
end

Instance Method Details

#[](key) ⇒ Object



55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/lingo/language/lexical_hash.rb', line 55

def [](key)
  rec = @src[Unicode.downcase(key)] or return

  res = rec.map { |str|
    str =~ KEY_REF_RE ? $1.to_i : begin
      k, *w = str.split('#')
      Lexical.new(k.strip, w)
    end
  }

  res.uniq!
  res
end

#closeObject



51
52
53
# File 'lib/lingo/language/lexical_hash.rb', line 51

def close
  @src.close
end