closest_weightlifting_gem 0.1.2

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 786b4111c162920f2b4dabd1b55b3e67ba6a211c
4
+ data.tar.gz: 4501d815a84546ec4463c58184c63d26d17e6c74
5
+ SHA512:
6
+ metadata.gz: 67b2d1669bc805e84370a9ce7f9d381afb73dbfdfe83c589c2b312aab0c08ed3cf2e7ba4e9fba92f4b2e7aaf5c837bf0dd2dae0daa1903f8c6521e641198053b
7
+ data.tar.gz: 0b517cd6bdbcb91225f35f89ac523ee31834e2795d53422f3ca5115f7886560fcbe5cd6ceabd0d06c22522815d73cf23d0aed5860a16840dde8981814c86843d
data/.gitignore ADDED
@@ -0,0 +1,9 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
data/.travis.yml ADDED
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.2.3
4
+ before_install: gem install bundler -v 1.11.2
data/Gemfile ADDED
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in closest_weightlifting_gem.gemspec
4
+ gemspec
5
+
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2016 zacscodingclub
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,46 @@
1
+ # ClosestWeightliftingGem
2
+
3
+ This application scrapes the [USA Weightlifting's Find a Club ](http://www.teamusa.org/usa-weightlifting/clubs-lwc/find-a-club) feature and builds a Gym object for each club, which includes some basic biographical information.
4
+
5
+ TODO:
6
+ ---
7
+ * Implement proper options from CLI#show_gym
8
+ * show_gym page from #find_by_names menu should take it back to those search results instead of the state results
9
+ * Geocode gym addresses
10
+ * Implement user location input to find nearest gyms
11
+
12
+ ## Installation
13
+
14
+ Add this line to your application's Gemfile:
15
+
16
+ ```ruby
17
+ gem 'closest_weightlifting_gem'
18
+ ```
19
+
20
+ And then execute:
21
+
22
+ $ bundle
23
+
24
+ Or install it yourself as:
25
+
26
+ $ gem install closest_weightlifting_gem
27
+
28
+ ## Usage
29
+
30
+
31
+
32
+ ## Development
33
+
34
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
35
+
36
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
37
+
38
+ ## Contributing
39
+
40
+ Bug reports and pull requests are welcome on GitHub at https://github.com/zacscodingclub/closest_weightlifting_gem.
41
+
42
+
43
+ ## License
44
+
45
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
46
+
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require './lib/closest_weightlifting_gem'
4
+
5
+ ClosestWeightliftingGem::CLI.new.call
data/bin/console ADDED
@@ -0,0 +1,25 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "closest_weightlifting_gem"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require 'pry'
14
+
15
+ def reload!
16
+ load './lib/closest_weightlifting_gem.rb'
17
+ end
18
+
19
+ def basic_setup
20
+ ["FL","IL","NY"].each do |state|
21
+ ClosestWeightliftingGem::Scraper.scrape_state_page(state)
22
+ end
23
+ end
24
+
25
+ Pry.start
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
Binary file
Binary file
@@ -0,0 +1,38 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'closest_weightlifting_gem/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "closest_weightlifting_gem"
8
+ spec.version = ClosestWeightliftingGem::VERSION
9
+ spec.authors = ["zacscodingclub"]
10
+ spec.email = ["zbaston@gmail.com"]
11
+
12
+ spec.summary = "USA Weighlifting Club Gyms"
13
+ spec.description = "This gem uses the data available on the USA Weightlifting website (http://www.teamusa.org/usa-weightlifting/clubs-lwc/find-a-club) to create a simple CLI interface with all the gyms."
14
+ spec.homepage = "http://rubygems.org/gems/closest_weightlifting_gem"
15
+ spec.license = "MIT"
16
+
17
+ # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
18
+ # delete this section to allow pushing this gem to any host.
19
+ # if spec.respond_to?(:metadata)
20
+ # spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com'"
21
+ # else
22
+ # raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
23
+ # end
24
+
25
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
26
+ spec.bindir = "exe"
27
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
+ spec.require_paths = ["lib"]
29
+
30
+ spec.add_development_dependency "bundler", "~> 1.11"
31
+ spec.add_development_dependency "rake", "~> 10.0"
32
+ spec.add_development_dependency "rspec", "~> 3.0"
33
+ spec.add_development_dependency "pry", "~> 0.10.3"
34
+
35
+ spec.add_dependency "nokogiri", "~> 1.6.7.2"
36
+ spec.add_dependency "require_all", "~> 1.3.3"
37
+ spec.add_dependency "titleize", "~> 1.4.0"
38
+ end
@@ -0,0 +1,11 @@
1
+ require 'pry'
2
+ require 'open-uri'
3
+ require 'nokogiri'
4
+ require 'require_all'
5
+ require 'titleize'
6
+
7
+ require_rel 'closest_weightlifting_gem'
8
+
9
+ module ClosestWeightliftingGem
10
+
11
+ end
@@ -0,0 +1,203 @@
1
+ class ClosestWeightliftingGem::CLI
2
+ def call
3
+ load_gyms
4
+
5
+ main_menu
6
+ end
7
+
8
+ def load_gyms
9
+ puts <<-DOC.gsub /^\s*/, ''
10
+ Welcome to the Closest Weightlifting Gem!
11
+ Give me a few minutes to fetch a fresh data widget doohicky from the cloud nebula...
12
+ DOC
13
+
14
+ ClosestWeightliftingGem::Scraper.scrape_main
15
+ end
16
+
17
+ # Not implemented currently, but plan to introduce when I figure out geocoder
18
+ #
19
+ # def address_input
20
+ # puts <<-DOC.gsub /^\s*/, ''
21
+ # Please enter your address below and I'll find
22
+ # the closest weightlifting gym. (ex. 123 Main St. New York, NY)
23
+ # DOC
24
+
25
+ # address = gets.chomp
26
+ # end
27
+
28
+ def main_menu
29
+ puts "What do you want to do now?"
30
+
31
+ options(__method__)
32
+ end
33
+
34
+ def show_gyms(gyms)
35
+ width = 80
36
+ puts line
37
+ puts "OK, your search yielded #{gyms.size} gyms!\n"
38
+ puts "Here's the list: "
39
+ puts line
40
+ puts " Gym Name".ljust(width/2)+" City"
41
+
42
+ gyms.each_with_index do |gym, i|
43
+ puts "#{(i+1).to_s.rjust(3)}. #{gym.name.ljust(width/2)} #{gym.city}, #{gym.state}"
44
+ end
45
+
46
+ options(__method__, gyms)
47
+ end
48
+
49
+ def show_gym(gym)
50
+ ClosestWeightliftingGem::Scraper.scrape_attributes(gym) if !gym.coach
51
+
52
+ puts "Name: #{gym.name}"
53
+ puts "Address: #{gym.full_address}"
54
+ puts "Director: #{gym.director}"
55
+ puts "Coach: #{gym.coach}"
56
+ puts "Website: #{gym.website}"
57
+
58
+ options(__method__, gym)
59
+ end
60
+
61
+ def options(menu, data=nil)
62
+ menu = menu.to_s
63
+
64
+ case menu
65
+ when "main_menu"
66
+ puts line
67
+ puts <<-DOC.gsub(/^\s*/,'')
68
+ 1. List By State Abbreviation (ex. AL, AK, CA, FL, IL, NY, etc.)
69
+ 2. Search Club Names
70
+ 3. Exit
71
+ DOC
72
+
73
+ process_main
74
+ when "show_gyms"
75
+ puts line
76
+ puts <<-DOC.gsub(/^\s*/,'')
77
+ 1. Select Gym By Number
78
+ 2. Replay List
79
+ 3. Main menu
80
+ 4. Exit
81
+ DOC
82
+
83
+ process_gyms(data)
84
+ when "show_gym"
85
+ puts line
86
+ puts <<-DOC.gsub(/^\s*/,'')
87
+ 1. Open Website
88
+ 2. Back to State Results
89
+ 3. Main menu
90
+ 4. Exit
91
+ DOC
92
+
93
+ process_gym(data)
94
+ else
95
+ puts "WTF"
96
+ end
97
+ end
98
+
99
+ def open_in_browser(gym)
100
+ if gym.website == "none"
101
+ puts "Sorry, that gym doesn't have a website. :("
102
+ elsif !gym.website.include?("http")
103
+ system("open", "http://#{gym.website}")
104
+ else
105
+ system("open", "#{gym.website}")
106
+ end
107
+ end
108
+
109
+ def process_main
110
+ input = nil
111
+
112
+ while input != "exit"
113
+ input = gets.strip.downcase
114
+
115
+ case input
116
+ when "1"
117
+ puts "Which state?"
118
+ state = gets.chomp.upcase
119
+ show_gyms(ClosestWeightliftingGem::Gym.find_by_state(state))
120
+ when "2"
121
+ puts "What do you want to search for?"
122
+ search_term = gets.chomp.upcase
123
+ show_gyms(ClosestWeightliftingGem::Gym.find_by_name(search_term))
124
+ when "3"
125
+ good_bye
126
+
127
+ exit
128
+ when "exit"
129
+ good_bye
130
+
131
+ exit
132
+ else
133
+ puts "I didn't understand that, please try again."
134
+ end
135
+ end
136
+ end
137
+
138
+ def process_gyms(gyms)
139
+ input = nil
140
+
141
+ until input == "exit"
142
+ input = gets.strip.downcase
143
+ case input
144
+ when "1"
145
+ puts "Select a gym by the number:"
146
+ gym_num = gets.chomp.to_i - 1
147
+
148
+ show_gym(gyms[gym_num])
149
+ when "2"
150
+ show_gyms(gyms)
151
+ when "3"
152
+ main_menu
153
+ when "4"
154
+ good_bye
155
+
156
+ exit
157
+ when "exit"
158
+ good_bye
159
+
160
+ exit
161
+ else
162
+ puts "I didn't understand that, please try again."
163
+ end
164
+ end
165
+ end
166
+
167
+ def process_gym(gym)
168
+ input = nil
169
+
170
+ until input == "exit"
171
+ input = gets.strip.downcase
172
+ case input
173
+ when "1"
174
+ open_in_browser(gym)
175
+
176
+ options("show_gym", gym)
177
+ when "2"
178
+ show_gyms(ClosestWeightliftingGem::Gym.find_by_state(gym.state))
179
+ when "3"
180
+ main_menu
181
+ when "4"
182
+ good_bye
183
+
184
+ exit
185
+ when "exit"
186
+ good_bye
187
+
188
+ exit
189
+ else
190
+ puts "I didn't understand that, please try again."
191
+ end
192
+ end
193
+
194
+ end
195
+
196
+ def line
197
+ "="*80
198
+ end
199
+
200
+ def good_bye
201
+ puts "Adios friend. Hope you come back to lift weights again!"
202
+ end
203
+ end
@@ -0,0 +1,3 @@
1
+ class ClosestWeightliftingGem::Geocoder
2
+
3
+ end
@@ -0,0 +1,70 @@
1
+ class ClosestWeightliftingGem::Gym
2
+ attr_accessor :name,
3
+ :full_address,
4
+ :street,
5
+ :city,
6
+ :state,
7
+ :zipcode,
8
+ :phone,
9
+ :director,
10
+ :coach,
11
+ :usaw_url,
12
+ :website
13
+
14
+ @@all = []
15
+ @@searches = []
16
+
17
+ def initialize(gym_attributes)
18
+ gym_attributes.each { |k,v| self.send(("#{k}="), v)}
19
+
20
+ @@all << self
21
+ end
22
+
23
+ def add_attributes(gym_attributes)
24
+ gym_attributes.each { |k,v| self.send(("#{k}="), v)}
25
+ end
26
+
27
+ def full_address
28
+ "#{street} #{city}, #{state} #{zipcode}"
29
+ end
30
+
31
+ def self.all
32
+ @@all
33
+ end
34
+
35
+ def self.last_search
36
+ @@searches.last
37
+ end
38
+
39
+ def self.searches
40
+ @@searches
41
+ end
42
+
43
+ def self.reset!
44
+ self.all.clear
45
+ end
46
+
47
+ def self.weird_gyms
48
+ self.all.find_all do |g|
49
+ g.phone == nil || g.street == nil || g.name == nil
50
+ end
51
+ end
52
+
53
+ def self.find_by_name(input)
54
+ self.searches << { method: __method__, value: input }
55
+
56
+ select_few = self.all.select do |gym|
57
+ gym.name.upcase.include?(input.upcase)
58
+ end
59
+ end
60
+
61
+ def self.find_by_state(state)
62
+ self.searches << { method: __method__, value: state }
63
+
64
+ self.all.find_all { |gym| gym.state == state.upcase }
65
+ end
66
+
67
+ def self.count_by_state
68
+ self.all.inject(Hash.new(0)) { |total, gym| total[gym.state] += 1 ; total }
69
+ end
70
+ end
@@ -0,0 +1,73 @@
1
+ class ClosestWeightliftingGem::Scraper
2
+
3
+ BASE_URL = "https://webpoint.usaweightlifting.org/wp15/Companies/"
4
+
5
+ def self.scrape_main
6
+ puts "Fetching index..."
7
+ index = Nokogiri::HTML(open("#{BASE_URL}/Clubs.wp?frm=t"))
8
+
9
+ get_state_abbreviations(index).each { |state| scrape_state_page(state) }
10
+
11
+ puts "\n\nSorry that took so long."
12
+ end
13
+
14
+ def self.scrape_state_page(state)
15
+ puts "Fetching gym data in #{state}..."
16
+ state_doc = Nokogiri::HTML(open("#{BASE_URL}/Clubs.wp?frm=t&CompanyState=#{state}"))
17
+
18
+ # I want it to scrape each state page
19
+ # I want it to insantiate and save gym objects for each gym on the page
20
+ # This will just be basic info and I can set other data in the gym class
21
+
22
+ state_doc.search(".datarow").each do |gym_row|
23
+
24
+ if gym_row.search(".right+ .left").text.split(" ").size < 5
25
+ scrape_gym_page(gym_row)
26
+ else
27
+ ClosestWeightliftingGem::Gym.new({
28
+ :name => gym_row.search("a").first.children.text.titleize,
29
+ :street => gym_row.children[5].children[0].text,
30
+ :city => gym_row.children[5].children[2].text.split(",").first,
31
+ :state => state,
32
+ :zipcode => gym_row.children[5].children[2].text.split(/\W+/).last,
33
+ :phone => gym_row.children[5].children[4].text,
34
+ :usaw_url => gym_row.search("a").first.attr("onclick").match(/\/V.+true/)[0]
35
+ })
36
+ end
37
+ end
38
+ end
39
+
40
+ def self.scrape_gym_page(gym_row)
41
+ gym_doc = Nokogiri::HTML(open("#{BASE_URL + gym_row.search("a").first.attr("onclick").match(/\/V.+true/)[0]}"))
42
+
43
+ ClosestWeightliftingGem::Gym.new({
44
+ :name => gym_doc.search(".fe_vbig_row td").text.titleize,
45
+ :street => gym_doc.search(".fe_vbig_row+ .fe_big_row td").children.to_s.split("<br>")[0],
46
+ :city => gym_doc.search(".fe_vbig_row+ .fe_big_row td").children.to_s.split("<br>")[1].split(",")[0],
47
+ :state => gym_doc.search(".fe_vbig_row+ .fe_big_row td").children.to_s.split(",").last.split(/\W+/)[1],
48
+ :zipcode => gym_doc.search(".fe_vbig_row+ .fe_big_row td").children.to_s.split(/\W/).last,
49
+ :phone => gym_doc.search(".fe_big_row:nth-child(4) td").children.last.to_s[1..-1],
50
+ :director => gym_doc.search(".fe_big_row:nth-child(2) td+ td").text,
51
+ :coach => gym_doc.search(".fe_big_row+ .fe_big_row td+ td").text,
52
+ :website => gym_doc.text.split("site:")[1].split("\r").first[1..-1],
53
+ :usaw_url => gym_row.search("a").first.attr("onclick").match(/\/V.+true/)[0]
54
+ })
55
+
56
+ end
57
+
58
+ def self.scrape_attributes(gym)
59
+ gym_doc = Nokogiri::HTML(open("#{BASE_URL + gym.usaw_url}"))
60
+
61
+ gym.add_attributes({
62
+ :phone => gym_doc.search(".fe_big_row:nth-child(4) td").children.last.to_s[1..-1],
63
+ :director => gym_doc.search(".fe_big_row:nth-child(2) td+ td").text,
64
+ :coach => gym_doc.search(".fe_big_row+ .fe_big_row td+ td").text,
65
+ :website => gym_doc.text.split("site:")[1].split("\r").first[1..-1]
66
+ })
67
+ end
68
+
69
+ def self.get_state_abbreviations(index)
70
+ index.search("select").children.collect { |child| child.attr("value") }[2..-1]
71
+ end
72
+
73
+ end
@@ -0,0 +1,3 @@
1
+ module ClosestWeightliftingGem
2
+ VERSION = "0.1.2"
3
+ end
data/notes.md ADDED
@@ -0,0 +1,37 @@
1
+ ToDo:
2
+
3
+ Update Gemspec ToDos
4
+ 2. Start with project structure
5
+ 3. Start with entry point - file run (bin/closest-weightlifting-gem)
6
+ 4. Build to CLI interface
7
+ 5. Stub out interface
8
+ 6. Start makinig things real
9
+ 7. Discover objects
10
+ 8. Program
11
+
12
+
13
+
14
+ 1. Plan Gem, imagine interface
15
+ bin/closest-weightlifting-gem
16
+ Print a greeting
17
+ Search By Address
18
+ <user input>
19
+ 1. "Distance - Gym Name - Website - Phone - Email"
20
+ 2. "Distance - Gym Name - Website - Phone - Email"
21
+ 3. "Distance - Gym Name - Website - Phone - Email"
22
+ To find out more about a gym, enter the number on the left or
23
+ to search again, type 'search' ('exit' to leave)
24
+ go to gym page
25
+ open to web page or google maps
26
+
27
+
28
+
29
+
30
+
31
+
32
+
33
+
34
+ Basic URI for accessing each state's individual page
35
+ https://webpoint.usaweightlifting.org/wp15/Companies/Clubs.wp?frm=t&CompanyValue=#{state}
36
+
37
+
metadata ADDED
@@ -0,0 +1,163 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: closest_weightlifting_gem
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.2
5
+ platform: ruby
6
+ authors:
7
+ - zacscodingclub
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2016-03-26 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.11'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.11'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.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.3
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.3
69
+ - !ruby/object:Gem::Dependency
70
+ name: nokogiri
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 1.6.7.2
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 1.6.7.2
83
+ - !ruby/object:Gem::Dependency
84
+ name: require_all
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 1.3.3
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 1.3.3
97
+ - !ruby/object:Gem::Dependency
98
+ name: titleize
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 1.4.0
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 1.4.0
111
+ description: This gem uses the data available on the USA Weightlifting website (http://www.teamusa.org/usa-weightlifting/clubs-lwc/find-a-club)
112
+ to create a simple CLI interface with all the gyms.
113
+ email:
114
+ - zbaston@gmail.com
115
+ executables: []
116
+ extensions: []
117
+ extra_rdoc_files: []
118
+ files:
119
+ - ".gitignore"
120
+ - ".rspec"
121
+ - ".travis.yml"
122
+ - Gemfile
123
+ - LICENSE.txt
124
+ - README.md
125
+ - Rakefile
126
+ - bin/closest-weightlifting-gem
127
+ - bin/console
128
+ - bin/setup
129
+ - closest_weightlifting_gem-0.1.0.gem
130
+ - closest_weightlifting_gem-0.1.1.gem
131
+ - closest_weightlifting_gem.gemspec
132
+ - lib/closest_weightlifting_gem.rb
133
+ - lib/closest_weightlifting_gem/cli.rb
134
+ - lib/closest_weightlifting_gem/geocoder.rb
135
+ - lib/closest_weightlifting_gem/gym.rb
136
+ - lib/closest_weightlifting_gem/scraper.rb
137
+ - lib/closest_weightlifting_gem/version.rb
138
+ - notes.md
139
+ homepage: http://rubygems.org/gems/closest_weightlifting_gem
140
+ licenses:
141
+ - MIT
142
+ metadata: {}
143
+ post_install_message:
144
+ rdoc_options: []
145
+ require_paths:
146
+ - lib
147
+ required_ruby_version: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ version: '0'
152
+ required_rubygems_version: !ruby/object:Gem::Requirement
153
+ requirements:
154
+ - - ">="
155
+ - !ruby/object:Gem::Version
156
+ version: '0'
157
+ requirements: []
158
+ rubyforge_project:
159
+ rubygems_version: 2.4.5.1
160
+ signing_key:
161
+ specification_version: 4
162
+ summary: USA Weighlifting Club Gyms
163
+ test_files: []