Class: Scaffolding::Parser::Raw

Inherits:
Base
  • Object
show all
Defined in:
lib/scaffolding/parser/raw.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

#bad_dataObject



20
21
22
# File 'lib/scaffolding/parser/raw.rb', line 20

def bad_data
  @data.delete_if {|row| row.split(@col_seperator).count != @column_count }
end

#column_countObject



14
15
16
17
18
# File 'lib/scaffolding/parser/raw.rb', line 14

def column_count
  row_counts = []
  @data.map{ |row| row_counts << row.split(@col_seperator).count }
  row_counts.uniq.max_by{ |i| row_counts.count(i) }
end

#find_headersObject



24
25
26
27
28
# File 'lib/scaffolding/parser/raw.rb', line 24

def find_headers
  first_row = @data.map.first.split(@col_seperator)
  @headers = first_row.map{ |header| header.strip.downcase.gsub(/(\W|\d)/, "") }
  @data.shift
end

#groom_dataObject



5
6
7
8
9
10
11
12
# File 'lib/scaffolding/parser/raw.rb', line 5

def groom_data
  @data = @data.split("\n")
  @column_count = column_count
  bad_data
  find_headers
  setup_columns
  hashed_data
end

#hashed_dataObject



34
35
36
37
38
39
40
41
42
43
# File 'lib/scaffolding/parser/raw.rb', line 34

def hashed_data
  @data = @data.map do |row|
    fields  = row.split(@col_seperator)
    hash    = {}
    @headers.each_with_index do |header, index|
      hash[header] = fields[index].to_s.strip
    end
    hash
  end
end

#process_data(process_row) ⇒ Object



45
46
47
48
49
50
51
52
53
54
# File 'lib/scaffolding/parser/raw.rb', line 45

def process_data(process_row)
  @data.each do |row|
    @row_number += 1
    begin
      self.send(process_row, row)
    rescue => e
      @errors << "Unable to process row #{@row_number} Error: #{e}\n"
    end
  end
end

#setup_columnsObject



30
31
32
# File 'lib/scaffolding/parser/raw.rb', line 30

def setup_columns
  @headers.each{ |column| @scaffolding[column.to_sym] = data_types }
end