rwanda 0.8.0 → 0.8.1

Sign up to get free protection for your applications and to get access to all the features.
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