Module: Itiel::Lookup::HashLookup
- Included in:
- CSVFile, DatabaseTable
- Defined in:
- lib/itiel/lookup/hash_lookup.rb
Instance Attribute Summary collapse
-
#joined_columns ⇒ Object
Returns the value of attribute joined_columns.
-
#lookup_columns ⇒ Object
Returns the value of attribute lookup_columns.
Instance Method Summary collapse
- #empty_joined_columns ⇒ Object
- #lookup!(input_stream) ⇒ Object
- #lookup_source ⇒ Object
- #lookup_stream ⇒ Object
Instance Attribute Details
#joined_columns ⇒ Object
Returns the value of attribute joined_columns.
4 5 6 |
# File 'lib/itiel/lookup/hash_lookup.rb', line 4 def joined_columns @joined_columns end |
#lookup_columns ⇒ Object
Returns the value of attribute lookup_columns.
4 5 6 |
# File 'lib/itiel/lookup/hash_lookup.rb', line 4 def lookup_columns @lookup_columns end |
Instance Method Details
#empty_joined_columns ⇒ Object
26 27 28 |
# File 'lib/itiel/lookup/hash_lookup.rb', line 26 def empty_joined_columns joined_columns.inject({}) {|m,h| m[h[1].to_sym] = nil; m } end |
#lookup!(input_stream) ⇒ Object
6 7 8 9 10 11 12 |
# File 'lib/itiel/lookup/hash_lookup.rb', line 6 def lookup!(input_stream) input_stream.collect do |row| origin_column = lookup_columns.first[0].to_sym merge_data = lookup_stream[row[origin_column]] || empty_joined_columns #{ origin_column => nil } row.merge!(merge_data) end end |
#lookup_source ⇒ Object
30 31 32 |
# File 'lib/itiel/lookup/hash_lookup.rb', line 30 def lookup_source raise 'lookup_source is not implemented' end |
#lookup_stream ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/itiel/lookup/hash_lookup.rb', line 14 def lookup_stream @lookup ||= lookup_source.inject({}) do |memory, row| clean_row = {} joined_columns.each do |original, target| clean_row[target.to_sym] = row[original.to_sym] end memory[row[lookup_columns.first[1].to_sym]] = clean_row memory end end |