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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a8fcd2d987c04671d739e62c9e910669046860b9
4
- data.tar.gz: 89fb5f38046645dbc3197dd67024a24a4cf151d8
3
+ metadata.gz: 9eb49bda9660b07247da012084427c95db096c59
4
+ data.tar.gz: ced4996fa49ade4d65d45c2ca2c683aa0bef0122
5
5
  SHA512:
6
- metadata.gz: 557b747e34beed787334854a043d9996afb91fa641807fafc3c7da04927fb88d3f717dadc31b8cf5cc8d2cd214212c0edc64cd9318837803130a9df06e47d6ae
7
- data.tar.gz: b8ee160322159c11117afdcabd5bf248f3b619d5c37f0982ae9670847d9285d40fabc7f92a9ff2490020faa0c0a26543bfca03d3c3341e9434dd7c95ec3111cf
6
+ metadata.gz: 3a6f6fae7b405baa87d56a8f1d23c5c152264033f32c9e9be0cb59ef3c1e98e4a66b57d90fd070d736f764eda9234ef610e3e6806e2d2074cbda4234cbb54187
7
+ data.tar.gz: 1ae1caed1a6ed98f1ae502cd3ed727ceb3b05f2b2397b0334ffcf51a2181f4a97781d3d7d3d7574c98a98f0dc988473f4cf107620e0bd4e83f3b653e5bfbcea9
data/.travis.yml CHANGED
@@ -1,6 +1,6 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.0.0
3
+ - 2.1.0
4
4
  - 2.2.1
5
5
  - ruby-head
6
6
  script: bundle exec rake spec
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.8.1
4
+
5
+ * Make pry a runtime dependency
6
+
3
7
  ## 0.8.0
4
8
 
5
9
  * Fix .district_of when sector belongs to multiple districts (#2)
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
- #if RW.has_key? province
147
- # RW[province]
148
- #elsif RW.has_value? province
149
- # RW.key province
150
- #else
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 villages into lines
165
- new_line = " #{village.send(div)} is a #{div}#{' in' unless div==:province}"
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
@@ -1,3 +1,3 @@
1
1
  class Rwanda
2
- VERSION = "0.8.0"
2
+ VERSION = "0.8.1"
3
3
  end
@@ -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.0.0'
21
+ spec.required_ruby_version = '>= 2.1.0'
22
22
 
23
- spec.add_development_dependency "bundler", "~> 1.7"
24
- spec.add_development_dependency "rake", "~> 10.0"
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.0"
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').sort).to eq ["Gasabo", "Kicukiro", "Nyarugenge"].sort
38
- expect(r.districts_of('kigali city').sort).to eq ["Gasabo", "Kicukiro", "Nyarugenge"].sort
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.0
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-04 00:00:00.000000000 Z
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: '1.7'
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: '1.7'
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.0
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.0
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.0.0
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