csv2hash 0.6.2 → 0.6.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -5
  3. data/.yardoc/checksums +25 -0
  4. data/.yardoc/object_types +0 -0
  5. data/.yardoc/objects/root.dat +0 -0
  6. data/.yardoc/proxy_types +0 -0
  7. data/CHANGELOG.md +8 -0
  8. data/Gemfile +6 -0
  9. data/Gemfile.lock +15 -1
  10. data/README.md +32 -4
  11. data/UPGRADE.md +2 -0
  12. data/bin/generate_doc +3 -0
  13. data/config/example.csv +10 -0
  14. data/config/rules.yml +7 -0
  15. data/doc/Cell.html +282 -0
  16. data/doc/Csv2hash/Adapter/Abstract.html +215 -0
  17. data/doc/Csv2hash/Adapter/Base/UnsupportedAdapter.html +123 -0
  18. data/doc/Csv2hash/Adapter/Base.html +201 -0
  19. data/doc/Csv2hash/Adapter/CsvAdapter.html +348 -0
  20. data/doc/Csv2hash/Adapter/MemoryAdapter.html +348 -0
  21. data/doc/Csv2hash/Adapter.html +117 -0
  22. data/doc/Csv2hash/DataWrapper.html +500 -0
  23. data/doc/Csv2hash/Definition.html +1008 -0
  24. data/doc/Csv2hash/Discover.html +192 -0
  25. data/doc/Csv2hash/Expectation.html +202 -0
  26. data/doc/Csv2hash/ExtraValidator.html +207 -0
  27. data/doc/Csv2hash/Main.html +1298 -0
  28. data/doc/Csv2hash/Notifier.html +189 -0
  29. data/doc/Csv2hash/Parser/Collection.html +283 -0
  30. data/doc/Csv2hash/Parser/Mapping.html +266 -0
  31. data/doc/Csv2hash/Parser.html +121 -0
  32. data/doc/Csv2hash/StructureValidator/Deprecation.html +215 -0
  33. data/doc/Csv2hash/StructureValidator/MaxColumns.html +327 -0
  34. data/doc/Csv2hash/StructureValidator/MinColumns.html +327 -0
  35. data/doc/Csv2hash/StructureValidator/ValidationError.html +123 -0
  36. data/doc/Csv2hash/StructureValidator/Validator.html +184 -0
  37. data/doc/Csv2hash/StructureValidator.html +311 -0
  38. data/doc/Csv2hash/Validator/Collection.html +217 -0
  39. data/doc/Csv2hash/Validator/Mapping.html +200 -0
  40. data/doc/Csv2hash/Validator.html +295 -0
  41. data/doc/Csv2hash.html +131 -0
  42. data/doc/CsvArray.html +200 -0
  43. data/doc/Registry.html +312 -0
  44. data/doc/_index.html +391 -0
  45. data/doc/class_list.html +54 -0
  46. data/doc/css/common.css +1 -0
  47. data/doc/css/full_list.css +57 -0
  48. data/doc/css/style.css +339 -0
  49. data/doc/file.README.html +499 -0
  50. data/doc/file_list.html +56 -0
  51. data/doc/frames.html +26 -0
  52. data/doc/index.html +499 -0
  53. data/doc/js/app.js +219 -0
  54. data/doc/js/full_list.js +178 -0
  55. data/doc/js/jquery.js +4 -0
  56. data/doc/method_list.html +473 -0
  57. data/doc/top-level-namespace.html +114 -0
  58. data/lib/csv2hash/definition.rb +3 -3
  59. data/lib/csv2hash/version.rb +1 -1
  60. data/lib/csv2hash/yaml_loader.rb +33 -0
  61. data/lib/csv2hash.rb +28 -8
  62. data/spec/csv2hash/yaml_loader_spec.rb +20 -0
  63. data/spec/csv2hash_spec.rb +13 -10
  64. metadata +56 -1
data/lib/csv2hash.rb CHANGED
@@ -16,6 +16,7 @@ require_relative 'csv2hash/data_wrapper'
16
16
  require_relative 'csv2hash/notifier'
17
17
  require_relative 'csv2hash/extra_validator'
18
18
  require_relative 'csv2hash/adapters/base'
19
+ require_relative 'csv2hash/yaml_loader'
19
20
 
20
21
  require 'active_support/core_ext/array/extract_options'
21
22
 
@@ -36,11 +37,11 @@ module Csv2hash
36
37
  end
37
38
 
38
39
  def [] definition_name
39
- @@registry[definition_name]
40
+ @@registry[definition_name.to_sym]
40
41
  end
