csvreader 0.0.1 → 0.1.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
  SHA1:
3
- metadata.gz: 12819f4da3e9fb0121d72d1832103b914983d618
4
- data.tar.gz: bc02fabb9e4b5627a3e44dc4f6d00b0f4d0a94e0
3
+ metadata.gz: e6b05520911361eae641ef53b9550d11974478fe
4
+ data.tar.gz: a119bd4a8e85408b84b9683d8fa5aa61884bfb1e
5
5
  SHA512:
6
- metadata.gz: 5abae0494cb1799d312ddf91b1baa73a4e8798510a064513dd4411cbc9e10fd64a31ef3522549810e8c0c0b9bba2b9070438120e3bf7cd504ee57db821634943
7
- data.tar.gz: a113bbb46e2faa262f9f7133a083b021a7ba5240a4b8a5afacdaedf1dd82ba5a66831a11283a6ffa62dadd0274422f3ca4fdc46ab63cbb6eb2e8ed38ce531e31
6
+ metadata.gz: a0938a895f630f06740ecb2d947adccb3f6384ad1f7c06316bde43d60b750fae76fda227138c5827c7da404590b96102feb8089e5fb83d056c180a313a4b17e1
7
+ data.tar.gz: 14cc7b7da521649b5713fb6932a9d201962fbf5bf9df2f09569066baaa29bdffc8edcc89e7903d2aceb7eb6df1c3f05ebff4b27623dc8a427cfaba0ddf4df8f1
@@ -6,3 +6,7 @@ Rakefile
6
6
  lib/csvreader.rb
7
7
  lib/csvreader/reader.rb
8
8
  lib/csvreader/version.rb
9
+ test/data/beer.csv
10
+ test/data/beer11.csv
11
+ test/helper.rb
12
+ test/test_reader.rb
@@ -4,8 +4,8 @@
4
4
  class CsvReader ## note: uses a class for now - change to module - why? why not?
5
5
 
6
6
  MAJOR = 0 ## todo: namespace inside version or something - why? why not??
7
- MINOR = 0
8
- PATCH = 1
7
+ MINOR = 1
8
+ PATCH = 0
9
9
  VERSION = [MAJOR,MINOR,PATCH].join('.')
10
10
 
11
11
 
@@ -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,
@@ -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
@@ -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.1
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