class Mongokit::CsvIO
Attributes
column_mapping[R]
columns[R]
csv[R]
options[R]
Public Class Methods
new(operation, file, columns, options = {})
click to toggle source
# File lib/mongokit/csv_transformer/csv_io.rb, line 11 def initialize(operation, file, columns, options = {}) @options = options @column_mapping = build_column_mapping(columns) @columns = @column_mapping.keys.map(&:to_sym) if operation == :write @csv = CSV.open(file, 'wb') write_headers else @csv = CSV.open(file) @csv.readline if options[:headers] end end
Public Instance Methods
build_column_mapping(columns)
click to toggle source
# File lib/mongokit/csv_transformer/csv_io.rb, line 25 def build_column_mapping(columns) if columns.is_a?(Array) columns.zip((0..columns.length).to_a).to_h.reject{|k| k.nil? } else columns.sort_by{|_, pos| pos }.to_h end end
to_attrs(row, block)
click to toggle source
# File lib/mongokit/csv_transformer/csv_io.rb, line 43 def to_attrs(row, block) attrs = column_mapping.inject({}) do |r, (f, pos)| r[f] = row[pos] r end if block return false if block.call(row, attrs) == false end attrs end
to_row(record, block)
click to toggle source
# File lib/mongokit/csv_transformer/csv_io.rb, line 56 def to_row(record, block) row = CSV::Row.new(columns, columns.map {|f| record[f] }) if block return false if block.call(row, record) == false end row end
write_headers()
click to toggle source
# File lib/mongokit/csv_transformer/csv_io.rb, line 33 def write_headers return if options[:headers].nil? if options[:headers] === true csv << column_mapping.map { |f, _| f.to_s.titleize } else csv << options[:headers] end end