41
42
 
42
43
  def []= definition_name, role
43
- @@registry[definition_name] = role
44
+ @@registry[definition_name.to_sym] = role
44
45
  end
45
46
  end
46
47
 
@@ -48,11 +49,13 @@ module Csv2hash
48
49
 
49
50
  attr_accessor :definition, :file_path_or_data, :data, :notifier, :break_on_failure, :errors, :options
50
51
 
51
- def initialize definition, file_path_or_data, *args
52
- self.options = args.extract_options!
53
- self.definition, self.file_path_or_data = definition, file_path_or_data
54
- self.break_on_failure, self.errors = false, []
55
- self.notifier = Notifier.new
52
+ def initialize definition_file_or_symbol, file_path_or_data, *args
53
+ self.options = args.extract_options!
54
+ self.definition = load_definition(definition_file_or_symbol)
55
+ self.file_path_or_data = file_path_or_data
56
+ self.break_on_failure = false
57
+ self.errors = []
58
+ self.notifier = Notifier.new
56
59
 
57
60
  dynamic_lib_loading 'Parser'
58
61
  dynamic_lib_loading 'Validator'
@@ -112,7 +115,7 @@ module Csv2hash
112
115
 
113
116
  def data_source
114
117
  @data_source ||= begin
115
- adapter_name = self.file_path_or_data.is_a?(String) ? :csv : :memory
118
+ adapter_name = self.file_path_or_data.respond_to?(:to_path) ? :csv : :memory
116
119
  adapter = Adapter::Base.create(adapter_name, self.file_path_or_data)
117
120
  adapter.source
118
121
  end
@@ -129,5 +132,22 @@ module Csv2hash
129
132
  self.extend Module.module_eval("Csv2hash::#{type}::Collection")
130
133
  end
131
134
  end
135
+
136
+ def load_definition definition_file_or_symbol
137
+ case definition_file_or_symbol
138
+ when String
139
+ config_file = definition_file_or_symbol
140
+ config_file = Pathname(definition_file_or_symbol) unless config_file.respond_to?(:to_path)
141
+ loader = YamlLoader.new(config_file).tap &:load!
142
+ loader.definition
143
+ when Symbol
144
+ Main[definition_file_or_symbol]
145
+ when Definition
146
+ definition_file_or_symbol
147
+ else
148
+ raise 'unsupported definition'
149
+ end
150
+ end
151
+
132
152
  end
133
153
  end
@@ -0,0 +1,20 @@
1
+ require 'spec_helper'
2
+
3
+ module Csv2hash
4
+ describe YamlLoader do
5
+ let(:config_file) { 'config/rules.yml' }
6
+
7
+ subject do
8
+ YamlLoader.new config_file
9
+ end
10
+
11
+ before do
12
+ subject.load!
13
+ end
14
+
15
+ specify do
16
+ expect(subject.definition.name).to eql('example')
17
+ end
18
+
19
+ end
20
+ end
@@ -1,17 +1,20 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Csv2hash do
4
- let(:definition) { double('definition', type: nil) }
5
- let(:data_source) { nil }
3
+ module Csv2hash
4
+ describe Main do
5
+ let(:config_file) { 'config/rules.yml' }
6
+ let(:loader) { YamlLoader.new(config_file).tap &:load! }
7
+ let(:data_source) { 'config/example.csv' }
6
8
 
7
- subject do
8
- Csv2hash::Main.new(definition, data_source, ignore_blank_line: false)
9
- end
9
+ subject do
10
+ Main.new(loader.definition, data_source, ignore_blank_line: false)
11
+ end
10
12
 
11
- context '...' do
12
- specify do
13
- expect(subject.options.fetch(:ignore_blank_line)).to eql(false)
13
+ context '...' do
14
+ specify do
15
+ expect(subject.options.fetch(:ignore_blank_line)).to eql(false)
16
+ end
14
17
  end
15
- end
16
18
 
19
+ end
17
20
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: csv2hash
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.2
4
+ version: 0.6.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joel AZEMAR
@@ -83,6 +83,7 @@ dependencies:
83
83
  description: DSL to map a CSV to a Ruby Hash
84
84
  email: joel.azemar@gmail.com
85
85
  executables:
86
+ - generate_doc
86
87
  - launch_irb
87
88
  - load_rvm
88
89
  extensions: []
@@ -92,6 +93,10 @@ files:
92
93
  - ".gitignore"
93
94
  - ".rspec"
94
95
  - ".travis.yml"
