file_processor 0.2.0 → 0.3.0
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 +5 -13
- data/.rspec +0 -1
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +1 -1
- data/Gemfile +3 -3
- data/Gemfile.lock +29 -27
- data/lib/file_processor/csv.rb +1 -5
- data/lib/file_processor/temp_file.rb +1 -1
- data/lib/file_processor/version.rb +1 -1
- data/spec/file_processor/csv_spec.rb +49 -37
- data/spec/file_processor/temp_file_spec.rb +8 -8
- data/spec/spec_helper.rb +4 -3
- metadata +10 -9
- data/.rvmrc +0 -1
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
YTVkYmExNWM2NTYyZTBhMzMxNzUzN2ZiMzFmMTYxZTBmMGQ5ZjVjNQ==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 5882fab6de2ba57e774f4041584b721d487fb20b
|
4
|
+
data.tar.gz: f092d547c1d07f61a9431afa97cdc87f7c790256
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
MTEwNDM2MGY1MmMwYTEyYTczN2JiMDAzYWUyMzE4ODUwZjU1MjQxZTliNjQ3
|
11
|
-
ZWQ5MGQzYTIzYjg0MWQ5MjU3N2ExZGNkNDAyMDVjZWZhNjI1NWQ=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
YmM0MWM1NjYzYWQyYzg5MjQ3ZjkxY2Y2NDZhMDNmZGExYWU4OWZhZWFjYzVl
|
14
|
-
ZDZmNTIzNjI0YTViNTU3OTkyNWFlMGY1ZGRhNWYzN2RmMTAxOWZlYzNiMzBl
|
15
|
-
YmFjMWYwYzNiMWVjZTQ3ZDI2MmYzODgzMTFlZjViMDdlY2ZjMTE=
|
6
|
+
metadata.gz: cb873a8ab1a40ecccfcfbd343fef30d58c738655f004f1dfcbeb5bf0f3363fe01aec855a7876beacbb887ec7974ac37dc62e1b03b89e41fa2ac1894634a24975
|
7
|
+
data.tar.gz: f11802d8091f0e3a77accec53f6d262922ac7f6fad5a7e8672b29f387aef40912d8a5c29c298b6eadd8a24ab879c4a888441252522d94563d5a98b97a68811fb
|
data/.rspec
CHANGED
data/.ruby-gemset
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
file_processor
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.2.1
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,42 +1,44 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
file_processor (0.2.0)
|
5
4
|
|
6
5
|
GEM
|
7
6
|
remote: https://rubygems.org/
|
8
7
|
specs:
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
rspec (
|
21
|
-
|
22
|
-
rspec-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
simplecov-html (~> 0.
|
31
|
-
simplecov-html (0.
|
8
|
+
byebug (6.0.2)
|
9
|
+
diff-lcs (1.2.5)
|
10
|
+
docile (1.1.5)
|
11
|
+
json (1.8.3)
|
12
|
+
rake (10.4.2)
|
13
|
+
rspec (3.3.0)
|
14
|
+
rspec-core (~> 3.3.0)
|
15
|
+
rspec-expectations (~> 3.3.0)
|
16
|
+
rspec-mocks (~> 3.3.0)
|
17
|
+
rspec-core (3.3.2)
|
18
|
+
rspec-support (~> 3.3.0)
|
19
|
+
rspec-expectations (3.3.1)
|
20
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
21
|
+
rspec-support (~> 3.3.0)
|
22
|
+
rspec-mocks (3.3.2)
|
23
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
24
|
+
rspec-support (~> 3.3.0)
|
25
|
+
rspec-support (3.3.0)
|
26
|
+
simplecov (0.10.0)
|
27
|
+
docile (~> 1.1.0)
|
28
|
+
json (~> 1.8)
|
29
|
+
simplecov-html (~> 0.10.0)
|
30
|
+
simplecov-html (0.10.0)
|
32
31
|
|
33
32
|
PLATFORMS
|
34
33
|
ruby
|
35
34
|
|
36
35
|
DEPENDENCIES
|
37
|
-
|
36
|
+
byebug
|
38
37
|
file_processor!
|
39
|
-
json
|
38
|
+
json
|
40
39
|
rake
|
41
|
-
rspec
|
40
|
+
rspec
|
42
41
|
simplecov
|
42
|
+
|
43
|
+
BUNDLED WITH
|
44
|
+
1.10.5
|
data/lib/file_processor/csv.rb
CHANGED
@@ -113,16 +113,12 @@ module FileProcessor
|
|
113
113
|
loaded_io = decompress(::Kernel.open(filename, 'rb', open_options || {}))
|
114
114
|
loaded_io.rewind
|
115
115
|
|
116
|
-
@original_default_internal = Encoding.default_internal
|
117
|
-
Encoding.default_internal = nil
|
118
|
-
|
119
116
|
loaded_io.each do |line|
|
120
117
|
tempfile.write(line)
|
121
118
|
end
|
122
119
|
ensure
|
123
120
|
tempfile.close if tempfile
|
124
121
|
loaded_io.close if loaded_io
|
125
|
-
Encoding.default_internal = @original_default_internal
|
126
122
|
end
|
127
123
|
|
128
124
|
def decompress(loaded_io)
|
@@ -182,4 +178,4 @@ module FileProcessor
|
|
182
178
|
@tempfile ||= FileProcessor::Tempfile.new
|
183
179
|
end
|
184
180
|
end
|
185
|
-
end
|
181
|
+
end
|
@@ -7,14 +7,14 @@ describe FileProcessor::CSV do
|
|
7
7
|
subject(:processor) { FileProcessor::CSV.new(filename, options) }
|
8
8
|
|
9
9
|
it "delegates to a CSV instance" do
|
10
|
-
processor.__getobj__.
|
10
|
+
expect(processor.__getobj__).to be_a(::CSV)
|
11
11
|
end
|
12
12
|
|
13
13
|
describe "#col_sep" do
|
14
14
|
context "when it is not given" do
|
15
15
|
context "and the first line of the file has more than one header column separated with a semi-colon" do
|
16
16
|
it "detects it properly" do
|
17
|
-
processor.col_sep.
|
17
|
+
expect(processor.col_sep).to eq(';')
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
@@ -22,7 +22,7 @@ describe FileProcessor::CSV do
|
|
22
22
|
let(:filename) { fixture('base-with-comma-separated-header.csv') }
|
23
23
|
|
24
24
|
it "detects it properly" do
|
25
|
-
processor.col_sep.
|
25
|
+
expect(processor.col_sep).to eq(',')
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
@@ -30,7 +30,7 @@ describe FileProcessor::CSV do
|
|
30
30
|
let(:filename) { fixture('base-with-unknown-column-separator.csv') }
|
31
31
|
|
32
32
|
it "does not detects it, falling back to the default one" do
|
33
|
-
processor.col_sep.
|
33
|
+
expect(processor.col_sep).to eq(',')
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
@@ -39,7 +39,7 @@ describe FileProcessor::CSV do
|
|
39
39
|
let(:filename) { fixture('base-non-ascii-characters-in-header-utf-8.csv') }
|
40
40
|
|
41
41
|
it "detects it properly" do
|
42
|
-
processor.col_sep.
|
42
|
+
expect(processor.col_sep).to eq(';')
|
43
43
|
end
|
44
44
|
end
|
45
45
|
|
@@ -47,7 +47,7 @@ describe FileProcessor::CSV do
|
|
47
47
|
let(:filename) { fixture('base-non-ascii-characters-in-header-iso-8859-1.csv') }
|
48
48
|
|
49
49
|
it "detects it properly" do
|
50
|
-
processor.col_sep.
|
50
|
+
expect(processor.col_sep).to eq(';')
|
51
51
|
end
|
52
52
|
end
|
53
53
|
end
|
@@ -57,21 +57,21 @@ describe FileProcessor::CSV do
|
|
57
57
|
let(:options) { { col_sep: '|' } }
|
58
58
|
|
59
59
|
it "uses the given col_sep" do
|
60
|
-
processor.col_sep.
|
60
|
+
expect(processor.col_sep).to eq('|')
|
61
61
|
end
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
65
65
|
describe "#count" do
|
66
66
|
it "returns the number of rows in the CSV" do
|
67
|
-
processor.count.
|
67
|
+
expect(processor.count).to eq(5)
|
68
68
|
end
|
69
69
|
|
70
70
|
context "when the file has new line characters in a field, but it is properly quoted" do
|
71
71
|
let(:filename) { fixture('base-new-line-in-field.csv') }
|
72
72
|
|
73
73
|
it "returns the correct number of rows in the CSV" do
|
74
|
-
processor.count.
|
74
|
+
expect(processor.count).to eq(3)
|
75
75
|
end
|
76
76
|
end
|
77
77
|
|
@@ -79,7 +79,7 @@ describe FileProcessor::CSV do
|
|
79
79
|
let(:filename) { fixture('base-with-blank-lines.csv') }
|
80
80
|
|
81
81
|
it "skips them by default" do
|
82
|
-
processor.count.
|
82
|
+
expect(processor.count).to eq(5)
|
83
83
|
end
|
84
84
|
end
|
85
85
|
|
@@ -87,14 +87,14 @@ describe FileProcessor::CSV do
|
|
87
87
|
let(:filename) { fixture('base-with-lines-with-no-data.csv') }
|
88
88
|
|
89
89
|
it "does not count them" do
|
90
|
-
processor.count.
|
90
|
+
expect(processor.count).to eq(5)
|
91
91
|
end
|
92
92
|
|
93
93
|
context "but skip_blanks is false" do
|
94
94
|
let(:options) { { skip_blanks: false } }
|
95
95
|
|
96
96
|
it "does counts them" do
|
97
|
-
processor.count.
|
97
|
+
expect(processor.count).to eq(7)
|
98
98
|
end
|
99
99
|
end
|
100
100
|
|
@@ -102,7 +102,7 @@ describe FileProcessor::CSV do
|
|
102
102
|
let(:options) { { headers: true } }
|
103
103
|
|
104
104
|
it "does not count these lines, as well as the header" do
|
105
|
-
processor.count.
|
105
|
+
expect(processor.count).to eq(4)
|
106
106
|
end
|
107
107
|
end
|
108
108
|
end
|
@@ -111,7 +111,7 @@ describe FileProcessor::CSV do
|
|
111
111
|
let(:filename) { fixture('base-with-lines-with-no-data.csv') }
|
112
112
|
|
113
113
|
it "returns the number of lines for which the block evaluates to true, properly handling lines with no data" do
|
114
|
-
processor.count { |row| !row.first.nil? }.
|
114
|
+
expect(processor.count { |row| !row.first.nil? }).to eq(3)
|
115
115
|
end
|
116
116
|
end
|
117
117
|
end
|
@@ -119,13 +119,13 @@ describe FileProcessor::CSV do
|
|
119
119
|
describe "#total_count" do
|
120
120
|
it "works as count, but returns all rows, even when called multiple times, since it rewinds the io file" do
|
121
121
|
processor.total_count
|
122
|
-
processor.total_count.
|
122
|
+
expect(processor.total_count).to eq(5)
|
123
123
|
end
|
124
124
|
end
|
125
125
|
|
126
126
|
describe "#each" do
|
127
127
|
it "returns an enumerator when called without a block" do
|
128
|
-
processor.each.
|
128
|
+
expect(processor.each).to be_a(Enumerator)
|
129
129
|
end
|
130
130
|
|
131
131
|
context "when the file has lines with no data" do
|
@@ -170,7 +170,9 @@ describe FileProcessor::CSV do
|
|
170
170
|
let(:filename) { fixture('base-utf-8.csv') }
|
171
171
|
let(:options) { { encoding: 'utf-8' } }
|
172
172
|
|
173
|
-
|
173
|
+
it "returns the proper detected encoding" do
|
174
|
+
expect(processor.detected_encoding).to eq(Encoding.find(options[:encoding]))
|
175
|
+
end
|
174
176
|
|
175
177
|
it "opens the file properly" do
|
176
178
|
expect {
|
@@ -184,13 +186,15 @@ describe FileProcessor::CSV do
|
|
184
186
|
it "uses it to open the file, raising an error" do
|
185
187
|
expect {
|
186
188
|
processor
|
187
|
-
}.to raise_error
|
189
|
+
}.to raise_error(ArgumentError)
|
188
190
|
end
|
189
191
|
|
190
192
|
context "but the given encoding is ISO-8859-1" do
|
191
193
|
let(:options) { { encoding: 'ISO-8859-1' } }
|
192
194
|
|
193
|
-
|
195
|
+
it "returns the proper detected encoding" do
|
196
|
+
expect(processor.detected_encoding).to eq(Encoding.find(options[:encoding]))
|
197
|
+
end
|
194
198
|
|
195
199
|
it "opens the file properly" do
|
196
200
|
expect {
|
@@ -202,20 +206,24 @@ describe FileProcessor::CSV do
|
|
202
206
|
end
|
203
207
|
|
204
208
|
context "when the file is in US-ASCII" do
|
205
|
-
|
209
|
+
it "returns the proper detected encoding" do
|
210
|
+
expect(processor.detected_encoding).to eq(Encoding.find('utf-8'))
|
211
|
+
end
|
206
212
|
|
207
213
|
it "reads it with utf-8" do
|
208
|
-
processor.encoding.
|
214
|
+
expect(processor.encoding).to eq(Encoding.find('utf-8'))
|
209
215
|
end
|
210
216
|
end
|
211
217
|
|
212
218
|
context "when the file can be read in utf-8" do
|
213
219
|
let(:filename) { fixture('base-utf-8.csv') }
|
214
220
|
|
215
|
-
|
221
|
+
it "returns the proper detected encoding" do
|
222
|
+
expect(processor.detected_encoding).to eq(Encoding.find('utf-8'))
|
223
|
+
end
|
216
224
|
|
217
225
|
it "properly detects it" do
|
218
|
-
processor.encoding.
|
226
|
+
expect(processor.encoding).to eq(Encoding.find('utf-8'))
|
219
227
|
end
|
220
228
|
|
221
229
|
it "can iterate through all of its contents without raising an error" do
|
@@ -229,10 +237,12 @@ describe FileProcessor::CSV do
|
|
229
237
|
context "but it can be read in iso-8859-1" do
|
230
238
|
let(:filename) { fixture('base-iso-8859-1.csv') }
|
231
239
|
|
232
|
-
|
240
|
+
it "returns the proper detected encoding" do
|
241
|
+
expect(processor.detected_encoding).to eq(Encoding.find('iso-8859-1'))
|
242
|
+
end
|
233
243
|
|
234
244
|
it "properly detects it, transcoding it to utf-8" do
|
235
|
-
processor.encoding.
|
245
|
+
expect(processor.encoding).to eq(Encoding.find('utf-8'))
|
236
246
|
end
|
237
247
|
|
238
248
|
it "can iterate through all of its contents without raising an error" do
|
@@ -244,10 +254,12 @@ describe FileProcessor::CSV do
|
|
244
254
|
context "and no look-ahead is used" do
|
245
255
|
let(:options) { { row_sep: "\n" } }
|
246
256
|
|
247
|
-
|
257
|
+
it "returns the proper detected encoding" do
|
258
|
+
expect(processor.detected_encoding).to eq(Encoding.find('iso-8859-1'))
|
259
|
+
end
|
248
260
|
|
249
261
|
it "properly detects it, transcoding it to utf-8" do
|
250
|
-
processor.encoding.
|
262
|
+
expect(processor.encoding).to eq(Encoding.find('utf-8'))
|
251
263
|
end
|
252
264
|
|
253
265
|
it "can iterate through all of its contents without raising an error" do
|
@@ -264,19 +276,19 @@ describe FileProcessor::CSV do
|
|
264
276
|
let(:filename) { fixture('base.csv.gz') }
|
265
277
|
|
266
278
|
it "detects that the file is gzipped and decompress it" do
|
267
|
-
processor.shift.
|
279
|
+
expect(processor.shift).to eq(['A', 'B', 'C']) # first line decompressed
|
268
280
|
end
|
269
281
|
|
270
|
-
it {
|
282
|
+
it { is_expected.to be_gzipped }
|
271
283
|
|
272
284
|
context "when the file is in ISO-8859-1 encoding" do
|
273
285
|
let(:filename) { fixture('base-iso-8859-1.csv.gz') }
|
274
286
|
|
275
287
|
it "detects that the file is gzipped and decompress it" do
|
276
|
-
processor.shift.
|
288
|
+
expect(processor.shift).to eq(['A', 'B', 'C']) # first line decompressed
|
277
289
|
end
|
278
290
|
|
279
|
-
it {
|
291
|
+
it { is_expected.to be_gzipped }
|
280
292
|
end
|
281
293
|
|
282
294
|
context "when { gzipped: false } options is passed" do
|
@@ -285,7 +297,7 @@ describe FileProcessor::CSV do
|
|
285
297
|
context "and the file is not gzipped" do
|
286
298
|
let(:filename) { fixture('base.csv') }
|
287
299
|
|
288
|
-
it {
|
300
|
+
it { is_expected.to_not be_gzipped }
|
289
301
|
|
290
302
|
it "does not raise an error" do
|
291
303
|
expect {
|
@@ -296,7 +308,7 @@ describe FileProcessor::CSV do
|
|
296
308
|
|
297
309
|
context "and the file is gzipped" do
|
298
310
|
it "does not attempt to detect it, reading data as it were UTF-8" do
|
299
|
-
processor.shift.
|
311
|
+
expect(processor.shift).to_not eq(['A', 'B', 'C'])
|
300
312
|
end
|
301
313
|
end
|
302
314
|
end
|
@@ -307,7 +319,7 @@ describe FileProcessor::CSV do
|
|
307
319
|
context "and the file is not gzipped" do
|
308
320
|
let(:filename) { fixture('base.csv') }
|
309
321
|
|
310
|
-
it {
|
322
|
+
it { is_expected.to_not be_gzipped }
|
311
323
|
|
312
324
|
it "does not raise an error" do
|
313
325
|
expect {
|
@@ -318,7 +330,7 @@ describe FileProcessor::CSV do
|
|
318
330
|
|
319
331
|
context "and the file is gzipped" do
|
320
332
|
it "properly assumes that the file is gzipped and decompress it" do
|
321
|
-
processor.shift.
|
333
|
+
expect(processor.shift).to eq(['A', 'B', 'C']) # first line decompressed
|
322
334
|
end
|
323
335
|
end
|
324
336
|
end
|
@@ -430,11 +442,11 @@ describe FileProcessor::CSV do
|
|
430
442
|
|
431
443
|
describe ".open" do
|
432
444
|
subject(:processor) { double(FileProcessor::CSV, close: true) }
|
433
|
-
before { FileProcessor::CSV.
|
445
|
+
before { allow(FileProcessor::CSV).to receive(:new).with(filename, options).and_return(processor) }
|
434
446
|
|
435
447
|
context "without a block" do
|
436
448
|
it "creates a new instance and returns it" do
|
437
|
-
FileProcessor::CSV.open(filename, options).
|
449
|
+
expect(FileProcessor::CSV.open(filename, options)).to eq(processor)
|
438
450
|
end
|
439
451
|
end
|
440
452
|
|
@@ -5,7 +5,7 @@ describe FileProcessor::Tempfile do
|
|
5
5
|
let(:generated_path) { File.join(Dir.tmpdir, 'some-path') }
|
6
6
|
|
7
7
|
it "creates the file" do
|
8
|
-
File.exists?(temp_file.path).
|
8
|
+
expect(File.exists?(temp_file.path)).to be_truthy
|
9
9
|
end
|
10
10
|
|
11
11
|
it "opens file ready to be written" do
|
@@ -16,7 +16,7 @@ describe FileProcessor::Tempfile do
|
|
16
16
|
|
17
17
|
describe "#path" do
|
18
18
|
it "is generated using 'file-processor' basename" do
|
19
|
-
temp_file.path.start_with?(File.join(Dir.tmpdir, 'file-processor')).
|
19
|
+
expect(temp_file.path.start_with?(File.join(Dir.tmpdir, 'file-processor'))).to be_truthy
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
@@ -24,26 +24,26 @@ describe FileProcessor::Tempfile do
|
|
24
24
|
let!(:old_file) { temp_file.__getobj__ }
|
25
25
|
|
26
26
|
it "closes the old file" do
|
27
|
-
old_file.
|
27
|
+
expect(old_file).to receive(:close)
|
28
28
|
temp_file.reopen('r')
|
29
29
|
end
|
30
30
|
|
31
31
|
it "updates the delegated object" do
|
32
32
|
temp_file.reopen('r')
|
33
|
-
temp_file.__getobj__.
|
34
|
-
temp_file.__getobj__.
|
33
|
+
expect(temp_file.__getobj__).to_not eq(old_file)
|
34
|
+
expect(temp_file.__getobj__).to be_a(File)
|
35
35
|
end
|
36
36
|
|
37
37
|
it "reopens the path with the given mode" do
|
38
|
-
temp_file.
|
39
|
-
File.
|
38
|
+
allow(temp_file).to receive(:path).and_return(generated_path)
|
39
|
+
expect(File).to receive(:open).with(generated_path, 'r:utf-8', { perm: 384 })
|
40
40
|
temp_file.reopen('r:utf-8')
|
41
41
|
end
|
42
42
|
|
43
43
|
context "when the old file is already closed" do
|
44
44
|
it "does not closes the old file" do
|
45
45
|
old_file.close
|
46
|
-
old_file.
|
46
|
+
expect(old_file).to_not receive(:close)
|
47
47
|
temp_file.reopen('r')
|
48
48
|
end
|
49
49
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,12 +1,14 @@
|
|
1
1
|
require "bundler/setup"
|
2
2
|
|
3
3
|
require 'simplecov'
|
4
|
-
SimpleCov.start
|
4
|
+
SimpleCov.start do
|
5
|
+
add_filter '/spec'
|
6
|
+
end
|
5
7
|
|
6
8
|
Bundler.require :default
|
7
9
|
|
8
10
|
begin
|
9
|
-
require '
|
11
|
+
require 'byebug'
|
10
12
|
rescue LoadError
|
11
13
|
end
|
12
14
|
|
@@ -15,7 +17,6 @@ root = File.expand_path('../..', __FILE__)
|
|
15
17
|
Dir[File.join(root, "spec/support/**/*.rb")].each { |f| require f }
|
16
18
|
|
17
19
|
RSpec.configure do |config|
|
18
|
-
config.treat_symbols_as_metadata_keys_with_true_values = true
|
19
20
|
config.run_all_when_everything_filtered = true
|
20
21
|
config.filter_run :focus
|
21
22
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: file_processor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vicente Mundim
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-10-05 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: A more powerful CSV file processor
|
14
14
|
email:
|
@@ -17,10 +17,11 @@ executables: []
|
|
17
17
|
extensions: []
|
18
18
|
extra_rdoc_files: []
|
19
19
|
files:
|
20
|
-
- .gitignore
|
21
|
-
- .rspec
|
22
|
-
- .
|
23
|
-
- .
|
20
|
+
- ".gitignore"
|
21
|
+
- ".rspec"
|
22
|
+
- ".ruby-gemset"
|
23
|
+
- ".ruby-version"
|
24
|
+
- ".travis.yml"
|
24
25
|
- Gemfile
|
25
26
|
- Gemfile.lock
|
26
27
|
- LICENSE.txt
|
@@ -56,17 +57,17 @@ require_paths:
|
|
56
57
|
- lib
|
57
58
|
required_ruby_version: !ruby/object:Gem::Requirement
|
58
59
|
requirements:
|
59
|
-
- -
|
60
|
+
- - ">="
|
60
61
|
- !ruby/object:Gem::Version
|
61
62
|
version: '0'
|
62
63
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
63
64
|
requirements:
|
64
|
-
- -
|
65
|
+
- - ">="
|
65
66
|
- !ruby/object:Gem::Version
|
66
67
|
version: '0'
|
67
68
|
requirements: []
|
68
69
|
rubyforge_project:
|
69
|
-
rubygems_version: 2.
|
70
|
+
rubygems_version: 2.4.6
|
70
71
|
signing_key:
|
71
72
|
specification_version: 4
|
72
73
|
summary: A more powerful CSV file processor
|
data/.rvmrc
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
rvm 1.9.3@file_processor --create
|