csv_step_importer 0.8.1 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0ce93ec4d94777ed496b6b960ef9595f02877c443e8dbe4f59cda91d364fc150
4
- data.tar.gz: c8ec16e08626f8f0aaa75a1431964b7d05e171f284b1c86299641dcadd65df4c
3
+ metadata.gz: 5334af91a76293f6cc7b57226bbfd80cb6fdd28a4577f25189cb922ed002647e
4
+ data.tar.gz: 6e2166c2764d07b088b7f11ee94d030f42692553635cc9b38aa4a427528d8ef1
5
5
  SHA512:
6
- metadata.gz: 3fe14e9e45884304b0880a0dd02c05a2b812c78a7ecaa6c2f975b75ac93de85db3bfb5e2f0f90355765f98d48d781d09232f7c9ac869f9119e568c260f661233
7
- data.tar.gz: aa0babcbb53d823f3d3fa97f340956d9b2c8ad30274421bf72f82f9eb8ec52689e8f754e6a5d4f5b3b33a040eaaa3e6b0a3b1697cb66844edbf21bf06f6f320b
6
+ metadata.gz: 90b7fca64a184012605cb7e4963425d3e77add0c17798af72466a08ff5aa9140b45f4c413e29848472a19629a90d1ad0f35338f9ab3d30aaaebcfab449251119
7
+ data.tar.gz: 48a5f1ebdd26df973c272a5a5262cb69fdad6f69b6bc4bb231003f035acb059ea291165999ba158474112666fff7383a75b0a5e3f9807dcf0f1976bbe4ec8f72
@@ -0,0 +1,36 @@
1
+ # Change Log
2
+ All notable changes to this project will be documented in this file.
3
+
4
+ The format is based on [Keep a Changelog](http://keepachangelog.com/)
5
+ and this project adheres to [Semantic Versioning](http://semver.org/).
6
+
7
+ ## [Unreleased]
8
+ ### Added
9
+
10
+ ### Changed
11
+
12
+ ## 2018-08-22 Version 0.9.0
13
+ ### Added
14
+ - Add csv_option headers_mode
15
+
16
+ ```
17
+ headers_mode is a enum with which you can control how headers will be transformed during the file read.
18
+
19
+ Note, that this option will be applied, after the csv_option headers is processed.
20
+
21
+ The following values are allowed:
22
+ case_sensitive_symbols:
23
+ "A z" becomes :A_z
24
+
25
+ case_insensitive_symbols:
26
+ "A z" becomes :a_z
27
+
28
+ symbols:
29
+ "A z" becomes :"A z"
30
+
31
+ preserve:
32
+ "A z" will stay "A z"
33
+ ```
34
+
35
+ ### Changed
36
+ - Deprecated csv_option case_sensitive_headers
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- csv_step_importer (0.8.1)
4
+ csv_step_importer (0.9.0)
5
5
  activemodel
6
6
  activerecord-import
7
7
  activesupport
@@ -10,28 +10,28 @@ PATH
10
10
  GEM
11
11
  remote: https://rubygems.org/
12
12
  specs:
13
- actionpack (5.2.0)
14
- actionview (= 5.2.0)
15
- activesupport (= 5.2.0)
13
+ actionpack (5.2.1)
14
+ actionview (= 5.2.1)
15
+ activesupport (= 5.2.1)
16
16
  rack (~> 2.0)
17
17
  rack-test (>= 0.6.3)
18
18
  rails-dom-testing (~> 2.0)
19
19
  rails-html-sanitizer (~> 1.0, >= 1.0.2)
20
- actionview (5.2.0)
21
- activesupport (= 5.2.0)
20
+ actionview (5.2.1)
21
+ activesupport (= 5.2.1)
22
22
  builder (~> 3.1)
23
23
  erubi (~> 1.4)
24
24
  rails-dom-testing (~> 2.0)
25
25
  rails-html-sanitizer (~> 1.0, >= 1.0.3)
26
- activemodel (5.2.0)
27
- activesupport (= 5.2.0)
28
- activerecord (5.2.0)
29
- activemodel (= 5.2.0)
30
- activesupport (= 5.2.0)
26
+ activemodel (5.2.1)
27
+ activesupport (= 5.2.1)
28
+ activerecord (5.2.1)
29
+ activemodel (= 5.2.1)
30
+ activesupport (= 5.2.1)
31
31
  arel (>= 9.0)
32
- activerecord-import (0.24.0)
32
+ activerecord-import (0.25.0)
33
33
  activerecord (>= 3.2)
34
- activesupport (5.2.0)
34
+ activesupport (5.2.1)
35
35
  concurrent-ruby (~> 1.0, >= 1.0.2)
36
36
  i18n (>= 0.7, < 2)
37
37
  minitest (~> 5.1)
@@ -43,7 +43,7 @@ GEM
43
43
  crass (1.0.4)
44
44
  diff-lcs (1.3)
45
45
  erubi (1.7.1)
46
- i18n (1.0.1)
46
+ i18n (1.1.0)
47
47
  concurrent-ruby (~> 1.0)
48
48
  jaro_winkler (1.5.1)
49
49
  loofah (2.2.2)
@@ -52,56 +52,59 @@ GEM
52
52
  method_source (0.9.0)
53
53
  mini_portile2 (2.3.0)
54
54
  minitest (5.11.3)
55
- nokogiri (1.8.3)
55
+ nokogiri (1.8.4)
56
56
  mini_portile2 (~> 2.3.0)
57
57
  parallel (1.12.1)
58
- parser (2.5.1.0)
58
+ parser (2.5.1.2)
59
59
  ast (~> 2.4.0)
60
60
  powerpack (0.1.2)
61
61
  rack (2.0.5)
62
- rack-test (1.0.0)
62
+ rack-test (1.1.0)
63
63
  rack (>= 1.0, < 3)
64
64
  rails-dom-testing (2.0.3)
65
65
  activesupport (>= 4.2.0)
66
66
  nokogiri (>= 1.6)
67
67
  rails-html-sanitizer (1.0.4)
68
68
  loofah (~> 2.2, >= 2.2.2)
69
- railties (5.2.0)
70
- actionpack (= 5.2.0)
71
- activesupport (= 5.2.0)
69
+ railties (5.2.1)
70
+ actionpack (= 5.2.1)
71
+ activesupport (= 5.2.1)
72
72
  method_source
73
73
  rake (>= 0.8.7)
74
- thor (>= 0.18.1, < 2.0)
74
+ thor (>= 0.19.0, < 2.0)
75
75
  rainbow (3.0.0)
76
76
  rake (10.5.0)
77
- rspec (3.7.0)
78
- rspec-core (~> 3.7.0)
79
- rspec-expectations (~> 3.7.0)
80
- rspec-mocks (~> 3.7.0)
81
- rspec-core (3.7.1)
82
- rspec-support (~> 3.7.0)
83
- rspec-expectations (3.7.0)
77
+ rspec (3.8.0)
78
+ rspec-core (~> 3.8.0)
79
+ rspec-expectations (~> 3.8.0)
80
+ rspec-mocks (~> 3.8.0)
81
+ rspec-core (3.8.0)
82
+ rspec-support (~> 3.8.0)
83
+ rspec-expectations (3.8.1)
84
84
  diff-lcs (>= 1.2.0, < 2.0)
85
- rspec-support (~> 3.7.0)
86
- rspec-mocks (3.7.0)
85
+ rspec-support (~> 3.8.0)
86
+ rspec-mocks (3.8.0)
87
87
  diff-lcs (>= 1.2.0, < 2.0)
88
- rspec-support (~> 3.7.0)
89
- rspec-support (3.7.1)
90
- rubocop (0.57.2)
88
+ rspec-support (~> 3.8.0)
89
+ rspec-support (3.8.0)
90
+ rubocop (0.58.2)
91
91
  jaro_winkler (~> 1.5.1)
92
92
  parallel (~> 1.10)
93
- parser (>= 2.5)
93
+ parser (>= 2.5, != 2.5.1.1)
94
94
  powerpack (~> 0.1)
95
95
  rainbow (>= 2.2.2, < 4.0)
96
96
  ruby-progressbar (~> 1.7)
97
97
  unicode-display_width (~> 1.0, >= 1.0.1)
98
- rubocop-rails (1.4.1)
98
+ rubocop-rails (1.5.0)
99
99
  railties (>= 3.0)
100
100
  rubocop (~> 0.53)
101
- rubocop-rspec (1.27.0)
102
- rubocop (>= 0.56.0)
103
- ruby-progressbar (1.9.0)
104
- smarter_csv (1.2.3)
101
+ rubocop-rails_config (0.2.3)
102
+ railties (>= 3.0)
103
+ rubocop (~> 0.56)
104
+ rubocop-rspec (1.28.0)
105
+ rubocop (>= 0.58.0)
106
+ ruby-progressbar (1.10.0)
107
+ smarter_csv (1.2.4)
105
108
  thor (0.20.0)
106
109
  thread_safe (0.3.6)
107
110
  tzinfo (1.2.5)
@@ -117,6 +120,7 @@ DEPENDENCIES
117
120
  rake (~> 10.0)
118
121
  rspec (~> 3.0)
119
122
  rubocop-rails
123
+ rubocop-rails_config
120
124
  rubocop-rspec
121
125
 
122
126
  BUNDLED WITH
@@ -35,6 +35,7 @@ Gem::Specification.new do |spec|
35
35
  spec.add_development_dependency "bundler", "~> 1.16"
36
36
  spec.add_development_dependency "rake", "~> 10.0"
37
37
  spec.add_development_dependency "rspec", "~> 3.0"
38
+ spec.add_development_dependency "rubocop-rails_config"
38
39
  spec.add_development_dependency "rubocop-rails"
39
40
  spec.add_development_dependency "rubocop-rspec"
40
41
 
@@ -73,17 +73,6 @@ module CSVStepImporter
73
73
  }
74
74
  end
75
75
 
76
- def keys_as_symbols(case_sensitive: false)
77
- if case_sensitive
78
- Proc.new { |headers|
79
- headers.map { |x| x.strip.gsub(%r{"}, '').gsub(/(\s|\-)+/, '_').to_sym }
80
- }
81
- else
82
- # use existing helper
83
- :keys_as_symbols
84
- end
85
- end
86
-
87
76
  def precompile_csv_options!
88
77
  # set default options
89
78
  self.csv_options = {
@@ -92,19 +81,53 @@ module CSVStepImporter
92
81
  }.merge(csv_options)
93
82
 
94
83
  # easier specification of headers, including case case sensitive headers
95
- if csv_options[:headers] || csv_options[:case_sensitive_headers]
84
+ if csv_options[:headers] || csv_options[:headers_mode] || csv_options[:case_sensitive_headers]
96
85
  if csv_options[:header_transformations]
97
86
  raise "either use header_transformations or headers (and case_sensitive_headers optionally)"
98
87
  end
99
88
 
100
89
  csv_options[:header_transformations] = [ :none ]
101
90
  csv_options[:header_transformations] << { key_mapping: csv_options.delete(:headers) } if csv_options[:headers]
102
- csv_options[:header_transformations] << keys_as_symbols(case_sensitive: csv_options.delete(:case_sensitive_headers))
91
+ csv_options[:header_transformations] << header_mode_transformer
103
92
  end
104
93
 
105
94
  # retrieve headers from CSV
106
95
  csv_options[:header_transformations] ||= []
107
96
  csv_options[:header_transformations] << header_proc
108
97
  end
98
+
99
+ def header_mode_transformer
100
+ case headers_mode
101
+ when :case_sensitive_symbols
102
+ Proc.new { |headers|
103
+ headers.map { |x| x.strip.gsub(%r{"}, "").gsub(/(\s|\-)+/, "_").to_sym }
104
+ }
105
+ when :case_insensitive_symbols
106
+ # use existing helper
107
+ :keys_as_symbols
108
+ when :preserve
109
+ Proc.new { |headers| headers }
110
+ else
111
+ raise "unknown headers_mode #{headers_mode}"
112
+ end
113
+ end
114
+
115
+ def headers_mode
116
+ if csv_options[:case_sensitive_headers]
117
+ ActiveSupport::Deprecation.warn(
118
+ "Key `:case_sensitive_headers` is deprecated, please use `:headers_mode` with a value of" +
119
+ " `:case_sensitive_symbols` instead"
120
+ )
121
+
122
+ if csv_options[:headers_mode]
123
+ raise "Key `:case_sensitive_headers` is deprecated, and will be ignored, since headers_mode is specified"
124
+ end
125
+
126
+ csv_options.delete(:case_sensitive_headers)
127
+ csv_options[:headers_mode] = :case_sensitive_symbols
128
+ end
129
+
130
+ csv_options[:headers_mode] || :preserve
131
+ end
109
132
  end
110
133
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module CSVStepImporter
4
- VERSION = "0.8.1"
4
+ VERSION = "0.9.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: csv_step_importer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.1
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christian-Manuel Butzke
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-06-26 00:00:00.000000000 Z
11
+ date: 2018-08-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rubocop-rails_config
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: rubocop-rails
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -147,6 +161,7 @@ files:
147
161
  - ".rspec"
148
162
  - ".rubocop.yml"
149
163
  - ".travis.yml"
164
+ - CHANGELOG.md
150
165
  - CODE_OF_CONDUCT.md
151
166
  - Gemfile
152
167
  - Gemfile.lock