tabular 0.4.0 → 0.4.2
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/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
|