Class: Lingo::Database::Source::MultiValue

Inherits:
Lingo::Database::Source show all
Defined in:
lib/lingo/database/source/multi_value.rb

Overview

– Abgeleitet von Source behandelt die Klasse Dateien mit dem Format MultiValue. Eine Zeile "Triumph;Sieg;Erfolg\n" wird gewandelt in [ nil, ['triumph', 'sieg', 'erfolg'] ]. Der Trenner zwischen Schlüssel und Projektion kann über den Parameter separator geändert werden. ++

Constant Summary collapse

DEFAULT_SEPARATOR =
';'.freeze

Constants inherited from Lingo::Database::Source

DEFAULT_DEF_WC, LEXICAL_SEPARATOR, MAX_LENGTH

Instance Attribute Summary

Attributes inherited from Lingo::Database::Source

#pos

Instance Method Summary collapse

Methods inherited from Lingo::Database::Source

#each, #each_dump, #each_lexical, #each_line, from_config, from_id, lexicals, #rejected, #size

Constructor Details

#initializeMultiValue

Returns a new instance of MultiValue.



43
44
45
46
# File 'lib/lingo/database/source/multi_value.rb', line 43

def initialize(*)
  super
  @pat = /^#{@wrd}(?:#{Regexp.escape(@sep)}#{@wrd})*$/
end

Instance Method Details

#dump_line(key, val, sep = @sep) ⇒ Object



57
58
59
# File 'lib/lingo/database/source/multi_value.rb', line 57

def dump_line(key, val, sep = @sep, *)
  val.map(&:form).join(sep)
end

#parse_line(line, key, val) ⇒ Object



53
54
55
# File 'lib/lingo/database/source/multi_value.rb', line 53

def parse_line(line, key, val)
  [nil, line.split(@sep).each(&:strip!)]
end

#set(db, key, val) ⇒ Object



48
49
50
51
# File 'lib/lingo/database/source/multi_value.rb', line 48

def set(db, key, val)
  values = val.map { |v| @def ? lexical(v, @def) : v }
  val.each { |v| db[v] = values }
end