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 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