csvreader 0.5.0 → 0.6.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 +7 -1
- data/lib/csvreader.rb +12 -2
- data/lib/csvreader/buffer.rb +8 -3
- data/lib/csvreader/parser.rb +47 -336
- data/lib/csvreader/parser_std.rb +255 -0
- data/lib/csvreader/parser_strict.rb +269 -0
- data/lib/csvreader/parser_tab.rb +57 -0
- data/lib/csvreader/reader.rb +40 -100
- data/lib/csvreader/reader_hash.rb +88 -0
- data/lib/csvreader/version.rb +1 -1
- data/test/helper.rb +4 -0
- data/test/test_parser.rb +0 -3
- data/test/test_parser_formats.rb +8 -11
- data/test/test_parser_java.rb +219 -0
- data/test/{test_parser_rfc4180.rb → test_parser_strict.rb} +17 -20
- data/test/test_parser_tab.rb +48 -0
- data/test/test_reader.rb +15 -16
- metadata +9 -3
@@ -2,25 +2,22 @@
|
|
2
2
|
|
3
3
|
###
|
4
4
|
# to run use
|
5
|
-
# ruby -I ./lib -I ./test test/
|
5
|
+
# ruby -I ./lib -I ./test test/test_parser_strict.rb
|
6
6
|
|
7
7
|
|
8
8
|
require 'helper'
|
9
9
|
|
10
|
-
class
|
10
|
+
class TestParserStrict < MiniTest::Test
|
11
11
|
|
12
|
-
def setup
|
13
|
-
CsvReader::Parser.logger.level = :debug ## turn on "global" logging - move to helper - why? why not?
|
14
|
-
end
|
15
12
|
|
16
13
|
def parser
|
17
|
-
CsvReader::Parser::
|
14
|
+
CsvReader::Parser::STRICT
|
18
15
|
end
|
19
16
|
|
20
17
|
|
21
|
-
def
|
22
|
-
pp CsvReader::Parser::
|
23
|
-
pp CsvReader::Parser.
|
18
|
+
def test_parser_strict
|
19
|
+
pp CsvReader::Parser::STRICT
|
20
|
+
pp CsvReader::Parser.strict
|
24
21
|
assert true
|
25
22
|
end
|
26
23
|
|
@@ -65,31 +62,31 @@ end
|
|
65
62
|
def test_parse_empties
|
66
63
|
assert_equal [["","",""],["","",""]], parser.parse( %Q{"","",""\n,,} )
|
67
64
|
|
68
|
-
parser.config[:
|
65
|
+
parser.config[:quoted_empty_null] = true
|
69
66
|
|
70
|
-
|
71
|
-
assert_equal
|
67
|
+
assert_equal true, parser.config[:quoted_empty_null]
|
68
|
+
assert_equal false, parser.config[:unquoted_empty_null]
|
72
69
|
|
73
70
|
assert_equal [[nil,nil,nil," "],["","",""," "]], parser.parse( %Q{"","",""," "\n,,, } )
|
74
71
|
|
75
72
|
|
76
|
-
parser.config[:
|
73
|
+
parser.config[:unquoted_empty_null] = true
|
77
74
|
|
78
|
-
|
79
|
-
|
75
|
+
assert_equal true, parser.config[:quoted_empty_null]
|
76
|
+
assert_equal true, parser.config[:unquoted_empty_null]
|
80
77
|
|
81
78
|
assert_equal [[nil,nil,nil," "],[nil,nil,nil," "]], parser.parse( %Q{"","",""," "\n,,, } )
|
82
79
|
|
83
80
|
|
84
81
|
## reset to defaults
|
85
|
-
parser.config[:
|
86
|
-
parser.config[:
|
82
|
+
parser.config[:quoted_empty_null] = false
|
83
|
+
parser.config[:unquoted_empty_null] = false
|
87
84
|
|
88
|
-
assert_equal
|
89
|
-
assert_equal
|
85
|
+
assert_equal false, parser.config[:quoted_empty_null]
|
86
|
+
assert_equal false, parser.config[:unquoted_empty_null]
|
90
87
|
|
91
88
|
assert_equal [["","",""],["","",""]], parser.parse( %Q{"","",""\n,,} )
|
92
89
|
end
|
93
90
|
|
94
91
|
|
95
|
-
end # class
|
92
|
+
end # class TestParserStrict
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
###
|
4
|
+
# to run use
|
5
|
+
# ruby -I ./lib -I ./test test/test_parser_tab.rb
|
6
|
+
|
7
|
+
|
8
|
+
require 'helper'
|
9
|
+
|
10
|
+
class TestParserTab < MiniTest::Test
|
11
|
+
|
12
|
+
|
13
|
+
def parser
|
14
|
+
parser = CsvReader::Parser::TAB
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
def test_parser_tab
|
19
|
+
pp CsvReader::Parser::TAB
|
20
|
+
pp CsvReader::Parser.tab
|
21
|
+
assert true
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_parse
|
25
|
+
records = [["a", "b", "c"],
|
26
|
+
["1", "2", "3"],
|
27
|
+
["4", "5", "6"]]
|
28
|
+
|
29
|
+
## don't care about newlines (\r\n)
|
30
|
+
assert_equal records, parser.parse( "a\tb\tc\n1\t2\t3\n4\t5\t6" )
|
31
|
+
assert_equal records, parser.parse( "a\tb\tc\n1\t2\t3\n4\t5\t6\n" )
|
32
|
+
assert_equal records, parser.parse( "a\tb\tc\r\n1\t2\t3\r\n4\t5\t6\r\n" )
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_parse_empties
|
36
|
+
# note: trailing empty fields get (auto-)trimmed !!!!!!!
|
37
|
+
assert_equal [[]], parser.parse( "\t\t" )
|
38
|
+
assert_equal [[]], parser.parse( "\t\t\t\t" )
|
39
|
+
assert_equal [["1"]], parser.parse( "1\t\t" )
|
40
|
+
assert_equal [["1"]], parser.parse( "1\t\t\t\t" )
|
41
|
+
assert_equal [["","","3"]], parser.parse( "\t\t3" )
|
42
|
+
assert_equal [["","","","","5"]], parser.parse( "\t\t\t\t5" )
|
43
|
+
|
44
|
+
assert_equal [], parser.parse( "" )
|
45
|
+
end
|
46
|
+
|
47
|
+
|
48
|
+
end # class TestParserTab
|
data/test/test_reader.rb
CHANGED
@@ -9,22 +9,6 @@ require 'helper'
|
|
9
9
|
|
10
10
|
class TestReader < MiniTest::Test
|
11
11
|
|
12
|
-
def setup
|
13
|
-
CsvReader::Parser.logger.level = :debug ## turn on "global" logging - move to helper - why? why not?
|
14
|
-
end
|
15
|
-
|
16
|
-
|
17
|
-
def test_read
|
18
|
-
puts "== read: beer.csv:"
|
19
|
-
rows = CsvReader.read( "#{CsvReader.test_data_dir}/beer.csv" )
|
20
|
-
pp rows
|
21
|
-
|
22
|
-
rows.each do |row|
|
23
|
-
pp row
|
24
|
-
end
|
25
|
-
puts " #{rows.size} rows"
|
26
|
-
assert_equal 7, rows.size ## note: include header row in count
|
27
|
-
end
|
28
12
|
|
29
13
|
|
30
14
|
|
@@ -54,6 +38,21 @@ TXT
|
|
54
38
|
assert_equal ['Augustiner Bräu München', 'München', 'Edelstoff', '5.6%'], row
|
55
39
|
end
|
56
40
|
|
41
|
+
|
42
|
+
|
43
|
+
def test_read
|
44
|
+
puts "== read: beer.csv:"
|
45
|
+
rows = CsvReader.read( "#{CsvReader.test_data_dir}/beer.csv" )
|
46
|
+
pp rows
|
47
|
+
|
48
|
+
rows.each do |row|
|
49
|
+
pp row
|
50
|
+
end
|
51
|
+
puts " #{rows.size} rows"
|
52
|
+
assert_equal 7, rows.size ## note: include header row in count
|
53
|
+
end
|
54
|
+
|
55
|
+
|
57
56
|
def test_header
|
58
57
|
puts "== header: beer.csv:"
|
59
58
|
header = CsvReader.header( "#{CsvReader.test_data_dir}/beer.csv" )
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: csvreader
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gerald Bauer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-10-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rdoc
|
@@ -57,7 +57,11 @@ files:
|
|
57
57
|
- lib/csvreader.rb
|
58
58
|
- lib/csvreader/buffer.rb
|
59
59
|
- lib/csvreader/parser.rb
|
60
|
+
- lib/csvreader/parser_std.rb
|
61
|
+
- lib/csvreader/parser_strict.rb
|
62
|
+
- lib/csvreader/parser_tab.rb
|
60
63
|
- lib/csvreader/reader.rb
|
64
|
+
- lib/csvreader/reader_hash.rb
|
61
65
|
- lib/csvreader/version.rb
|
62
66
|
- test/data/beer.csv
|
63
67
|
- test/data/beer11.csv
|
@@ -65,7 +69,9 @@ files:
|
|
65
69
|
- test/helper.rb
|
66
70
|
- test/test_parser.rb
|
67
71
|
- test/test_parser_formats.rb
|
68
|
-
- test/
|
72
|
+
- test/test_parser_java.rb
|
73
|
+
- test/test_parser_strict.rb
|
74
|
+
- test/test_parser_tab.rb
|
69
75
|
- test/test_reader.rb
|
70
76
|
- test/test_reader_hash.rb
|
71
77
|
homepage: https://github.com/csv11/csvreader
|