rcsvreader 0.1.2 → 0.1.3
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.
- data/lib/csv_reader.rb +10 -10
- data/test/data/foo.csv +1 -1
- data/test/data/foo2.csv +5 -0
- data/test/test.rb +6 -0
- metadata +20 -9
data/lib/csv_reader.rb
CHANGED
@@ -16,10 +16,10 @@ module CSVReader
|
|
16
16
|
|
17
17
|
class Reader
|
18
18
|
|
19
|
-
def initialize(file,
|
19
|
+
def initialize(file, mandatory_field)
|
20
20
|
@file = file
|
21
|
-
check_header(
|
22
|
-
@
|
21
|
+
check_header(mandatory_field)
|
22
|
+
@mandatory_field = mandatory_field
|
23
23
|
end
|
24
24
|
|
25
25
|
# Iterates through the CSV file
|
@@ -42,14 +42,14 @@ module CSVReader
|
|
42
42
|
return @header
|
43
43
|
end
|
44
44
|
|
45
|
-
def check_header(
|
45
|
+
def check_header(mandatory_field)
|
46
46
|
curr_header = header
|
47
|
-
if (
|
47
|
+
if (mandatory_field.empty?)
|
48
48
|
raise InvalidHeaderException, "Expected header cannot be empty."
|
49
49
|
end
|
50
|
-
if (curr_header.size <
|
51
|
-
(curr_header &
|
52
|
-
raise InvalidHeaderException, "Expected header #{
|
50
|
+
if (curr_header.size < mandatory_field.size ||
|
51
|
+
(curr_header & mandatory_field).empty?)
|
52
|
+
raise InvalidHeaderException, "Expected header #{mandatory_field} does not match or is not contained in the current header #{curr_header}."
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
@@ -66,14 +66,14 @@ module CSVReader
|
|
66
66
|
def parse_row(r)
|
67
67
|
row = {}
|
68
68
|
i = 0
|
69
|
-
@
|
69
|
+
@mandatory_field.each do |column|
|
70
70
|
row[column] = r[header.index(column)]
|
71
71
|
i += 1
|
72
72
|
end
|
73
73
|
return row
|
74
74
|
end
|
75
75
|
|
76
|
-
private :parse_row, :
|
76
|
+
private :parse_row, :check_header
|
77
77
|
|
78
78
|
end
|
79
79
|
|
data/test/data/foo.csv
CHANGED
data/test/data/foo2.csv
ADDED
data/test/test.rb
CHANGED
@@ -28,6 +28,12 @@ class TestCSVReader < Test::Unit::TestCase
|
|
28
28
|
assert_equal expected_lines, lines
|
29
29
|
end
|
30
30
|
|
31
|
+
def test_header
|
32
|
+
expected_header = ["name","email"]
|
33
|
+
reader = CSVReader::Reader.new("#{@data_dir}/foo.csv", expected_header)
|
34
|
+
assert_equal reader.header, expected_header
|
35
|
+
end
|
36
|
+
|
31
37
|
def test_fetch_all_rows_and_all_columns_unsorted
|
32
38
|
reader = CSVReader::Reader.new("#{@data_dir}/foo.csv", ["email","name"])
|
33
39
|
expected_lines = 4
|
metadata
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rcsvreader
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 1
|
8
|
+
- 3
|
9
|
+
version: 0.1.3
|
5
10
|
platform: ruby
|
6
11
|
authors:
|
7
12
|
- Daniel Quirino Oliveira
|
@@ -9,19 +14,22 @@ autorequire: name
|
|
9
14
|
bindir: bin
|
10
15
|
cert_chain: []
|
11
16
|
|
12
|
-
date: 2010-
|
17
|
+
date: 2010-04-06 00:00:00 -03:00
|
13
18
|
default_executable:
|
14
19
|
dependencies:
|
15
20
|
- !ruby/object:Gem::Dependency
|
16
21
|
name: ccsv
|
17
|
-
|
18
|
-
|
19
|
-
version_requirements: !ruby/object:Gem::Requirement
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
20
24
|
requirements:
|
21
25
|
- - "="
|
22
26
|
- !ruby/object:Gem::Version
|
27
|
+
segments:
|
28
|
+
- 0
|
29
|
+
- 1
|
23
30
|
version: "0.1"
|
24
|
-
|
31
|
+
type: :runtime
|
32
|
+
version_requirements: *id001
|
25
33
|
description:
|
26
34
|
email: daniel@nullability.org
|
27
35
|
executables: []
|
@@ -45,21 +53,24 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
45
53
|
requirements:
|
46
54
|
- - ">="
|
47
55
|
- !ruby/object:Gem::Version
|
56
|
+
segments:
|
57
|
+
- 0
|
48
58
|
version: "0"
|
49
|
-
version:
|
50
59
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
51
60
|
requirements:
|
52
61
|
- - ">="
|
53
62
|
- !ruby/object:Gem::Version
|
63
|
+
segments:
|
64
|
+
- 0
|
54
65
|
version: "0"
|
55
|
-
version:
|
56
66
|
requirements: []
|
57
67
|
|
58
68
|
rubyforge_project:
|
59
|
-
rubygems_version: 1.3.
|
69
|
+
rubygems_version: 1.3.6
|
60
70
|
signing_key:
|
61
71
|
specification_version: 3
|
62
72
|
summary: Yet another CSV parser with CSV header validation, based on CCSV (http://github.com/fauna/ccsv/).
|
63
73
|
test_files:
|
64
74
|
- test/data/foo.csv
|
75
|
+
- test/data/foo2.csv
|
65
76
|
- test/test.rb
|