96
+ - ".yardoc/checksums"
97
+ - ".yardoc/object_types"
98
+ - ".yardoc/objects/root.dat"
99
+ - ".yardoc/proxy_types"
95
100
  - CHANGELOG.md
96
101
  - Gemfile
97
102
  - Gemfile.lock
@@ -99,10 +104,56 @@ files:
99
104
  - README.md
100
105
  - Rakefile
101
106
  - UPGRADE.md
107
+ - bin/generate_doc
102
108
  - bin/launch_irb
103
109
  - bin/load_rvm
110
+ - config/example.csv
111
+ - config/rules.yml
104
112
  - coverage/.resultset.json.lock
105
113
  - csv2hash.gemspec
114
+ - doc/Cell.html
115
+ - doc/Csv2hash.html
116
+ - doc/Csv2hash/Adapter.html
117
+ - doc/Csv2hash/Adapter/Abstract.html
118
+ - doc/Csv2hash/Adapter/Base.html
119
+ - doc/Csv2hash/Adapter/Base/UnsupportedAdapter.html
120
+ - doc/Csv2hash/Adapter/CsvAdapter.html
121
+ - doc/Csv2hash/Adapter/MemoryAdapter.html
122
+ - doc/Csv2hash/DataWrapper.html
123
+ - doc/Csv2hash/Definition.html
124
+ - doc/Csv2hash/Discover.html
125
+ - doc/Csv2hash/Expectation.html
126
+ - doc/Csv2hash/ExtraValidator.html
127
+ - doc/Csv2hash/Main.html
128
+ - doc/Csv2hash/Notifier.html
129
+ - doc/Csv2hash/Parser.html
130
+ - doc/Csv2hash/Parser/Collection.html
131
+ - doc/Csv2hash/Parser/Mapping.html
132
+ - doc/Csv2hash/StructureValidator.html
133
+ - doc/Csv2hash/StructureValidator/Deprecation.html
134
+ - doc/Csv2hash/StructureValidator/MaxColumns.html
135
+ - doc/Csv2hash/StructureValidator/MinColumns.html
136
+ - doc/Csv2hash/StructureValidator/ValidationError.html
137
+ - doc/Csv2hash/StructureValidator/Validator.html
138
+ - doc/Csv2hash/Validator.html
139
+ - doc/Csv2hash/Validator/Collection.html
140
+ - doc/Csv2hash/Validator/Mapping.html
141
+ - doc/CsvArray.html
142
+ - doc/Registry.html
143
+ - doc/_index.html
144
+ - doc/class_list.html
145
+ - doc/css/common.css
146
+ - doc/css/full_list.css
147
+ - doc/css/style.css
148
+ - doc/file.README.html
149
+ - doc/file_list.html
150
+ - doc/frames.html
151
+ - doc/index.html
152
+ - doc/js/app.js
153
+ - doc/js/full_list.js
154
+ - doc/js/jquery.js
155
+ - doc/method_list.html
156
+ - doc/top-level-namespace.html
106
157
  - lib/csv2hash.rb
107
158
  - lib/csv2hash/adapters/abstract.rb
108
159
  - lib/csv2hash/adapters/base.rb
@@ -128,6 +179,7 @@ files:
128
179
  - lib/csv2hash/validator/collection.rb
129
180
  - lib/csv2hash/validator/mapping.rb
130
181
  - lib/csv2hash/version.rb
182
+ - lib/csv2hash/yaml_loader.rb
131
183
  - spec/csv2hash/definition_spec.rb
132
184
  - spec/csv2hash/parser/collection_spec.rb
133
185
  - spec/csv2hash/parser/mapping_spec.rb
@@ -136,6 +188,7 @@ files:
136
188
  - spec/csv2hash/validator/collection_spec.rb
137
189
  - spec/csv2hash/validator/mapping_spec.rb
138
190
  - spec/csv2hash/validator_spec.rb
191
+ - spec/csv2hash/yaml_loader_spec.rb
139
192
  - spec/csv2hash_spec.rb
140
193
  - spec/spec_helper.rb
141
194
  homepage: https://github.com/joel/csv2hash
@@ -171,5 +224,7 @@ test_files:
171
224
  - spec/csv2hash/validator/collection_spec.rb
172
225
  - spec/csv2hash/validator/mapping_spec.rb
173
226
  - spec/csv2hash/validator_spec.rb
227
+ - spec/csv2hash/yaml_loader_spec.rb
174
228
  - spec/csv2hash_spec.rb
175
229
  - spec/spec_helper.rb
230
+ has_rdoc: