rseed 1.0.15 → 1.0.16

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZmMyMDk3YjZjZWEzNzdkNGU4OTdhNDU4ODFlYzE3MmQ4ZmJjNGMyYg==
4
+ Zjg1NmMzYWRkZWYxMzgzMTNkNjE2NWU3ZDk0ZGRlNWFjMDg1YmY5OA==
5
5
  data.tar.gz: !binary |-
6
- ZTMzYzVlM2NmYjMxOTk5Mjc0YWNlNmUxMjc0NzIzZDc2ZDFkNmUwYQ==
6
+ NjAyZWQ4ODkzYzBjMmQzMWQ4Njk2MDZhNzUwMWEzN2ZlMjUwMTYyNw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- M2MxYjc2ZTQ5MTVhZjQ3MjU4YTJlMDAzMzk0MWE3ZjA1MzJlZDc5MWY3OTNj
10
- NmRkNGMzNGQzNTZjMGY5NTU4NzQ3MWNlNjIyOTI2ZWFhMzBiNjgwODFmNjg3
11
- YTUwZmI3ZjAwNjFiZjIyM2E3ODBkODNlMDRiMjI0MjYzNTg0YjE=
9
+ NTdkYTk3ZmU2NTI5MmRlNzY5MTZiYmI2OGQyZDlkMDBhNzEzMjg3NGQwMWFh
10
+ MGIyMzlhMjdjZDljYTc4MTFjMDc5NjAyNGM0M2RlMGU0Yjc4NDBjNGVhNDZj
11
+ YTIyZDFhMTQ5N2E3Yzg3YzhlODg4YmFmZThhZDRkODc2MzExNmM=
12
12
  data.tar.gz: !binary |-
13
- ODJkNTAxMTRkMDJmYWQ2YzhiOTE4NDY4OTY1OGY3YjFjZmE0MGQ2YzYyODEx
14
- Yjk4ZjJlNWFmMmNiNDc0NWU2OTFhYjViNzI2ZmFiMzhlOGY4NTM4ODBhNjMw
15
- OTgwODQzOWVmNmEwZWQxYWQ5YWQ0OWQ1YzBkZDk0OGIwMTdiMGI=
13
+ MjVlNjQ0MjRhMjJjOTM3NGU4NzAzYjU3MDM2YTg2MjUxYTA1MzhmNWJhZmJm
14
+ OWJhZmU5YmYzNzZlMTFhNjkwNmIzNmMzNmFhZmY1ZTYyYjQzM2Q3NzI0Njcy
15
+ YWY2ZTBmNzI1ODZiM2MyMzFmNmNkNTNjOWU5OGM2NzQwY2U5YWI=
@@ -7,36 +7,56 @@ module Rseed
7
7
  def preprocess
8
8
  return false unless file
9
9
  logger.info "Preprocessing CSV file: #{file.to_s.yellow}"
10
- @estimated_rows = CSV.read(file).length - 1
10
+ @estimated_rows = CSV.read(file).length
11
+ @estimated_rows -=1 unless options[:headers]
11
12
  logger.info "Estimated Rows: #{@estimated_rows}".magenta
12
13
  true
13
14
  end
14
15
 
16
+ def match_headers input
17
+ headers = {}
18
+
19
+ input.each_with_index do |column_value, index|
20
+ column = index + 1
21
+ converter_attributes.each do |attribute|
22
+ if attribute.matches? column_value.strip
23
+ logger.debug "Found header for #{attribute.name} at column #{column}".green
24
+ if (headers[attribute.name].nil?)
25
+ headers[attribute.name] = column
26
+ else
27
+ logger.error "Found duplicate header '#{attribute.name}' on columns #{column} and #{headers[attribute.name]}.".red
28
+ end
29
+ end
30
+ end
31
+ end
32
+
33
+ return headers
34
+ end
35
+
15
36
  def process &block
37
+ self.options = self.options.to_hash.symbolize_keys
38
+
16
39
  headers = {}
17
40
  header = true
41
+
42
+ if options[:headers]
43
+ headers = match_headers(options[:headers].split(','))
44
+ header = false
45
+ unless all_headers_found(headers)
46
+ logger.error "The supplied headers did not match all attributes".red
47
+ return
48
+ end
49
+ end
50
+
18
51
  data_count = 0
19
52
  row_number = 0
20
53
 
21
54
  # Get an estimate of the number of rows in the file
22
- csv_options = {:encoding => 'windows-1251:utf-8'}.merge(self.options.symbolize_keys)
55
+ csv_options = {:encoding => 'windows-1251:utf-8'}.merge(self.options)
23
56
  CSV.foreach(file, csv_options) do |row|
24
57
  row_number += 1
25
58
  if (header)
26
- column = 0
27
- row.each do |column_value|
28
- column += 1
29
- converter_attributes.each do |attribute|
30
- if attribute.matches? column_value
31
- logger.debug "Found header for #{attribute.name} at column #{column}".green
32
- if (headers[attribute.name].nil?)
33
- headers[attribute.name] = column
34
- else
35
- logger.error "Found duplicate header '#{attribute.name}' on columns #{column} and #{headers[attribute.name]}.".red
36
- end
37
- end
38
- end
39
- end
59
+ headers = match_headers(row)
40
60
  unless all_headers_found(headers)
41
61
  logger.error "Missing headers".red
42
62
  break
data/lib/rseed/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Rseed
2
- VERSION = "1.0.15"
2
+ VERSION = "1.0.16"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rseed
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.15
4
+ version: 1.0.16
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Monagle
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-30 00:00:00.000000000 Z
11
+ date: 2014-01-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colorize