Class: Scaffolding::Parser::Csv

Inherits:
Base
  • Object
show all
Defined in:
lib/scaffolding/parser/csv.rb

Instance Method Summary collapse

Methods inherited from Base

#build_string, #clean_source_name, #col_seperator, #data_types, #errors, #file, #import_data, #initialize, #predict_row, #results, #save_row, #scaffold_rank, #source_name, #utf8_encode, #valid_data?, #web

Constructor Details

This class inherits a constructor from Scaffolding::Parser::Base

Instance Method Details

#groom_dataObject



5
6
7
8
# File 'lib/scaffolding/parser/csv.rb', line 5

def groom_data
  @headers = true
  setup_columns
end

#process_data(process_row) ⇒ Object



16
17
18
19
20
21
22
23
24
25
# File 'lib/scaffolding/parser/csv.rb', line 16

def process_data(process_row)
  CSV.parse(@data, headers: @headers, col_sep: @col_seperator, skip_blanks: true) do |row|
    @row_number += 1
    begin
      self.send(process_row, row.inject({}){|row,(k,v)| row[k.downcase.to_sym] = v; row})
    rescue => e
      @errors << "Unable to process row #{@row_number} Error: #{e}\n"
    end
  end
end

#setup_columnsObject



10
11
12
13
14
# File 'lib/scaffolding/parser/csv.rb', line 10

def setup_columns
  CSV.parse(@data, headers: @headers, col_sep: @col_seperator, skip_blanks: true).first.each do |column|
    @scaffolding[column[0].downcase.to_sym] = data_types
  end
end