rseed 1.0.15 → 1.0.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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