tabular 0.4.0 → 0.4.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README +1 -0
- data/lib/tabular/column_mapper.rb +1 -1
- data/lib/tabular/row.rb +62 -42
- data/lib/tabular/tables/file_reading.rb +1 -1
- data/lib/tabular/version.rb +1 -1
- data/tabular.gemspec +2 -2
- metadata +8 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 06bed6b335edf9465b7f56b489f5544ec11b4ee4
|
4
|
+
data.tar.gz: 8679fb4cd37f748c6f9f0f6e9fe80e01af31cb49
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 70e496dbbf3fce7bc1350905279fb895d64197f8f4403de65572317661b6d64024ee94d2377aa0e5225840e5c9a8cc80ae3bf1fe9b09d5fca4b44ff142ac7ab3
|
7
|
+
data.tar.gz: 3a35d6603c2c8fe97b8db93ed19817e347530f2b596d2cf9fc8a6b681e55a26f05271fbca172581f8e36123d48457038a82a347e1320e16b5d237b834a110c0c
|
data/README
CHANGED
@@ -62,6 +62,7 @@ There's basic test coverage. More comprehensive test coverage needs to be extrac
|
|
62
62
|
|
63
63
|
Changes
|
64
64
|
-------
|
65
|
+
0.4.2 Refactor minor ugly things. No behavior changes.
|
65
66
|
0.4.0 rchristensen: Add sheet argument to Table.read
|
66
67
|
0.3.0 Revise Table creation methods to something sensible. Use Roo to read
|
67
68
|
spreadsheets. Support for xlsx.
|
data/lib/tabular/row.rb
CHANGED
@@ -115,7 +115,7 @@ module Tabular
|
|
115
115
|
def to_space_delimited
|
116
116
|
_cells = []
|
117
117
|
|
118
|
-
hash.each do |key,
|
118
|
+
hash.each do |key, _|
|
119
119
|
_cells << (render(key) || "").ljust(columns[key].width)
|
120
120
|
end
|
121
121
|
|
@@ -134,45 +134,61 @@ module Tabular
|
|
134
134
|
protected
|
135
135
|
|
136
136
|
def hash #:nodoc:
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
else
|
165
|
-
@hash[column.key] = @array[index]
|
166
|
-
end
|
167
|
-
end
|
137
|
+
@hash ||= build_hash
|
138
|
+
end
|
139
|
+
|
140
|
+
def build_hash #:nodoc:
|
141
|
+
_hash = Hash.new
|
142
|
+
columns.each do |column|
|
143
|
+
if column.key
|
144
|
+
_hash[column.key] = value_for_hash(column)
|
145
|
+
end
|
146
|
+
end
|
147
|
+
_hash
|
148
|
+
end
|
149
|
+
|
150
|
+
def value_for_hash(column) #:nodoc:
|
151
|
+
index = columns.index(column.key)
|
152
|
+
return nil unless index
|
153
|
+
|
154
|
+
value = @array[index]
|
155
|
+
|
156
|
+
case column.column_type
|
157
|
+
when :boolean
|
158
|
+
[ 1, "1", true, "true" ].include?(value)
|
159
|
+
when :date
|
160
|
+
if date?(value)
|
161
|
+
value
|
162
|
+
else
|
163
|
+
parse_date value, column.key, index
|
168
164
|
end
|
165
|
+
else
|
166
|
+
value
|
169
167
|
end
|
170
|
-
@hash
|
171
168
|
end
|
172
169
|
|
173
170
|
|
174
171
|
private
|
175
172
|
|
173
|
+
def date?(value)
|
174
|
+
value.is_a?(Date) || value.is_a?(DateTime) || value.is_a?(Time)
|
175
|
+
end
|
176
|
+
|
177
|
+
def parse_date(value, key, index)
|
178
|
+
return nil unless value
|
179
|
+
|
180
|
+
begin
|
181
|
+
Date.parse(value.to_s, true)
|
182
|
+
rescue ArgumentError
|
183
|
+
date = parse_invalid_date(value)
|
184
|
+
if date
|
185
|
+
date
|
186
|
+
else
|
187
|
+
raise ArgumentError, "'#{key}' index #{index} #{value}' is not a valid date"
|
188
|
+
end
|
189
|
+
end
|
190
|
+
end
|
191
|
+
|
176
192
|
# Handle common m/d/yy case that Date.parse dislikes
|
177
193
|
def parse_invalid_date(value)
|
178
194
|
return unless value
|
@@ -183,19 +199,23 @@ module Tabular
|
|
183
199
|
month = parts[0].to_i
|
184
200
|
day = parts[1].to_i
|
185
201
|
year = parts[2].to_i
|
186
|
-
return unless month >=1 && month <= 12 && day >= 1 && day <= 31
|
202
|
+
return unless month >= 1 && month <= 12 && day >= 1 && day <= 31
|
203
|
+
|
204
|
+
year = add_century_to(year)
|
187
205
|
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
206
|
+
Date.new(year, month, day)
|
207
|
+
end
|
208
|
+
|
209
|
+
def add_century_to(year)
|
210
|
+
if year >= 0 && year < 69
|
211
|
+
2000 + year
|
192
212
|
elsif year > 69 && year < 100
|
193
|
-
|
213
|
+
1900 + year
|
194
214
|
elsif year < 1900 || year > 2050
|
195
|
-
|
215
|
+
nil
|
216
|
+
else
|
217
|
+
year
|
196
218
|
end
|
197
|
-
|
198
|
-
Date.new(year, month, day)
|
199
219
|
end
|
200
220
|
end
|
201
221
|
end
|
data/lib/tabular/version.rb
CHANGED
data/tabular.gemspec
CHANGED
@@ -37,6 +37,6 @@ Gem::Specification.new do |s|
|
|
37
37
|
s.require_paths = ["lib"]
|
38
38
|
s.summary = "Read, write, and manipulate CSV, tab-delimited and Excel data"
|
39
39
|
|
40
|
-
s.add_development_dependency "roo", "~>
|
41
|
-
s.add_development_dependency "roo-xls"
|
40
|
+
s.add_development_dependency "roo", "~> 2.0"
|
41
|
+
s.add_development_dependency "roo-xls", "~> 0.0.1"
|
42
42
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tabular
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Scott Willson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-11-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: roo
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '2.0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '2.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: roo-xls
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 0.0.1
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 0.0.1
|
41
41
|
description: Tabular is a Ruby library for reading, writing, and manipulating CSV,
|
42
42
|
tab-delimited and Excel data.
|
43
43
|
email: scott.willson@gmail.com
|