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

- (LexicalHash) initialize(id, lingo)



45
46
47
# File 'lib/lingo/language/lexical_hash.rb', line 45

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

Class Method Details

+ (Object) open(*args)



39
40
41
42
43
# File 'lib/lingo/language/lexical_hash.rb', line 39

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

Instance Method Details

- (Object) [](key)



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

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

- (Object) close



49
50
51
# File 'lib/lingo/language/lexical_hash.rb', line 49

def close
  @src.close
end