class Lingo::Database::Source::MultiKey

Abgeleitet von Source behandelt die Klasse Dateien mit dem Format MultiKey. Eine Zeile "Triumph;Sieg;Erfolg\n" wird gewandelt in [ 'triumph', ['sieg', 'erfolg'] ]. Die Sonderbehandlung erfolgt in der Methode Lingo::Database#convert, wo daraus Schlüssel-Werte-Paare in der Form [ 'sieg', ['triumph'] ] und [ 'erfolg', ['triumph'] ] erzeugt werden. Der Trenner zwischen Schlüssel und Projektion kann über den Parameter separator geändert werden.

Public Class Methods

new(id, lingo) click to toggle source
# File lib/lingo/database/source/multi_key.rb, line 40
def initialize(id, lingo)
  super
  @pat = %r^#{@wrd}(?:#{Regexp.escape(@sep ||= ';')}#{@wrd})*$/
end

Public Instance Methods

set(db, key, val) click to toggle source
# File lib/lingo/database/source/multi_key.rb, line 45
def set(db, key, val)
  val.each { |v| db[v] = [key] }
end

Private Instance Methods

convert_line(line, key, val) click to toggle source
# File lib/lingo/database/source/multi_key.rb, line 51
def convert_line(line, key, val)
  values = line.split(@sep).each(&:strip!)
  [values.shift, values]
end