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.
# File lib/lingo/database/source/multi_key.rb, line 40 def initialize(id, lingo) super @pat = %r^#{@wrd}(?:#{Regexp.escape(@sep ||= ';')}#{@wrd})*$/ end
# File lib/lingo/database/source/multi_key.rb, line 45 def set(db, key, val) val.each { |v| db[v] = [key] } end
# 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