csvhuman 1.0.0 → 1.0.1
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 +5 -0
- data/lib/csvhuman/tag.rb +31 -2
- data/lib/csvhuman/version.rb +1 -1
- data/test/data/sample1.csv +10 -0
- data/test/data/sample2.csv +7 -0
- data/test/data/sample3.csv +11 -0
- data/test/data/sample4.csv +8 -0
- data/test/test_samples.rb +58 -0
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d8038f1824b8772b53f57f7dc00c67ca902fd872
|
4
|
+
data.tar.gz: a95430def44f77428a32b4ceb80f12c96d078199
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a2ee778e98288478930b92cb066b8d8ee65da61dca3d911e3f3de12c5ee3a0d0f3451db5ea1426c1c59a5a8cd6fc9ecb2bb509d8982e79b1ff0ce8d8c353765e
|
7
|
+
data.tar.gz: e02189132d596e2b5abc654f55c9dcf925ed96d0d5008b8b2eba956cdfc0044827c374409e2e22e45c95791ed5db256c441210a36d81172c53f3178007f8cc40
|
data/Manifest.txt
CHANGED
@@ -9,8 +9,13 @@ lib/csvhuman/converter.rb
|
|
9
9
|
lib/csvhuman/reader.rb
|
10
10
|
lib/csvhuman/tag.rb
|
11
11
|
lib/csvhuman/version.rb
|
12
|
+
test/data/sample1.csv
|
13
|
+
test/data/sample2.csv
|
14
|
+
test/data/sample3.csv
|
15
|
+
test/data/sample4.csv
|
12
16
|
test/data/test.csv
|
13
17
|
test/helper.rb
|
14
18
|
test/test_header_converter.rb
|
15
19
|
test/test_reader.rb
|
20
|
+
test/test_samples.rb
|
16
21
|
test/test_tags.rb
|
data/lib/csvhuman/tag.rb
CHANGED
@@ -61,16 +61,22 @@ class Tag
|
|
61
61
|
|
62
62
|
if name == 'date'
|
63
63
|
Date
|
64
|
-
|
64
|
+
## todo/fix: add more well-known names with num required!!!
|
65
|
+
elsif ['affected', 'inneed', 'targeted', 'reached', 'population'].include?( name )
|
65
66
|
Integer
|
66
67
|
else
|
67
68
|
## check attributes
|
68
69
|
if attributes.nil? || attributes.empty?
|
69
70
|
String ## assume (default to) string
|
70
|
-
elsif attributes.include?( 'num' )
|
71
|
+
elsif attributes.include?( 'num' ) ||
|
72
|
+
attributes.include?( 'id') ## assume id is (always) a rowid - why? why not?
|
71
73
|
Integer
|
72
74
|
elsif attributes.include?( 'date' ) ### todo/check: exists +date?
|
73
75
|
Date
|
76
|
+
elsif name == 'geo' && (attributes.include?('lat') ||
|
77
|
+
attributes.include?('lon') ||
|
78
|
+
attributes.include?('elevation'))
|
79
|
+
Float
|
74
80
|
elsif attributes.include?( 'killed' ) ||
|
75
81
|
attributes.include?( 'injured' ) ||
|
76
82
|
attributes.include?( 'infected' ) ||
|
@@ -151,12 +157,17 @@ class Tag
|
|
151
157
|
def typecast( value ) ## use convert or call - why? why not?
|
152
158
|
if @type == Integer
|
153
159
|
conv_to_i( value )
|
160
|
+
elsif @type == Float
|
161
|
+
conv_to_f( value )
|
162
|
+
elsif @type == Date
|
163
|
+
conv_to_date( value )
|
154
164
|
else ## assume String
|
155
165
|
# pass through as is
|
156
166
|
value
|
157
167
|
end
|
158
168
|
end
|
159
169
|
|
170
|
+
|
160
171
|
private
|
161
172
|
def conv_to_i( value )
|
162
173
|
if value.nil? || value.empty?
|
@@ -166,7 +177,25 @@ private
|
|
166
177
|
end
|
167
178
|
end
|
168
179
|
|
180
|
+
def conv_to_f( value )
|
181
|
+
if value.nil? || value.empty?
|
182
|
+
nil ## return nil - why? why not?
|
183
|
+
else
|
184
|
+
## todo/fix: add support for NaN, Inf, -Inf etc.
|
185
|
+
## how to deal with conversion errors (throw exception? ignore? NaN? why? why not?)
|
186
|
+
Float( value )
|
187
|
+
end
|
188
|
+
end
|
169
189
|
|
190
|
+
def conv_to_date( value )
|
191
|
+
if value.nil? || value.empty?
|
192
|
+
nil ## return nil - why? why not?
|
193
|
+
else
|
194
|
+
## todo/fix: add support for more formats
|
195
|
+
## how to deal with conversion errors (throw exception? ignore? why? why not?)
|
196
|
+
Date.strptime( value, "%Y-%m-%d" )
|
197
|
+
end
|
198
|
+
end
|
170
199
|
end # class Tag
|
171
200
|
|
172
201
|
|
data/lib/csvhuman/version.rb
CHANGED
@@ -0,0 +1,10 @@
|
|
1
|
+
%%%%%%%%%%%%%%%%%%%%%
|
2
|
+
% sample from HXL tagging conventions (version 1.1)
|
3
|
+
% see http://hxlstandard.org/standard/1_1final/tagging/
|
4
|
+
|
5
|
+
CAMP INFORMATION, , NEEDS
|
6
|
+
LOCATION NAME, LOCATION CODE, NUMBER AFFECTED
|
7
|
+
#loc +name, #loc +code, #affected
|
8
|
+
Camp A, 01000001, 2000
|
9
|
+
Camp B, 01000002, 750
|
10
|
+
Camp C, 01000003, 1920
|
@@ -0,0 +1,7 @@
|
|
1
|
+
%%%%%%%%%%%%%%%%%%%%%
|
2
|
+
% sample from HXL tagging conventions (version 1.1)
|
3
|
+
% see http://hxlstandard.org/standard/1_1final/tagging/
|
4
|
+
|
5
|
+
#event+id, #affected+killed, #region, #meta+source+reliability, #date+reported, #geo+lat, #geo+lon
|
6
|
+
1, 1, Mediterranean, Verified, 2015-11-05, 36.891500, 27.287700
|
7
|
+
3, 1, Central America incl. Mexico, Partially Verified, 2015-11-03, 15.956400, -93.663099
|
@@ -0,0 +1,11 @@
|
|
1
|
+
%%%%%%%%%%%%%%%%%%%%%
|
2
|
+
% sample from HXL tagging conventions (version 1.1)
|
3
|
+
% see http://hxlstandard.org/standard/1_1final/tagging/
|
4
|
+
|
5
|
+
P-CODE 1, P-CODE 2, P-CODE 3
|
6
|
+
#loc+code, #loc+code, #loc+code
|
7
|
+
020503
|
8
|
+
060107, 060108
|
9
|
+
173219
|
10
|
+
530012
|
11
|
+
530013, 530015, 279333
|
@@ -0,0 +1,8 @@
|
|
1
|
+
%%%%%%%%%%%%%%%%%%%%%
|
2
|
+
% sample from HXL tagging conventions (version 1.1)
|
3
|
+
% see http://hxlstandard.org/standard/1_1final/tagging/
|
4
|
+
|
5
|
+
REGION, 2008, 2009, 2010, 2011
|
6
|
+
#adm1 +name, #affected+label, #affected+label, #affected+label, #affected+label
|
7
|
+
Coast District, 0, 30, 100, 250
|
8
|
+
Mountain District, 15, 75, 30, 45
|
@@ -0,0 +1,58 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
###
|
4
|
+
# to run use
|
5
|
+
# ruby -I ./lib -I ./test test/test_samples.rb
|
6
|
+
|
7
|
+
|
8
|
+
require 'helper'
|
9
|
+
|
10
|
+
class TestSamples < MiniTest::Test
|
11
|
+
|
12
|
+
|
13
|
+
def test_sample1
|
14
|
+
recs = CsvHuman.read( "#{CsvHuman.test_data_dir}/sample1.csv" )
|
15
|
+
## pp recs
|
16
|
+
assert_equal [{"loc+name"=>"Camp A", "loc+code"=>"01000001", "affected"=>2000},
|
17
|
+
{"loc+name"=>"Camp B", "loc+code"=>"01000002", "affected"=>750},
|
18
|
+
{"loc+name"=>"Camp C", "loc+code"=>"01000003", "affected"=>1920}], recs
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_sample2
|
22
|
+
recs = CsvHuman.read( "#{CsvHuman.test_data_dir}/sample2.csv" )
|
23
|
+
## pp recs
|
24
|
+
assert_equal [{"event+id"=>1,
|
25
|
+
"affected+killed"=>1,
|
26
|
+
"region"=>"Mediterranean",
|
27
|
+
"meta+reliability+source"=>"Verified",
|
28
|
+
"date+reported"=>Date.new( 2015, 11, 5 ),
|
29
|
+
"geo+lat"=>36.8915,
|
30
|
+
"geo+lon"=>27.2877},
|
31
|
+
{"event+id"=>3,
|
32
|
+
"affected+killed"=>1,
|
33
|
+
"region"=>"Central America incl. Mexico",
|
34
|
+
"meta+reliability+source"=>"Partially Verified",
|
35
|
+
"date+reported"=>Date.new( 2015, 11, 3 ),
|
36
|
+
"geo+lat"=>15.9564,
|
37
|
+
"geo+lon"=>-93.663099}], recs
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_sample3
|
41
|
+
recs = CsvHuman.read( "#{CsvHuman.test_data_dir}/sample3.csv" )
|
42
|
+
## pp recs
|
43
|
+
assert_equal [{"loc+code"=>["020503", nil, nil]},
|
44
|
+
{"loc+code"=>["060107", "060108", nil]},
|
45
|
+
{"loc+code"=>["173219", nil, nil]},
|
46
|
+
{"loc+code"=>["530012", nil, nil]},
|
47
|
+
{"loc+code"=>["530013", "530015", "279333"]}], recs
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_sample4
|
51
|
+
recs = CsvHuman.read( "#{CsvHuman.test_data_dir}/sample4.csv" )
|
52
|
+
## pp recs
|
53
|
+
assert_equal [{"adm1+name"=>"Coast District", "affected+label"=>[0, 30, 100, 250]},
|
54
|
+
{"adm1+name"=>"Mountain District", "affected+label"=>[15, 75, 30, 45]}], recs
|
55
|
+
end
|
56
|
+
|
57
|
+
|
58
|
+
end # class TestSamples
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: csvhuman
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
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-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: csvreader
|
@@ -74,10 +74,15 @@ files:
|
|
74
74
|
- lib/csvhuman/reader.rb
|
75
75
|
- lib/csvhuman/tag.rb
|
76
76
|
- lib/csvhuman/version.rb
|
77
|
+
- test/data/sample1.csv
|
78
|
+
- test/data/sample2.csv
|
79
|
+
- test/data/sample3.csv
|
80
|
+
- test/data/sample4.csv
|
77
81
|
- test/data/test.csv
|
78
82
|
- test/helper.rb
|
79
83
|
- test/test_header_converter.rb
|
80
84
|
- test/test_reader.rb
|
85
|
+
- test/test_samples.rb
|
81
86
|
- test/test_tags.rb
|
82
87
|
homepage: https://github.com/csvreader/csvhuman
|
83
88
|
licenses:
|