ward-chicago 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,5 @@
1
+ lib/**/*.rb
2
+ bin/*
3
+ -
4
+ features/**/*.feature
5
+ LICENSE.txt
data/Gemfile ADDED
@@ -0,0 +1,17 @@
1
+ source 'http://rubygems.org'
2
+
3
+ gem 'httparty'
4
+ gem 'geocoder'
5
+
6
+ group :development, :test do
7
+ gem 'bundler', '~> 1.0.0'
8
+ gem 'jeweler', '~> 1.6.4'
9
+ gem 'rcov', '>= 0'
10
+ gem 'rdoc'
11
+ end
12
+
13
+ group :test do
14
+ gem 'json'
15
+ gem 'shoulda', '>= 0'
16
+ gem 'mocha'
17
+ end
@@ -0,0 +1,36 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ geocoder (1.0.5)
5
+ git (1.2.5)
6
+ httparty (0.8.1)
7
+ multi_json
8
+ multi_xml
9
+ jeweler (1.6.4)
10
+ bundler (~> 1.0)
11
+ git (>= 1.2.5)
12
+ rake
13
+ json (1.6.1)
14
+ mocha (0.9.10)
15
+ rake
16
+ multi_json (1.0.3)
17
+ multi_xml (0.4.1)
18
+ rake (0.9.2.2)
19
+ rcov (0.9.11)
20
+ rdoc (3.11)
21
+ json (~> 1.4)
22
+ shoulda (2.11.3)
23
+
24
+ PLATFORMS
25
+ ruby
26
+
27
+ DEPENDENCIES
28
+ bundler (~> 1.0.0)
29
+ geocoder
30
+ httparty
31
+ jeweler (~> 1.6.4)
32
+ json
33
+ mocha
34
+ rcov
35
+ rdoc
36
+ shoulda
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2011 Sandro Padin
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,26 @@
1
+ ## Ward
2
+
3
+ ### About
4
+
5
+ Gets ward information for any given address in the city of Chicago.
6
+
7
+ ### Usage
8
+
9
+ ward = Ward.new
10
+ ward.find('1 N. State St., Chicago, Il 60602')
11
+
12
+ ### Response
13
+
14
+ {:number=>42,
15
+ :alderman=>
16
+ {:name=>"Brendan Reilly",
17
+ :office=>{:address=>"325 W HURON ST #510", :phone=>"312-642-4242"},
18
+ :city_hall=>
19
+ {:address=>"121 N LASALLE ST RM 306 60602", :phone=>"312-744-3062"}}}
20
+
21
+ ### Thanks to...
22
+
23
+ * [Chicago Boundary Service](http://boundaries.tribapps.com)
24
+ * [HTTParty](https://github.com/jnunemaker/httparty)
25
+ * [Ruby Geocoder](http://www.rubygeocoder.com/)
26
+
@@ -0,0 +1,53 @@
1
+ # encoding: utf-8
2
+
3
+ require 'rubygems'
4
+ require 'bundler'
5
+ begin
6
+ Bundler.setup(:default, :development)
7
+ rescue Bundler::BundlerError => e
8
+ $stderr.puts e.message
9
+ $stderr.puts "Run `bundle install` to install missing gems"
10
+ exit e.status_code
11
+ end
12
+ require 'rake'
13
+
14
+ require 'jeweler'
15
+ Jeweler::Tasks.new do |gem|
16
+ # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
17
+ gem.name = "ward-chicago"
18
+ gem.homepage = "http://github.com/spadin/ward"
19
+ gem.license = "MIT"
20
+ gem.summary = %Q{Finds the ward and alderman for any Chicago address.}
21
+ gem.description = %Q{Finds the ward and alderman for any Chicago address.}
22
+ gem.email = "sandropadin@gmail.com"
23
+ gem.authors = ["Sandro Padin"]
24
+ # dependencies defined in Gemfile
25
+ end
26
+ Jeweler::RubygemsDotOrgTasks.new
27
+
28
+ require 'rake/testtask'
29
+ Rake::TestTask.new(:test) do |test|
30
+ test.libs << 'lib' << 'test'
31
+ test.pattern = 'test/**/test_*.rb'
32
+ test.verbose = true
33
+ end
34
+
35
+ require 'rcov/rcovtask'
36
+ Rcov::RcovTask.new do |test|
37
+ test.libs << 'test'
38
+ test.pattern = 'test/**/test_*.rb'
39
+ test.verbose = true
40
+ test.rcov_opts << '--exclude "gems/*"'
41
+ end
42
+
43
+ task :default => :test
44
+
45
+ require 'rdoc/task'
46
+ Rake::RDocTask.new do |rdoc|
47
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
48
+
49
+ rdoc.rdoc_dir = 'rdoc'
50
+ rdoc.title = "ward #{version}"
51
+ rdoc.rdoc_files.include('README*')
52
+ rdoc.rdoc_files.include('lib/**/*.rb')
53
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.1.1
@@ -0,0 +1,48 @@
1
+ require 'httparty'
2
+ require 'geocoder'
3
+
4
+ $LOAD_PATH.unshift File.dirname(__FILE__)
5
+ require 'ward/ward_data'
6
+
7
+ class Ward
8
+ include HTTParty
9
+ base_uri 'api.boundaries.tribapps.com'
10
+
11
+ def initialize(username = nil, api_key = nil)
12
+ @username = username
13
+ @api_key = api_key
14
+ end
15
+
16
+ # Find the ward for a given address.
17
+ def find(address)
18
+ # Geocode the given address.
19
+ geocode address
20
+
21
+ ward = Data.new(data)
22
+ ward.to_hash
23
+ end
24
+
25
+ private
26
+ def options
27
+ @options = {
28
+ :query => {
29
+ :contains => "#{@lat},#{@lon}",
30
+ :sets => 'wards'
31
+ }
32
+ }
33
+ unless @username.nil? and @api_key.nil?
34
+ @options[:query][:username] = @username
35
+ @options[:query][:api_key] = @api_key
36
+ end
37
+
38
+ @options
39
+ end
40
+
41
+ def geocode(address)
42
+ @lat,@lon = Geocoder.coordinates(address)
43
+ end
44
+
45
+ def data
46
+ self.class.get("/1.0/boundary", options)
47
+ end
48
+ end
@@ -0,0 +1,50 @@
1
+ class Ward
2
+ class Data
3
+ attr_reader :data
4
+
5
+ def initialize(data)
6
+ begin
7
+ data = data['objects'][0]['metadata']
8
+ @data = {
9
+ :number => Integer(data['WARD']),
10
+ :alderman => {
11
+ :name => data['ALDERMAN'].proper_name,
12
+ :office => {
13
+ :address => data['ADDRESS'],
14
+ :phone => data['WARD_PHONE']
15
+ },
16
+ :city_hall => {
17
+ :address => data['HALL_OFFIC'],
18
+ :phone => data['HALL_PHONE']
19
+ }
20
+ }
21
+ }
22
+ rescue Exception => e
23
+ @data = nil
24
+ end
25
+ end
26
+
27
+ # Ward number
28
+ def number
29
+ @data[:number]
30
+ end
31
+
32
+ # Alderman Hash
33
+ def alderman
34
+ @data[:alderman]
35
+ end
36
+
37
+ # Hash of this Ward::Data
38
+ def to_hash
39
+ @data
40
+ end
41
+ end
42
+ end
43
+
44
+ class String
45
+
46
+ # Capitalizes the first letter of each word.
47
+ def proper_name
48
+ self.split(' ').map {|w| w.capitalize }.join(' ')
49
+ end
50
+ end
@@ -0,0 +1 @@
1
+ {"meta": {"limit": 20, "next": null, "offset": 0, "previous": null, "total_count": 1}, "objects": [{"centroid": {"coordinates": [-87.669550000000001, 41.921992000000003], "type": "Point"}, "external_id": "32", "kind": "Ward", "metadata": {"ADDRESS": "2657 N CLYBOURN", "ALDERMAN": "SCOTT WAGUESPACK", "CLASS": "1", "DATA_ADMIN": 110545782.67264199, "EDIT_DATE1": "20030527", "HALL_OFFIC": "121 N LASALLE ST, RM 300, 60602", "HALL_PHONE": "312-744-6567", "PERIMETER": 92400.971150020006, "SHAPE_AREA": 110545782.745, "SHAPE_LEN": 92400.970042100002, "WARD": "32", "WARD_PHONE": "773-248-1330"}, "name": "32nd", "resource_uri": "/1.0/boundary/32nd-ward/", "set": "/1.0/boundary-set/wards/", "simple_shape": {"coordinates": [[[[-87.668858, 41.94699], [-87.668762999999998, 41.943342999999999], [-87.669982000000005, 41.943325999999999], [-87.669931000000005, 41.941502999999997], [-87.668661999999998, 41.939697000000002], [-87.666241999999997, 41.939729999999997], [-87.666264999999996, 41.940643000000001], [-87.664400999999998, 41.940671000000002], [-87.663842000000002, 41.940669999999997], [-87.663820999999999, 41.939765000000001], [-87.658968999999999, 41.939838000000002], [-87.658709999999999, 41.932555999999998], [-87.653858999999997, 41.932637999999997], [-87.653702999999993, 41.928100999999998], [-87.658535000000001, 41.928012000000003], [-87.658502999999996, 41.926721000000001], [-87.658452999999994, 41.925291999999999], [-87.653613000000007, 41.925376], [-87.653428000000005, 41.919922999999997], [-87.660714999999996, 41.919820999999999], [-87.661952999999997, 41.920569999999998], [-87.662436999999997, 41.920202000000003], [-87.663184999999999, 41.920741], [-87.663054000000002, 41.917059999999999], [-87.664257000000006, 41.916958000000001], [-87.663706000000005, 41.915633], [-87.663028999999995, 41.915488000000003], [-87.661171999999993, 41.916181999999999], [-87.659148999999999, 41.915081000000001], [-87.657337999999996, 41.916521000000003], [-87.658280000000005, 41.917194000000002], [-87.658219000000003, 41.918033999999999], [-87.653367000000003, 41.918104999999997], [-87.653211999999996, 41.913735000000003], [-87.652392000000006, 41.913766000000003], [-87.651843999999997, 41.913189000000003], [-87.649518, 41.911605000000002], [-87.649501000000001, 41.910899999999998], [-87.651105999999999, 41.910874], [-87.651038999999997, 41.908534000000003], [-87.648211000000003, 41.908577000000001], [-87.647829000000002, 41.897962999999997], [-87.649398000000005, 41.898307000000003], [-87.651899999999998, 41.900013000000001], [-87.655381000000006, 41.900812999999999], [-87.655917000000002, 41.901212000000001], [-87.656474000000003, 41.902622000000001], [-87.657425000000003, 41.903509], [-87.662627999999998, 41.903409000000003], [-87.662670000000006, 41.905208999999999], [-87.663882999999998, 41.905192], [-87.664001999999996, 41.908760999999998], [-87.665201999999994, 41.908844000000002], [-87.665243000000004, 41.910001000000001], [-87.665655999999998, 41.910657999999998], [-87.664976999999993, 41.910668000000001], [-87.667232999999996, 41.914298000000002], [-87.670231000000001, 41.914292000000003], [-87.670134000000004, 41.910597000000003], [-87.679907, 41.910440000000001], [-87.679674000000006, 41.902217], [-87.677229999999994, 41.902256000000001], [-87.677155999999997, 41.899551000000002], [-87.673489000000004, 41.899614], [-87.673439999999999, 41.897787000000001], [-87.675883999999996, 41.897751999999997], [-87.675832, 41.895932000000002], [-87.681949000000003, 41.895826999999997], [-87.681925000000007, 41.894917999999997], [-87.684370999999999, 41.894871000000002], [-87.684397000000004, 41.895784999999997], [-87.686842999999996, 41.895743000000003], [-87.686959999999999, 41.900292999999998], [-87.684510000000003, 41.900331000000001], [-87.684579999999997, 41.903061000000001], [-87.682140000000004, 41.903106999999999], [-87.682419999999993, 41.913581999999998], [-87.684951999999996, 41.915227999999999], [-87.684909000000005, 41.916215999999999], [-87.686919000000003, 41.917574000000002], [-87.68741, 41.917568000000003], [-87.687641999999997, 41.924900999999998], [-87.682738000000001, 41.924968999999997], [-87.682762999999994, 41.925879000000002], [-87.679704999999998, 41.928463999999998], [-87.678100000000001, 41.928085000000003], [-87.678323000000006, 41.930401000000003], [-87.678130999999993, 41.931877], [-87.678236999999996, 41.935929999999999], [-87.683109000000002, 41.935872000000003], [-87.685579000000004, 41.937666], [-87.685647000000003, 41.940395000000002], [-87.687939, 41.940365999999997], [-87.688205999999994, 41.944918999999999], [-87.67362, 41.945095000000002], [-87.673721999999998, 41.946927000000002], [-87.668858, 41.94699]]]], "type": "MultiPolygon"}, "slug": "32nd-ward"}]}
@@ -0,0 +1,18 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ begin
4
+ Bundler.setup(:default, :test)
5
+ Bundler.require(:test)
6
+ rescue Bundler::BundlerError => e
7
+ $stderr.puts e.message
8
+ $stderr.puts "Run `bundle install` to install missing gems"
9
+ exit e.status_code
10
+ end
11
+ require 'test/unit'
12
+
13
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
14
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
15
+ require 'ward'
16
+
17
+ class Test::Unit::TestCase
18
+ end
@@ -0,0 +1,29 @@
1
+ require 'helper'
2
+
3
+ class TestWard < Test::Unit::TestCase
4
+ context Ward do
5
+ context 'Ward#find' do
6
+ setup do
7
+ @ward = Ward.new
8
+ @ward.expects(:geocode).returns([41.9157125,-87.6560353])
9
+ @ward.expects(:data).returns(response_fixture)
10
+
11
+ @address = '1901 N. Clybourn Ave., Chicago, Il 60614'
12
+ end
13
+ should 'return a Fixnum for the ward number' do
14
+ ward = @ward.find(@address)
15
+ assert_equal ward[:number].class, Fixnum
16
+ end
17
+ should 'return an Hash for the alderman' do
18
+ ward = @ward.find(@address)
19
+ assert_equal ward[:alderman].class, Hash
20
+ end
21
+ end
22
+ end
23
+ def response_fixture
24
+ filepath = File.join(File.dirname(__FILE__), 'fixtures','response.json')
25
+ file = File.open(filepath)
26
+ json = file.readlines[0].to_s
27
+ response = JSON.parse(json).to_hash
28
+ end
29
+ end
@@ -0,0 +1,27 @@
1
+ require 'helper'
2
+ require 'ward/ward_data'
3
+
4
+ class TestWardData < Test::Unit::TestCase
5
+ context Ward::Data do
6
+ setup do
7
+ @ward_data = Ward::Data.new(response_fixture)
8
+ end
9
+
10
+ context 'Ward::Data#number' do
11
+ should 'return a Fixnum for the ward number' do
12
+ assert_equal @ward_data.number.class, Fixnum
13
+ end
14
+ end
15
+ context 'Ward::Data#alderman' do
16
+ should 'return a Hash for the alderman' do
17
+ assert_equal @ward_data.alderman.class, Hash
18
+ end
19
+ end
20
+ end
21
+ def response_fixture
22
+ filepath = File.join(File.dirname(__FILE__), 'fixtures','response.json')
23
+ file = File.open(filepath)
24
+ json = file.readlines[0].to_s
25
+ response = JSON.parse(json).to_hash
26
+ end
27
+ end
@@ -0,0 +1,68 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{ward}
8
+ s.version = "0.1.1"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = [%q{Sandro Padin}]
12
+ s.date = %q{2011-11-21}
13
+ s.description = %q{Finds the ward and alderman for any Chicago address.}
14
+ s.email = %q{sandropadin@gmail.com}
15
+ s.extra_rdoc_files = [
16
+ "LICENSE.txt",
17
+ "README.md"
18
+ ]
19
+ s.files = [
20
+ ".document",
21
+ "Gemfile",
22
+ "Gemfile.lock",
23
+ "LICENSE.txt",
24
+ "README.md",
25
+ "Rakefile",
26
+ "VERSION",
27
+ "lib/ward.rb",
28
+ "lib/ward/ward_data.rb",
29
+ "test/fixtures/response.json",
30
+ "test/helper.rb",
31
+ "test/test_ward.rb",
32
+ "test/test_ward_data.rb",
33
+ "ward.gemspec"
34
+ ]
35
+ s.homepage = %q{http://github.com/spadin/ward}
36
+ s.licenses = [%q{MIT}]
37
+ s.require_paths = [%q{lib}]
38
+ s.rubygems_version = %q{1.8.6}
39
+ s.summary = %q{Finds the ward and alderman for any Chicago address.}
40
+
41
+ if s.respond_to? :specification_version then
42
+ s.specification_version = 3
43
+
44
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
45
+ s.add_runtime_dependency(%q<httparty>, [">= 0"])
46
+ s.add_runtime_dependency(%q<geocoder>, [">= 0"])
47
+ s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
48
+ s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
49
+ s.add_development_dependency(%q<rcov>, [">= 0"])
50
+ s.add_development_dependency(%q<rdoc>, [">= 0"])
51
+ else
52
+ s.add_dependency(%q<httparty>, [">= 0"])
53
+ s.add_dependency(%q<geocoder>, [">= 0"])
54
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
55
+ s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
56
+ s.add_dependency(%q<rcov>, [">= 0"])
57
+ s.add_dependency(%q<rdoc>, [">= 0"])
58
+ end
59
+ else
60
+ s.add_dependency(%q<httparty>, [">= 0"])
61
+ s.add_dependency(%q<geocoder>, [">= 0"])
62
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
63
+ s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
64
+ s.add_dependency(%q<rcov>, [">= 0"])
65
+ s.add_dependency(%q<rdoc>, [">= 0"])
66
+ end
67
+ end
68
+
metadata ADDED
@@ -0,0 +1,130 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ward-chicago
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Sandro Padin
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-11-21 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: httparty
16
+ requirement: &70130541374260 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *70130541374260
25
+ - !ruby/object:Gem::Dependency
26
+ name: geocoder
27
+ requirement: &70130541373700 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *70130541373700
36
+ - !ruby/object:Gem::Dependency
37
+ name: bundler
38
+ requirement: &70130541373060 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ version: 1.0.0
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *70130541373060
47
+ - !ruby/object:Gem::Dependency
48
+ name: jeweler
49
+ requirement: &70130541372360 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 1.6.4
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: *70130541372360
58
+ - !ruby/object:Gem::Dependency
59
+ name: rcov
60
+ requirement: &70130541364060 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: *70130541364060
69
+ - !ruby/object:Gem::Dependency
70
+ name: rdoc
71
+ requirement: &70130541363380 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: *70130541363380
80
+ description: Finds the ward and alderman for any Chicago address.
81
+ email: sandropadin@gmail.com
82
+ executables: []
83
+ extensions: []
84
+ extra_rdoc_files:
85
+ - LICENSE.txt
86
+ - README.md
87
+ files:
88
+ - .document
89
+ - Gemfile
90
+ - Gemfile.lock
91
+ - LICENSE.txt
92
+ - README.md
93
+ - Rakefile
94
+ - VERSION
95
+ - lib/ward.rb
96
+ - lib/ward/ward_data.rb
97
+ - test/fixtures/response.json
98
+ - test/helper.rb
99
+ - test/test_ward.rb
100
+ - test/test_ward_data.rb
101
+ - ward.gemspec
102
+ homepage: http://github.com/spadin/ward
103
+ licenses:
104
+ - MIT
105
+ post_install_message:
106
+ rdoc_options: []
107
+ require_paths:
108
+ - lib
109
+ required_ruby_version: !ruby/object:Gem::Requirement
110
+ none: false
111
+ requirements:
112
+ - - ! '>='
113
+ - !ruby/object:Gem::Version
114
+ version: '0'
115
+ segments:
116
+ - 0
117
+ hash: -295065275671720111
118
+ required_rubygems_version: !ruby/object:Gem::Requirement
119
+ none: false
120
+ requirements:
121
+ - - ! '>='
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
124
+ requirements: []
125
+ rubyforge_project:
126
+ rubygems_version: 1.8.6
127
+ signing_key:
128
+ specification_version: 3
129
+ summary: Finds the ward and alderman for any Chicago address.
130
+ test_files: []