csvreader 1.2.2 → 1.2.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Manifest.txt +11 -10
- data/Rakefile +6 -0
- data/{test/data → datasets}/beer.csv +0 -0
- data/{test/data → datasets}/beer11.csv +0 -0
- data/{test/data → datasets}/cars11.csv +0 -0
- data/{test/data → datasets}/cities11.csv +0 -0
- data/{test/data → datasets}/customers11.csv +0 -0
- data/{test/data → datasets}/iris.attrib.csv +0 -0
- data/{test/data → datasets}/iris11.csv +0 -0
- data/{test/data → datasets}/lcc.attrib.csv +0 -0
- data/{test/data → datasets}/shakespeare.csv +0 -0
- data/{test/data → datasets}/test.csv +0 -0
- data/lib/csvreader/base.rb +30 -0
- data/lib/csvreader/parser_json.rb +21 -2
- data/lib/csvreader/parser_std.rb +3 -3
- data/lib/csvreader/parser_tab.rb +5 -44
- data/lib/csvreader/parser_yaml.rb +24 -0
- data/lib/csvreader/reader_hash.rb +2 -0
- data/lib/csvreader/version.rb +1 -1
- data/test/helper.rb +1 -1
- metadata +55 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e54c57c44e895f8daacd12261b87195ab0ab6cd2
|
4
|
+
data.tar.gz: b63d0d183d98c3ab1f291e3bdf6168e0d5bd39fc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 06756ee95e4810ded31be95abb5136bf0d0c8d7b79e2e19df483590bac051b449daee4f6178571bf177635ec35847220d859a6b5ba72068325710f022dbb6115
|
7
|
+
data.tar.gz: 884f5eff36a5d4cf03e1d7d5bab3a53632361ad6a7ab09ce16a502c0d25f25dcfea025efa8d79e8127fd735627683c3d8a91f22e3c03cf3d033ff7e64d7004b0
|
data/Manifest.txt
CHANGED
@@ -3,6 +3,16 @@ LICENSE.md
|
|
3
3
|
Manifest.txt
|
4
4
|
README.md
|
5
5
|
Rakefile
|
6
|
+
datasets/beer.csv
|
7
|
+
datasets/beer11.csv
|
8
|
+
datasets/cars11.csv
|
9
|
+
datasets/cities11.csv
|
10
|
+
datasets/customers11.csv
|
11
|
+
datasets/iris.attrib.csv
|
12
|
+
datasets/iris11.csv
|
13
|
+
datasets/lcc.attrib.csv
|
14
|
+
datasets/shakespeare.csv
|
15
|
+
datasets/test.csv
|
6
16
|
lib/csvreader.rb
|
7
17
|
lib/csvreader/base.rb
|
8
18
|
lib/csvreader/buffer.rb
|
@@ -15,19 +25,10 @@ lib/csvreader/parser_std.rb
|
|
15
25
|
lib/csvreader/parser_strict.rb
|
16
26
|
lib/csvreader/parser_tab.rb
|
17
27
|
lib/csvreader/parser_table.rb
|
28
|
+
lib/csvreader/parser_yaml.rb
|
18
29
|
lib/csvreader/reader.rb
|
19
30
|
lib/csvreader/reader_hash.rb
|
20
31
|
lib/csvreader/version.rb
|
21
|
-
test/data/beer.csv
|
22
|
-
test/data/beer11.csv
|
23
|
-
test/data/cars11.csv
|
24
|
-
test/data/cities11.csv
|
25
|
-
test/data/customers11.csv
|
26
|
-
test/data/iris.attrib.csv
|
27
|
-
test/data/iris11.csv
|
28
|
-
test/data/lcc.attrib.csv
|
29
|
-
test/data/shakespeare.csv
|
30
|
-
test/data/test.csv
|
31
32
|
test/helper.rb
|
32
33
|
test/test_buffer.rb
|
33
34
|
test/test_converter.rb
|
data/Rakefile
CHANGED
@@ -17,6 +17,12 @@ Hoe.spec 'csvreader' do
|
|
17
17
|
self.readme_file = 'README.md'
|
18
18
|
self.history_file = 'HISTORY.md'
|
19
19
|
|
20
|
+
self.extra_deps = [
|
21
|
+
['tabreader', '>=1.0.1'],
|
22
|
+
['csvyaml', '>=0.1.0'],
|
23
|
+
['csvjson', '>=1.0.0']
|
24
|
+
]
|
25
|
+
|
20
26
|
self.licenses = ['Public Domain']
|
21
27
|
|
22
28
|
self.spec_extras = {
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/lib/csvreader/base.rb
CHANGED
@@ -9,6 +9,10 @@ require 'date' ## use for Date.parse and DateTime.parse
|
|
9
9
|
require 'yaml' ## used for (optional) meta data blocks
|
10
10
|
|
11
11
|
|
12
|
+
require 'tabreader'
|
13
|
+
require 'csvjson'
|
14
|
+
require 'csvyaml'
|
15
|
+
|
12
16
|
|
13
17
|
###
|
14
18
|
# our own code
|
@@ -19,6 +23,7 @@ require 'csvreader/parser_strict' # flexible (strict - no leading/trailing spa
|
|
19
23
|
require 'csvreader/parser_tab'
|
20
24
|
require 'csvreader/parser_fixed'
|
21
25
|
require 'csvreader/parser_json'
|
26
|
+
require 'csvreader/parser_yaml'
|
22
27
|
require 'csvreader/parser_table'
|
23
28
|
require 'csvreader/parser'
|
24
29
|
require 'csvreader/converter'
|
@@ -68,6 +73,8 @@ class Parser
|
|
68
73
|
TABLE = ParserTable.new ## space-separated e.g /[ \t]+/
|
69
74
|
FIXED = ParserFixed.new
|
70
75
|
|
76
|
+
JSON = ParserJson.new
|
77
|
+
YAML = ParserYaml.new
|
71
78
|
|
72
79
|
def self.default() DEFAULT; end ## alternative alias for DEFAULT
|
73
80
|
def self.numeric() NUMERIC; end
|
@@ -85,11 +92,17 @@ class Parser
|
|
85
92
|
def self.postgres() postgresql; end
|
86
93
|
def self.postgresql_text() POSTGRESQL_TEXT; end
|
87
94
|
def self.postgres_text() postgresql_text; end
|
95
|
+
|
88
96
|
def self.tab() TAB; end
|
89
97
|
def self.table() TABLE; end
|
90
98
|
def self.fixed() FIXED; end
|
91
99
|
def self.fix() fixed; end
|
92
100
|
def self.f() fixed; end
|
101
|
+
|
102
|
+
def self.json() JSON; end
|
103
|
+
def self.j() json; end
|
104
|
+
def self.yaml() YAML; end
|
105
|
+
def self.y() yaml; end
|
93
106
|
end # class Parser
|
94
107
|
end # class CsvReader
|
95
108
|
|
@@ -114,6 +127,8 @@ class CsvReader
|
|
114
127
|
TABLE = Builder.new( Parser::TABLE )
|
115
128
|
FIXED = Builder.new( Parser::FIXED )
|
116
129
|
|
130
|
+
JSON = Builder.new( Parser::JSON )
|
131
|
+
YAML = Builder.new( Parser::YAML )
|
117
132
|
|
118
133
|
def self.default() DEFAULT; end ## alternative alias for DEFAULT
|
119
134
|
def self.numeric() NUMERIC; end
|
@@ -131,11 +146,17 @@ class CsvReader
|
|
131
146
|
def self.postgres() postgresql; end
|
132
147
|
def self.postgresql_text() POSTGRESQL_TEXT; end
|
133
148
|
def self.postgres_text() postgresql_text; end
|
149
|
+
|
134
150
|
def self.tab() TAB; end
|
135
151
|
def self.table() TABLE; end
|
136
152
|
def self.fixed() FIXED; end
|
137
153
|
def self.fix() fixed; end
|
138
154
|
def self.f() fixed; end
|
155
|
+
|
156
|
+
def self.json() JSON; end
|
157
|
+
def self.j() json; end
|
158
|
+
def self.yaml() YAML; end
|
159
|
+
def self.y() yaml; end
|
139
160
|
end # class CsvReader
|
140
161
|
|
141
162
|
|
@@ -158,6 +179,9 @@ class CsvHashReader
|
|
158
179
|
TABLE = Builder.new( Parser::TABLE )
|
159
180
|
FIXED = Builder.new( Parser::FIXED )
|
160
181
|
|
182
|
+
JSON = Builder.new( Parser::JSON )
|
183
|
+
YAML = Builder.new( Parser::YAML )
|
184
|
+
|
161
185
|
|
162
186
|
def self.default() DEFAULT; end ## alternative alias for DEFAULT
|
163
187
|
def self.numeric() NUMERIC; end
|
@@ -171,11 +195,17 @@ class CsvHashReader
|
|
171
195
|
def self.postgres() postgresql; end
|
172
196
|
def self.postgresql_text() POSTGRESQL_TEXT; end
|
173
197
|
def self.postgres_text() postgresql_text; end
|
198
|
+
|
174
199
|
def self.tab() TAB; end
|
175
200
|
def self.table() TABLE; end
|
176
201
|
def self.fixed() FIXED; end
|
177
202
|
def self.fix() fixed; end
|
178
203
|
def self.f() fixed; end
|
204
|
+
|
205
|
+
def self.json() JSON; end
|
206
|
+
def self.j() json; end
|
207
|
+
def self.yaml() YAML; end
|
208
|
+
def self.y() yaml; end
|
179
209
|
end # class CsvHashReader
|
180
210
|
|
181
211
|
|
@@ -1,5 +1,24 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
3
|
|
4
|
-
|
5
|
-
|
4
|
+
class CsvReader
|
5
|
+
|
6
|
+
class ParserJson
|
7
|
+
|
8
|
+
def parse( data, **kwargs, &block )
|
9
|
+
## note: kwargs NOT used for now (but required for "protocol/interface" by other parsers)
|
10
|
+
|
11
|
+
## note: input: required each_line (string or io/file for example)
|
12
|
+
## assume data is a string or io/file handle
|
13
|
+
csv = CsvJson.new( data )
|
14
|
+
|
15
|
+
if block_given?
|
16
|
+
csv.each( &block )
|
17
|
+
else
|
18
|
+
csv.to_a
|
19
|
+
end
|
20
|
+
end ## method parse
|
21
|
+
|
22
|
+
|
23
|
+
end # class ParserJson
|
24
|
+
end # class CsvReader
|
data/lib/csvreader/parser_std.rb
CHANGED
@@ -378,8 +378,8 @@ def parse_meta( input )
|
|
378
378
|
skip_newline( input )
|
379
379
|
|
380
380
|
buf = "---\n" ## note: start buffer with yaml header line - why?
|
381
|
-
## YAML.load("") return false !!!
|
382
|
-
## YAML.load("---\n") returns nil -- yes!! if we get nil return empty hash {}
|
381
|
+
## ::YAML.load("") return false !!!
|
382
|
+
## ::YAML.load("---\n") returns nil -- yes!! if we get nil return empty hash {}
|
383
383
|
|
384
384
|
newline = true
|
385
385
|
|
@@ -406,7 +406,7 @@ def parse_meta( input )
|
|
406
406
|
end
|
407
407
|
end
|
408
408
|
|
409
|
-
data = YAML.load( buf )
|
409
|
+
data = ::YAML.load( buf ) ## note: MUST use "outer" scope (CsvReader defines its own YAML parser)
|
410
410
|
## todo: check edge cases - always should return a hash or nil
|
411
411
|
## what to do with just integer, string or array etc. ???
|
412
412
|
|
data/lib/csvreader/parser_tab.rb
CHANGED
@@ -5,58 +5,19 @@ class CsvReader
|
|
5
5
|
class ParserTab
|
6
6
|
|
7
7
|
def parse( data, **kwargs, &block )
|
8
|
-
|
9
|
-
## note: input: required each_line (string or io/file for example)
|
10
8
|
## note: kwargs NOT used for now (but required for "protocol/interface" by other parsers)
|
11
9
|
|
12
|
-
|
10
|
+
## note: input: required each_line (string or io/file for example)
|
11
|
+
## assume data is a string or io/file handle
|
12
|
+
tab = TabReader.new( data )
|
13
13
|
|
14
14
|
if block_given?
|
15
|
-
|
15
|
+
tab.each( &block )
|
16
16
|
else
|
17
|
-
|
18
|
-
|
19
|
-
parse_lines( input ) do |record|
|
20
|
-
records << record
|
21
|
-
end
|
22
|
-
|
23
|
-
records
|
17
|
+
tab.to_a
|
24
18
|
end
|
25
19
|
end ## method parse
|
26
20
|
|
27
21
|
|
28
|
-
|
29
|
-
private
|
30
|
-
|
31
|
-
def parse_lines( input, &block )
|
32
|
-
|
33
|
-
## note: each line only works with \n (windows) or \r\n (unix)
|
34
|
-
## will NOT work with \r (old mac, any others?) only!!!!
|
35
|
-
input.each_line do |line|
|
36
|
-
|
37
|
-
## puts "line:"
|
38
|
-
## pp line
|
39
|
-
|
40
|
-
## note: chomp('') if is an empty string,
|
41
|
-
## it will remove all trailing newlines from the string.
|
42
|
-
## use line.sub(/[\n\r]*$/, '') or similar instead - why? why not?
|
43
|
-
line = line.chomp( '' )
|
44
|
-
## pp line
|
45
|
-
|
46
|
-
# note: trailing empty fields get (auto-)trimmed by split !!!!!!!
|
47
|
-
# Solution!! change split( "\t" ) to split( "\t", -1 )
|
48
|
-
# If the limit parameter is omitted, trailing null fields are suppressed.
|
49
|
-
# If limit is a positive number, at most that number of fields will be returned
|
50
|
-
# (if limit is 1, the entire string is returned as the only entry in an array).
|
51
|
-
# If negative, there is no limit to the number of fields returned, and trailing null fields are not suppressed.
|
52
|
-
values = line.split( "\t", -1 )
|
53
|
-
## pp values
|
54
|
-
|
55
|
-
## note: requires block - enforce? how? why? why not?
|
56
|
-
block.call( values )
|
57
|
-
end
|
58
|
-
end # method parse_lines
|
59
|
-
|
60
|
-
|
61
22
|
end # class ParserTab
|
62
23
|
end # class CsvReader
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
|
4
|
+
class CsvReader
|
5
|
+
|
6
|
+
class ParserYaml
|
7
|
+
|
8
|
+
def parse( data, **kwargs, &block )
|
9
|
+
## note: kwargs NOT used for now (but required for "protocol/interface" by other parsers)
|
10
|
+
|
11
|
+
## note: input: required each_line (string or io/file for example)
|
12
|
+
## assume data is a string or io/file handle
|
13
|
+
csv = CsvYaml.new( data )
|
14
|
+
|
15
|
+
if block_given?
|
16
|
+
csv.each( &block )
|
17
|
+
else
|
18
|
+
csv.to_a
|
19
|
+
end
|
20
|
+
end ## method parse
|
21
|
+
|
22
|
+
|
23
|
+
end # class ParserYaml
|
24
|
+
end # class CsvReader
|
@@ -6,6 +6,8 @@ class CsvHashReader
|
|
6
6
|
## add convenience shortcuts / aliases for CsvReader support classes
|
7
7
|
Parser = CsvReader::Parser
|
8
8
|
ParserFixed = CsvReader::ParserFixed
|
9
|
+
ParserJson = CsvReader::ParserJson
|
10
|
+
ParserYaml = CsvReader::ParserYaml
|
9
11
|
Converter = CsvReader::Converter
|
10
12
|
|
11
13
|
|
data/lib/csvreader/version.rb
CHANGED
data/test/helper.rb
CHANGED
metadata
CHANGED
@@ -1,15 +1,57 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: csvreader
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.3
|
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-
|
11
|
+
date: 2018-11-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: tabreader
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.0.1
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.0.1
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: csvyaml
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.1.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.1.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: csvjson
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 1.0.0
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.0.0
|
13
55
|
- !ruby/object:Gem::Dependency
|
14
56
|
name: rdoc
|
15
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -54,6 +96,16 @@ files:
|
|
54
96
|
- Manifest.txt
|
55
97
|
- README.md
|
56
98
|
- Rakefile
|
99
|
+
- datasets/beer.csv
|
100
|
+
- datasets/beer11.csv
|
101
|
+
- datasets/cars11.csv
|
102
|
+
- datasets/cities11.csv
|
103
|
+
- datasets/customers11.csv
|
104
|
+
- datasets/iris.attrib.csv
|
105
|
+
- datasets/iris11.csv
|
106
|
+
- datasets/lcc.attrib.csv
|
107
|
+
- datasets/shakespeare.csv
|
108
|
+
- datasets/test.csv
|
57
109
|
- lib/csvreader.rb
|
58
110
|
- lib/csvreader/base.rb
|
59
111
|
- lib/csvreader/buffer.rb
|
@@ -66,19 +118,10 @@ files:
|
|
66
118
|
- lib/csvreader/parser_strict.rb
|
67
119
|
- lib/csvreader/parser_tab.rb
|
68
120
|
- lib/csvreader/parser_table.rb
|
121
|
+
- lib/csvreader/parser_yaml.rb
|
69
122
|
- lib/csvreader/reader.rb
|
70
123
|
- lib/csvreader/reader_hash.rb
|
71
124
|
- lib/csvreader/version.rb
|
72
|
-
- test/data/beer.csv
|
73
|
-
- test/data/beer11.csv
|
74
|
-
- test/data/cars11.csv
|
75
|
-
- test/data/cities11.csv
|
76
|
-
- test/data/customers11.csv
|
77
|
-
- test/data/iris.attrib.csv
|
78
|
-
- test/data/iris11.csv
|
79
|
-
- test/data/lcc.attrib.csv
|
80
|
-
- test/data/shakespeare.csv
|
81
|
-
- test/data/test.csv
|
82
125
|
- test/helper.rb
|
83
126
|
- test/test_buffer.rb
|
84
127
|
- test/test_converter.rb
|