rwanda 0.8.0 → 0.8.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/.travis.yml +1 -1
- data/CHANGELOG.md +4 -0
- data/lib/rwanda.rb +26 -20
- data/lib/rwanda/version.rb +1 -1
- data/lib/rwanda/village.rb +8 -0
- data/rwanda.gemspec +5 -5
- data/spec/rwanda_spec.rb +13 -4
- data/spec/village_spec.rb +15 -0
- metadata +27 -25
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9eb49bda9660b07247da012084427c95db096c59
|
4
|
+
data.tar.gz: ced4996fa49ade4d65d45c2ca2c683aa0bef0122
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3a6f6fae7b405baa87d56a8f1d23c5c152264033f32c9e9be0cb59ef3c1e98e4a66b57d90fd070d736f764eda9234ef610e3e6806e2d2074cbda4234cbb54187
|
7
|
+
data.tar.gz: 1ae1caed1a6ed98f1ae502cd3ed727ceb3b05f2b2397b0334ffcf51a2181f4a97781d3d7d3d7574c98a98f0dc988473f4cf107620e0bd4e83f3b653e5bfbcea9
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
data/lib/rwanda.rb
CHANGED
@@ -67,6 +67,7 @@ class Rwanda
|
|
67
67
|
end
|
68
68
|
def villages_of(district, sector, cell)
|
69
69
|
@villages.select {|v| v.district.downcase == district.downcase and v.sector.downcase == sector.downcase and v.cell.downcase == cell.downcase}.collect {|v| v.village}
|
70
|
+
#@villages.select {|v| v.to_h(:district, :sector, :cell).to_a.sort == { district: district, sector: sector, cell: cell }.to_a.collect{|v| [v[0],v[1].downcase] }.collect {|v| v.village}
|
70
71
|
end
|
71
72
|
def subdivisions_of(arr)
|
72
73
|
case arr.length
|
@@ -87,8 +88,8 @@ class Rwanda
|
|
87
88
|
# @villages
|
88
89
|
#end
|
89
90
|
# )) Lists ((
|
90
|
-
def provinces; @villages.collect{|v| v.province}.uniq; end
|
91
|
-
def districts; @villages.collect{|v| v.district}.uniq; end
|
91
|
+
def provinces; @villages.collect{|v| v.province}.uniq.sort; end
|
92
|
+
def districts; @villages.collect{|v| v.district}.uniq.sort; end
|
92
93
|
# already introduces ambiguity from sectors down: 37 districts are duplicate names
|
93
94
|
def sectors
|
94
95
|
@sectors ||= @villages.collect {|v| [v.district, v.sector] }.uniq.collect {|ds| ds[1]}.sort
|
@@ -111,7 +112,6 @@ class Rwanda
|
|
111
112
|
end
|
112
113
|
|
113
114
|
# )) Testing ((
|
114
|
-
#def is_province?(province); @villages.any? {|v| v.province == province}; end
|
115
115
|
# is_division?
|
116
116
|
DIVISIONS.each do |division|
|
117
117
|
define_method("is_#{division}?") do |argument|
|
@@ -143,36 +143,42 @@ class Rwanda
|
|
143
143
|
eng = RW.find { |eng,kin| kin.downcase == province.downcase }
|
144
144
|
return eng[0] if eng
|
145
145
|
nil
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
# nil
|
152
|
-
#end
|
146
|
+
end
|
147
|
+
|
148
|
+
# )) To help with testing ((
|
149
|
+
def first
|
150
|
+
@villages.first
|
153
151
|
end
|
154
152
|
|
155
153
|
# )) Where is...? ((
|
156
154
|
def where_is?(division)
|
157
|
-
matching = { province: [], district: [], sector: [], cell: [], village: [] }
|
155
|
+
#matching = { province: [], district: [], sector: [], cell: [], village: [] }
|
158
156
|
lines = []
|
159
157
|
@villages.each do |village|
|
160
158
|
matches = village.match(division)
|
161
159
|
unless matches.empty?
|
162
160
|
matches.each do |div|
|
163
|
-
matching[div].push village
|
164
|
-
# convert
|
165
|
-
|
166
|
-
unless div == :province
|
167
|
-
(0...Rwanda::DIVISIONS.index(div)).to_a.reverse.each do |n|
|
168
|
-
new_line << " #{village[n]}#{' '+Rwanda::DIVISIONS[n].to_s.capitalize+',' unless n==0}"
|
169
|
-
end
|
170
|
-
end
|
171
|
-
lines << new_line
|
161
|
+
#matching[div].push village
|
162
|
+
# convert each match into a line
|
163
|
+
lines << create_line(village, div)
|
172
164
|
end
|
173
165
|
end
|
174
166
|
end
|
175
167
|
lines.uniq!
|
168
|
+
print_result(lines, division)
|
169
|
+
end
|
170
|
+
|
171
|
+
private
|
172
|
+
def create_line(village, div)
|
173
|
+
new_line = " #{village.send(div)} is a #{div}#{' in' unless div==:province}"
|
174
|
+
unless div == :province
|
175
|
+
(0...Rwanda::DIVISIONS.index(div)).to_a.reverse.each do |n|
|
176
|
+
new_line << " #{village[n]}#{' '+Rwanda::DIVISIONS[n].to_s.capitalize+',' unless n==0}"
|
177
|
+
end
|
178
|
+
end
|
179
|
+
new_line
|
180
|
+
end
|
181
|
+
def print_result(lines, division)
|
176
182
|
output = ''
|
177
183
|
|
178
184
|
# summary line
|
data/lib/rwanda/version.rb
CHANGED
data/lib/rwanda/village.rb
CHANGED
@@ -20,4 +20,12 @@ class Village
|
|
20
20
|
raise "Division index #{n} out of range! Permitted indices 0 (province) to 4 (village)" unless (0..4).include? n
|
21
21
|
self.send(Rwanda::DIVISIONS[n])
|
22
22
|
end
|
23
|
+
def to_h(*options)
|
24
|
+
options = [:province, :district, :sector, :cell, :village] if options.empty?
|
25
|
+
# this use of Array#to_h is only available from 2.1.0 onwards
|
26
|
+
options.collect {|l| [ l, instance_variable_get("@#{l}") ] }.to_h
|
27
|
+
end
|
28
|
+
def ==(other)
|
29
|
+
to_h == other.to_h
|
30
|
+
end
|
23
31
|
end
|
data/rwanda.gemspec
CHANGED
@@ -18,13 +18,13 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.required_ruby_version = '>= 2.
|
21
|
+
spec.required_ruby_version = '>= 2.1.0'
|
22
22
|
|
23
|
-
spec.add_development_dependency "bundler"
|
24
|
-
spec.add_development_dependency "rake", "
|
23
|
+
spec.add_development_dependency "bundler"
|
24
|
+
spec.add_development_dependency "rake", ">= 10.0"
|
25
25
|
spec.add_development_dependency "rspec"
|
26
|
-
spec.add_development_dependency "pry", "~> 0.10.1"
|
27
26
|
spec.add_development_dependency "coveralls"
|
28
27
|
|
29
|
-
spec.add_runtime_dependency "fuzzy_match", "~> 2.1
|
28
|
+
spec.add_runtime_dependency "fuzzy_match", "~> 2.1"
|
29
|
+
spec.add_runtime_dependency "pry", ">= 0.10.1"
|
30
30
|
end
|
data/spec/rwanda_spec.rb
CHANGED
@@ -34,8 +34,8 @@ describe Rwanda do
|
|
34
34
|
|
35
35
|
describe '.districts_of' do
|
36
36
|
it 'knows all the districts of each province' do
|
37
|
-
expect(r.districts_of('Kigali City')
|
38
|
-
expect(r.districts_of('kigali city')
|
37
|
+
expect(r.districts_of('Kigali City')).to eq ["Gasabo", "Kicukiro", "Nyarugenge"].sort
|
38
|
+
expect(r.districts_of('kigali city')).to eq ["Gasabo", "Kicukiro", "Nyarugenge"].sort
|
39
39
|
expect(r.districts_of('Foobar')).to eq nil
|
40
40
|
end
|
41
41
|
end
|
@@ -66,9 +66,10 @@ describe Rwanda do
|
|
66
66
|
end
|
67
67
|
|
68
68
|
describe '.subdivisions_of' do
|
69
|
-
it 'knows the sub-divisions of a district, sector or cell' do
|
69
|
+
it 'knows the sub-divisions of Rwanda, or a district, sector or cell' do
|
70
70
|
expect(r.subdivisions_of(['Ruhango', 'Ruhango', 'Gikoma'])).to eq ['Gatengeri', 'Gikumba', 'Karama', 'Murambi', 'Nangurugomo', 'Nyarusange', 'Rebero', 'Rubiha', 'Rurembo', 'Ryabonyinka', 'Wimana']
|
71
|
-
expect(r.subdivisions_of(['RuhANgo', 'RUHANGO', 'GIKOMA'])).to eq ['Gatengeri', 'Gikumba', 'Karama', 'Murambi', 'Nangurugomo', 'Nyarusange', 'Rebero', 'Rubiha', 'Rurembo', 'Ryabonyinka', 'Wimana']
|
71
|
+
expect(r.subdivisions_of(['RuhANgo', 'RUHANGO', 'GIKOMA'])).to eq ['Gatengeri', 'Gikumba', 'Karama', 'Murambi', 'Nangurugomo', 'Nyarusange', 'Rebero', 'Rubiha', 'Rurembo', 'Ryabonyinka', 'Wimana']
|
72
|
+
expect(r.subdivisions_of([])).to eq r.districts.sort
|
72
73
|
end
|
73
74
|
end
|
74
75
|
|
@@ -189,5 +190,13 @@ describe Rwanda do
|
|
189
190
|
r.where_is? 'Foobar'
|
190
191
|
end
|
191
192
|
end
|
193
|
+
|
194
|
+
describe '#first' do
|
195
|
+
it 'can provide the first village in the list' do
|
196
|
+
row = {'province' => "Eastern Province", 'district' => "Bugesera", 'sector' => "Gashora", 'cell' => "Biryogo", 'village' => "Bidudu"}
|
197
|
+
v = Village.new(row)
|
198
|
+
expect(r.first).to eq v
|
199
|
+
end
|
200
|
+
end
|
192
201
|
end
|
193
202
|
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Village do
|
4
|
+
r = Rwanda.instance
|
5
|
+
v = r.first
|
6
|
+
v_full_hash = {:province => "Eastern Province", :district => "Bugesera", :sector => "Gashora", :cell => "Biryogo", :village => "Bidudu"}
|
7
|
+
v_limited_hash = {:district => "Bugesera", :sector => "Gashora", :cell => "Biryogo"}
|
8
|
+
|
9
|
+
describe '#to_h' do
|
10
|
+
it 'can convert the contents of village to a customised hash' do
|
11
|
+
expect(v.to_h).to eq v_full_hash
|
12
|
+
expect(v.to_h(:district, :sector, :cell)).to eq v_limited_hash
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
metadata
CHANGED
@@ -1,41 +1,41 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rwanda
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dan Hetherington
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-06-
|
11
|
+
date: 2015-06-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '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: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '10.0'
|
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
40
|
version: '10.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
@@ -52,20 +52,6 @@ dependencies:
|
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: pry
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: 0.10.1
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - "~>"
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: 0.10.1
|
69
55
|
- !ruby/object:Gem::Dependency
|
70
56
|
name: coveralls
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -86,14 +72,28 @@ dependencies:
|
|
86
72
|
requirements:
|
87
73
|
- - "~>"
|
88
74
|
- !ruby/object:Gem::Version
|
89
|
-
version: 2.1
|
75
|
+
version: '2.1'
|
90
76
|
type: :runtime
|
91
77
|
prerelease: false
|
92
78
|
version_requirements: !ruby/object:Gem::Requirement
|
93
79
|
requirements:
|
94
80
|
- - "~>"
|
95
81
|
- !ruby/object:Gem::Version
|
96
|
-
version: 2.1
|
82
|
+
version: '2.1'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: pry
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 0.10.1
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 0.10.1
|
97
97
|
description:
|
98
98
|
email:
|
99
99
|
- dan.hetherington@gmail.com
|
@@ -119,6 +119,7 @@ files:
|
|
119
119
|
- spec/rwanda_spec.rb
|
120
120
|
- spec/sectors_data.rb
|
121
121
|
- spec/spec_helper.rb
|
122
|
+
- spec/village_spec.rb
|
122
123
|
- tasks/rspec.rake
|
123
124
|
homepage: http://www.minicom.gov.rw/
|
124
125
|
licenses:
|
@@ -132,7 +133,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
132
133
|
requirements:
|
133
134
|
- - ">="
|
134
135
|
- !ruby/object:Gem::Version
|
135
|
-
version: 2.
|
136
|
+
version: 2.1.0
|
136
137
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
137
138
|
requirements:
|
138
139
|
- - ">="
|
@@ -149,3 +150,4 @@ test_files:
|
|
149
150
|
- spec/rwanda_spec.rb
|
150
151
|
- spec/sectors_data.rb
|
151
152
|
- spec/spec_helper.rb
|
153
|
+
- spec/village_spec.rb
|