csvreader 0.0.1 → 0.1.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 +4 -4
- data/Manifest.txt +4 -0
- data/lib/csvreader/version.rb +2 -2
- data/test/data/beer.csv +7 -0
- data/test/data/beer11.csv +51 -0
- data/test/helper.rb +16 -0
- data/test/test_reader.rb +119 -0
- metadata +5 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e6b05520911361eae641ef53b9550d11974478fe
|
4
|
+
data.tar.gz: a119bd4a8e85408b84b9683d8fa5aa61884bfb1e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a0938a895f630f06740ecb2d947adccb3f6384ad1f7c06316bde43d60b750fae76fda227138c5827c7da404590b96102feb8089e5fb83d056c180a313a4b17e1
|
7
|
+
data.tar.gz: 14cc7b7da521649b5713fb6932a9d201962fbf5bf9df2f09569066baaa29bdffc8edcc89e7903d2aceb7eb6df1c3f05ebff4b27623dc8a427cfaba0ddf4df8f1
|
data/Manifest.txt
CHANGED
data/lib/csvreader/version.rb
CHANGED
data/test/data/beer.csv
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
Brewery,City,Name,Abv
|
2
|
+
Andechser Klosterbrauerei,Andechs,Doppelbock Dunkel,7%
|
3
|
+
Augustiner Bräu München,München,Edelstoff,5.6%
|
4
|
+
Bayerische Staatsbrauerei Weihenstephan,Freising,Hefe Weissbier,5.4%
|
5
|
+
Brauerei Spezial,Bamberg,Rauchbier Märzen,5.1%
|
6
|
+
Hacker-Pschorr Bräu,München,Münchner Dunkel,5.0%
|
7
|
+
Staatliches Hofbräuhaus München,München,Hofbräu Oktoberfestbier,6.3%
|
@@ -0,0 +1,51 @@
|
|
1
|
+
#######
|
2
|
+
# try with some comments
|
3
|
+
# and blank lines even before header
|
4
|
+
|
5
|
+
Brewery,City,Name,Abv
|
6
|
+
Andechser Klosterbrauerei,Andechs,Doppelbock Dunkel,7%
|
7
|
+
Augustiner Bräu München,München,Edelstoff,5.6%
|
8
|
+
Bayerische Staatsbrauerei Weihenstephan,Freising,Hefe Weissbier,5.4%
|
9
|
+
|
10
|
+
Brauerei Spezial, Bamberg, Rauchbier Märzen, 5.1%
|
11
|
+
|
12
|
+
Hacker-Pschorr Bräu, München, Münchner Dunkel, 5.0%
|
13
|
+
|
14
|
+
## some more comments here
|
15
|
+
|
16
|
+
Staatliches Hofbräuhaus München,München,Hofbräu Oktoberfestbier,6.3%
|
17
|
+
|
18
|
+
## check for nil
|
19
|
+
"", ,,"",
|
20
|
+
|
21
|
+
## check for blank line with spaces
|
22
|
+
## yes, will get added as a record!! e.g. ["", nil, nil, nil]
|
23
|
+
## use regex to skip blank lines with spaces!!!!
|
24
|
+
|
25
|
+
|
26
|
+
## test double quotes and double quotes escaped
|
27
|
+
## note: double quotes do NOT work with leading AND/OR trailing spaces
|
28
|
+
## leads to:
|
29
|
+
## CSV::MalformedCSVError - Missing or stray quote in line xxx
|
30
|
+
##
|
31
|
+
## note: for now double quote does not accept leading AND/OR trailing spaces!!!!
|
32
|
+
##
|
33
|
+
## todo/fix: check liberal_quote option starting in csv ruby 2.4 ???
|
34
|
+
##
|
35
|
+
## examples:
|
36
|
+
## "value with comma, comma","some ""hello""","some ""hello""",
|
37
|
+
## works - but does NOT work (note the leading and trailing spaces for double quotes):
|
38
|
+
## "value with comma, comma" ,"some ""hello""", "some ""hello""",
|
39
|
+
##
|
40
|
+
## check for "multi-line":
|
41
|
+
## "hello
|
42
|
+
## and another line
|
43
|
+
## and another",two,three,
|
44
|
+
|
45
|
+
|
46
|
+
"value with comma, comma","some ""hello""","some ""hello""",
|
47
|
+
|
48
|
+
## check for "multi-line"
|
49
|
+
"hello
|
50
|
+
and another line
|
51
|
+
and another",two,three,
|
data/test/helper.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
## $:.unshift(File.dirname(__FILE__))
|
2
|
+
|
3
|
+
## minitest setup
|
4
|
+
|
5
|
+
require 'minitest/autorun'
|
6
|
+
|
7
|
+
|
8
|
+
## our own code
|
9
|
+
require 'csvreader'
|
10
|
+
|
11
|
+
## add test_data_dir helper
|
12
|
+
class CsvReader
|
13
|
+
def self.test_data_dir
|
14
|
+
"#{root}/test/data"
|
15
|
+
end
|
16
|
+
end
|
data/test/test_reader.rb
ADDED
@@ -0,0 +1,119 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
###
|
4
|
+
# to run use
|
5
|
+
# ruby -I ./lib -I ./test test/test_reader.rb
|
6
|
+
|
7
|
+
|
8
|
+
require 'helper'
|
9
|
+
|
10
|
+
class TestReader < MiniTest::Test
|
11
|
+
|
12
|
+
def test_read
|
13
|
+
puts "== read: beer.csv:"
|
14
|
+
table = CsvReader.read( "#{CsvReader.test_data_dir}/beer.csv" ) ## returns CSV::Table
|
15
|
+
|
16
|
+
pp table.class.name
|
17
|
+
pp table
|
18
|
+
pp table.to_a ## note: includes header (first row with column names)
|
19
|
+
|
20
|
+
table.each do |row| ## note: will skip (NOT include) header row!!
|
21
|
+
pp row
|
22
|
+
end
|
23
|
+
puts " #{table.size} rows" ## note: again will skip (NOT include) header row in count!!!
|
24
|
+
assert_equal 6, table.size
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_read_header_false
|
28
|
+
puts "== read (headers: false): beer.csv:"
|
29
|
+
data = CsvReader.read( "#{CsvReader.test_data_dir}/beer.csv", headers: false )
|
30
|
+
|
31
|
+
pp data.class.name
|
32
|
+
pp data
|
33
|
+
|
34
|
+
data.each do |row|
|
35
|
+
pp row
|
36
|
+
end
|
37
|
+
puts " #{data.size} rows"
|
38
|
+
assert_equal 7, data.size ## note: include header row in count
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
def test_read11
|
43
|
+
puts "== read: beer11.csv:"
|
44
|
+
table = CsvReader.read( "#{CsvReader.test_data_dir}/beer11.csv" )
|
45
|
+
pp table
|
46
|
+
pp table.to_a ## note: includes header (first row with column names)
|
47
|
+
|
48
|
+
assert true
|
49
|
+
end
|
50
|
+
|
51
|
+
|
52
|
+
def test_parse_line
|
53
|
+
puts "== parse_line:"
|
54
|
+
row = CsvReader.parse_line( <<TXT )
|
55
|
+
Augustiner Bräu München, München, Edelstoff, 5.6%
|
56
|
+
Bayerische Staatsbrauerei Weihenstephan, Freising, Hefe Weissbier, 5.4%
|
57
|
+
TXT
|
58
|
+
|
59
|
+
pp row
|
60
|
+
assert_equal ['Augustiner Bräu München', 'München', 'Edelstoff', '5.6%'], row
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_parse_line11
|
64
|
+
puts "== parse_line:"
|
65
|
+
row = CsvReader.parse_line( <<TXT )
|
66
|
+
#######
|
67
|
+
# try with some comments
|
68
|
+
# and blank lines even before header
|
69
|
+
|
70
|
+
Augustiner Bräu München, München, Edelstoff, 5.6%
|
71
|
+
Bayerische Staatsbrauerei Weihenstephan, Freising, Hefe Weissbier, 5.4%
|
72
|
+
TXT
|
73
|
+
|
74
|
+
pp row
|
75
|
+
assert_equal ['Augustiner Bräu München', 'München', 'Edelstoff', '5.6%'], row
|
76
|
+
end
|
77
|
+
|
78
|
+
def test_header
|
79
|
+
puts "== header: beer.csv:"
|
80
|
+
header = CsvReader.header( "#{CsvReader.test_data_dir}/beer.csv" )
|
81
|
+
pp header
|
82
|
+
assert_equal ['Brewery','City','Name','Abv'], header
|
83
|
+
end
|
84
|
+
|
85
|
+
def test_header11
|
86
|
+
puts "== header: beer11.csv:"
|
87
|
+
header = CsvReader.header( "#{CsvReader.test_data_dir}/beer11.csv" )
|
88
|
+
pp header
|
89
|
+
assert_equal ['Brewery','City','Name','Abv'], header
|
90
|
+
end
|
91
|
+
|
92
|
+
|
93
|
+
def test_foreach
|
94
|
+
puts "== foreach: beer.csv:"
|
95
|
+
CsvReader.foreach( "#{CsvReader.test_data_dir}/beer.csv" ) do |row|
|
96
|
+
pp row
|
97
|
+
pp row.fields
|
98
|
+
end
|
99
|
+
assert true
|
100
|
+
end
|
101
|
+
|
102
|
+
def test_foreach11
|
103
|
+
puts "== foreach: beer11.csv:"
|
104
|
+
CsvReader.foreach( "#{CsvReader.test_data_dir}/beer11.csv" ) do |row|
|
105
|
+
pp row
|
106
|
+
pp row.fields
|
107
|
+
end
|
108
|
+
assert true
|
109
|
+
end
|
110
|
+
|
111
|
+
def test_foreach_header_false
|
112
|
+
puts "== foreach (headers: false): beer11.csv:"
|
113
|
+
CsvReader.foreach( "#{CsvReader.test_data_dir}/beer11.csv", headers: false ) do |row|
|
114
|
+
pp row ## note: is Array (no .fields available!!!!!)
|
115
|
+
end
|
116
|
+
assert true
|
117
|
+
end
|
118
|
+
|
119
|
+
end # class TestReader
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: csvreader
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gerald Bauer
|
@@ -57,6 +57,10 @@ files:
|
|
57
57
|
- lib/csvreader.rb
|
58
58
|
- lib/csvreader/reader.rb
|
59
59
|
- lib/csvreader/version.rb
|
60
|
+
- test/data/beer.csv
|
61
|
+
- test/data/beer11.csv
|
62
|
+
- test/helper.rb
|
63
|
+
- test/test_reader.rb
|
60
64
|
homepage: https://github.com/csv11/csvreader
|
61
65
|
licenses:
|
62
66
|
- Public Domain
|