csvreader 1.2.2 → 1.2.3
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 +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
|