study_the_map 0.1.3 → 0.1.4

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: 938fe24962c2504ddaed0154595be22c9b62f0fa
4
- data.tar.gz: 93cb17b26a8f6d87c4f7adb18fb0f0f35c057dde
3
+ metadata.gz: a7adc405e3fb54aea7a9a894124201badadb373e
4
+ data.tar.gz: d9cf28aaf972aed3852d1fe64de322c6249000f4
5
5
  SHA512:
6
- metadata.gz: 3eefaab7b942e239dcee0d0d70ea7506dbac2e82dea5543b9968c4a2d309e81299cde9d8d03e4ffb782d94a748e5f8ee0c937f69950f9376c6dcbff1539ce125
7
- data.tar.gz: 9fc8e80e499432ed0ca174dc1e324567fc3e86b655dc7be418b42013c841e905e0082a6f510703a8cbef7aaf339477ca5ab0a158bc4a05b193b785debdf52366
6
+ metadata.gz: b81c9fad863d21e8add560968543536af937987a4b599552e2426bce87927bd9b374942a2ff6fa3a05dd3e796c02a35231bdbad3447edb0c98b3940bca44709d
7
+ data.tar.gz: 4eae5de676b63375910b1a7e41615cba7e5f5d7562f71591e8da0f7c5b2314cb0ca7a455644c07d593b7de5baa1be0932b1d74d9ec9116bff15f513507435f8a
data/README.md CHANGED
@@ -20,20 +20,6 @@ Or install it yourself as:
20
20
 
21
21
  ## Usage
22
22
 
23
- Check that it installed using require 'study_the_map'. Then you can run the app from irb with StudyTheMap::CLI.new.call or ./bin/study_the_map if you've downloaded the repo.
24
-
25
- ## Development
26
-
27
- 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.
28
-
29
- 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).
30
-
31
- ## Contributing
32
-
33
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/study_the_map. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
34
-
35
-
36
- ## License
37
-
38
- The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
23
+ ```require 'study_the_map'```
39
24
 
25
+ ```App.start```
data/bin/study_the_map CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
  require "bundler/setup"
3
- require './lib/study_the_map.rb'
3
+ require_relative '../lib/study_the_map.rb'
4
4
  require 'pry'
5
5
 
6
6
  StudyTheMap::CLI.new.call
data/lib/study_the_map.rb CHANGED
@@ -1,8 +1,14 @@
1
1
  require "bundler/setup"
2
2
  require "launchy"
3
3
  require "rake"
4
- require "./lib/study_the_map/version.rb"
5
- require_relative './study_the_map/cli'
6
- require './lib/study_the_map/lookupids.rb'
7
- require './lib/study_the_map/regions.rb'
8
- require './lib/study_the_map/ski_map.rb'
4
+ require 'pry'
5
+ require 'open-uri'
6
+ require 'nokogiri'
7
+
8
+ require_relative "../lib/study_the_map/version"
9
+ require_relative '../lib/study_the_map/cli'
10
+ require_relative '../lib/study_the_map/lookupids'
11
+ require_relative '../lib/study_the_map/regions'
12
+ require_relative '../lib/study_the_map/ski_map'
13
+ require_relative '../lib/study_the_map/ski_map_scraper'
14
+ require_relative '../lib/study_the_map/region_scraper'
@@ -1,5 +1,10 @@
1
1
  #CLI controller
2
- require "./lib/study_the_map.rb"
2
+ class App
3
+ def self.start
4
+ StudyTheMap::CLI.new.call
5
+ end
6
+ end
7
+
3
8
  class StudyTheMap::CLI
4
9
 
5
10
  def call
@@ -10,6 +15,14 @@ class StudyTheMap::CLI
10
15
 
11
16
  end
12
17
 
18
+ def list_map_years
19
+
20
+ @skimaps.area_info.scrape_map_data.each do |map|
21
+ puts map.search("yearPublished").text
22
+ end
23
+
24
+ end
25
+
13
26
  def get_map
14
27
 
15
28
  resort_name = nil
@@ -26,9 +39,11 @@ class StudyTheMap::CLI
26
39
 
27
40
  get_areas
28
41
 
29
- elsif Region.ski_area_list.include?(resort_name)
42
+ elsif RegionScraper.ski_area_list.include?(resort_name)
43
+
44
+ @skimaps = SkiMaps.new(resort_name)
45
+ self.map_count_and_pick(@skimaps.map_count)
30
46
 
31
- SkiMaps.new(resort_name)
32
47
 
33
48
  else
34
49
 
@@ -37,6 +52,75 @@ class StudyTheMap::CLI
37
52
  end
38
53
  end
39
54
 
55
+ def map_count_and_pick(map_count)
56
+
57
+ puts "There are #{map_count} maps for this ski area."
58
+
59
+ if map_count == "0"
60
+
61
+ StudyTheMap::CLI.new.call
62
+
63
+ elsif map_count == "1"
64
+
65
+ self.pick_map(self.get_map_years.join)
66
+
67
+ else
68
+
69
+ puts "Please wait while we fetch the maps' years..."
70
+ puts ""
71
+
72
+ self.list_map_years
73
+ map_years = @skimaps.area_info.scrape_map_years
74
+
75
+ input = nil
76
+
77
+ until map_years.include?(input)
78
+ puts ""
79
+ puts "Please pick a year that is listed."
80
+ input = gets.strip
81
+ end
82
+
83
+ pick_map(input)
84
+
85
+ end
86
+
87
+ end
88
+
89
+ def pick_map(year)
90
+
91
+ map_data = @skimaps.area_info.scrape_map_data.detect do |map|
92
+ map.search("yearPublished").text == year
93
+ end
94
+
95
+ begin
96
+ url = map_data.search("render").attr('url').text
97
+ rescue Exception
98
+ url = map_data.search("unprocessed").attr('url').text
99
+ end
100
+
101
+ puts "Would you like to download the Map to your working directory or see it in your browser?"
102
+ puts "Type 'browser', 'download', or 'exit'"
103
+
104
+ input = gets.strip
105
+
106
+ case input
107
+
108
+ when "download"
109
+
110
+ exec "curl -O #{url}"
111
+ puts "Enjoy your map!"
112
+
113
+ when "browser"
114
+
115
+ Launchy.open("#{url}")
116
+ puts "Enjoy your map!"
117
+
118
+ end
119
+
120
+ end
121
+
122
+
123
+
40
124
  def get_areas
41
125
 
42
126
  input = nil
@@ -74,8 +158,8 @@ class StudyTheMap::CLI
74
158
 
75
159
  def region
76
160
 
77
- region = nil
78
- while region != "back"
161
+ region_name = nil
162
+ while region_name != "back"
79
163
 
80
164
  puts "-----------------------------------------------------------------------"
81
165
  puts "1. Input a region for a list of ski resorts, or"
@@ -85,23 +169,27 @@ class StudyTheMap::CLI
85
169
  puts "3. Or 'back' to return to the main menu."
86
170
  puts '-->'
87
171
 
88
- region = gets.strip
172
+ region_name = gets.strip
173
+
174
+ if region_name == "back"
175
+ call
176
+ end
89
177
 
90
- if region.size == 1
178
+ if region_name.size == 1
91
179
 
92
- Region.starts_with(region)
180
+ Region.starts_with(region_name)
93
181
  region
94
182
 
95
183
  else
96
184
 
97
185
  begin
98
186
 
99
- region_object = Region.new(region)
187
+ region_object = Region.new(region_name)
100
188
  region_object.full_list
101
189
 
102
190
  rescue Exception
103
191
 
104
- if region != "back"
192
+ if region_name != "back"
105
193
  puts '-----------------------------------------------------------------------'
106
194
  puts "Not a valid region."
107
195
  puts '-----------------------------------------------------------------------'
@@ -1,12 +1,10 @@
1
- require 'pry'
2
- require 'open-uri'
3
- require 'nokogiri'
4
-
5
1
  class LookupIDS
6
2
 
7
3
 
8
4
  def self.index
5
+
9
6
  doc = Nokogiri::XML(open("./lib/fixtures/index.xml"))
7
+
10
8
  end
11
9
 
12
10
  def self.find_region_id(region_name)
@@ -14,6 +12,7 @@ class LookupIDS
14
12
  region_element = self.index.css("regions region").detect do |region|
15
13
  region.text.strip == region_name
16
14
  end
15
+
17
16
  region_element['id']
18
17
 
19
18
  end
@@ -23,6 +22,7 @@ class LookupIDS
23
22
  ski_area_element = self.index.search("skiArea").detect do |ski_area|
24
23
  ski_area.search("name").text.strip == area_name
25
24
  end
25
+
26
26
  ski_area_element['id']
27
27
 
28
28
  end
@@ -0,0 +1,31 @@
1
+ class RegionScraper
2
+
3
+ def initialize(region_name)
4
+ @url = "https://skimap.org/Regions/view/#{LookupIDS.find_region_id(region_name)}.xml"
5
+ end
6
+
7
+ def region_info
8
+ Nokogiri::XML(open(@url))
9
+ end
10
+
11
+ def scrape_ski_areas
12
+ self.region_info.search("skiArea").collect do |ski_area|
13
+ "#{ski_area.text}"
14
+ end
15
+ end
16
+
17
+ def self.regions_list
18
+
19
+ LookupIDS.index.css("regions region").collect do |region|
20
+ region.text.strip
21
+ end.uniq
22
+
23
+ end
24
+
25
+ def self.ski_area_list
26
+
27
+ LookupIDS.index.search("skiArea name").map {|ski_area| ski_area.text}
28
+
29
+ end
30
+
31
+ end
@@ -1,38 +1,29 @@
1
- require './lib/study_the_map.rb'
2
1
 
3
2
  class Region
4
3
 
5
- attr_accessor :ski_areas, :region_id
4
+ attr_accessor :ski_areas , :region_id, :region_info
6
5
 
7
6
  def initialize(region)
8
7
 
9
- doc = Nokogiri::XML(open("https://skimap.org/Regions/view/#{LookupIDS.find_region_id(region)}.xml"))
10
- self.region_id = doc.search("region").attr('id').text
8
+ region_data = RegionScraper.new(region)
9
+ @region_info = region_data.region_info
10
+
11
+ self.region_id = @region_info.search("region").attr('id').text
12
+
11
13
 
12
14
  puts "Here are the ski resorts in #{region}:"
13
15
 
14
- self.ski_areas = doc.search("skiArea").collect do |ski_area|
15
- "#{ski_area.text}"
16
- end
16
+ self.ski_areas = region_data.scrape_ski_areas
17
17
 
18
18
  end
19
19
 
20
20
  def self.starts_with(letter)
21
21
  # regions that start with
22
- regions_starts_with_letter = self.regions_list.select {|region_name| region_name.start_with?(letter.upcase)}
22
+ regions_starts_with_letter = RegionScraper.regions_list.select {|region_name| region_name.start_with?(letter.upcase)}
23
23
  regions_starts_with_letter.each.with_index(1) {|region_name, index| puts "#{index}. #{region_name}"}
24
24
 
25
25
  end
26
26
 
27
- def starts_with(letter)
28
-
29
- results = self.ski_areas.select do |area|
30
- area.start_with?("#{letter}", "#{letter.upcase}")
31
- end
32
-
33
- results.each.with_index(1){|area, i| puts "#{i}. #{area}"}
34
-
35
- end
36
27
 
37
28
  def full_list
38
29
 
@@ -40,19 +31,4 @@ class Region
40
31
 
41
32
  end
42
33
 
43
- def self.regions_list
44
-
45
- regions_list_array = []
46
- LookupIDS.index.css("regions region").each do |region|
47
- regions_list_array << region.text.strip
48
- end
49
- regions_list_array.uniq
50
-
51
- end
52
-
53
- def self.ski_area_list
54
-
55
- LookupIDS.index.search("skiArea name").map {|ski_area| ski_area.text}
56
-
57
- end
58
34
  end
@@ -1,130 +1,17 @@
1
- require './lib/study_the_map.rb'
1
+ # require './lib/study_the_map.rb'
2
2
 
3
3
  class SkiMaps
4
4
 
5
- attr_accessor :area_name, :area_info
5
+ attr_accessor :area_name, :area_info, :map_count
6
6
 
7
7
  def initialize(area_name)
8
8
 
9
9
  @area_name = area_name
10
- area_doc = Nokogiri::XML(open("https://skimap.org/SkiAreas/view/#{LookupIDS.find_ski_area_id(area_name)}.xml"))
11
-
12
- @area_info = area_doc
13
10
 
14
- map_count_and_pick
11
+ @area_info = SkiMapScraper.new(area_name)
12
+ @map_count = @area_info.map_count
15
13
 
14
+
16
15
  end
17
16
 
18
- def map_count_and_pick
19
-
20
- map_count = @area_info.search("skiMaps").attr('count').text
21
-
22
- puts "There are #{map_count} maps for this ski area."
23
-
24
- if map_count == "0"
25
-
26
- StudyTheMap::CLI.new.call
27
-
28
- elsif map_count == "1"
29
-
30
- self.pick_map(self.get_map_years.join)
31
-
32
- else
33
-
34
- puts "Please wait while we fetch the maps' years..."
35
- puts ""
36
-
37
- self.list_map_years
38
- map_years = self.get_map_years
39
-
40
- input = nil
41
-
42
- until map_years.include?(input)
43
- puts ""
44
- puts "Please pick a year that is listed."
45
- input = gets.strip
46
- end
47
-
48
- pick_map(input)
49
-
50
- end
51
-
52
- end
53
-
54
- def get_map_ids
55
-
56
- id_array = []
57
-
58
- @area_info.search("skiMaps skiMap").each do |map|
59
- id_array << map.attr('id')
60
- end
61
-
62
- id_array
63
-
64
- end
65
-
66
- def get_map_data
67
-
68
- map_data_array = []
69
-
70
- self.get_map_ids.each do |id|
71
- map_data_array << Nokogiri::XML(open("https://skimap.org/SkiMaps/view/#{id}.xml"))
72
- end
73
-
74
- map_data_array
75
-
76
- end
77
-
78
- def list_map_years
79
-
80
- self.get_map_data.each do |map|
81
- puts map.search("yearPublished").text
82
- end
83
-
84
- end
85
-
86
- def get_map_years
87
-
88
- map_years_array = []
89
-
90
- self.get_map_data.each do |map|
91
- map_years_array << map.search("yearPublished").text
92
- end
93
-
94
- map_years_array
95
-
96
- end
97
-
98
- def pick_map(year)
99
-
100
- map_data = self.get_map_data.detect do |map|
101
- map.search("yearPublished").text == year
102
- end
103
-
104
- begin
105
- url = map_data.search("render").attr('url').text
106
- rescue Exception
107
- url = map_data.search("unprocessed").attr('url').text
108
- end
109
-
110
- puts "Would you like to download the Map to your working directory or see it in your browser?"
111
- puts "Type 'browser', 'download', or 'exit'"
112
-
113
- input = gets.strip
114
-
115
- case input
116
-
117
- when "download"
118
-
119
- exec "curl -O #{url}"
120
- puts "Enjoy your map!"
121
-
122
- when "browser"
123
-
124
- Launchy.open("#{url}")
125
- puts "Enjoy your map!"
126
-
127
- end
128
-
129
- end
130
17
  end
@@ -0,0 +1,43 @@
1
+ class SkiMapScraper
2
+
3
+ def initialize(area_name)
4
+ @url = "https://skimap.org/SkiAreas/view/#{LookupIDS.find_ski_area_id(area_name)}.xml"
5
+ end
6
+
7
+ def area_info
8
+ Nokogiri::XML(open(@url))
9
+ end
10
+
11
+ def scrape_map_ids
12
+
13
+ id_array = []
14
+
15
+ self.area_info.search("skiMaps skiMap").each do |map|
16
+ id_array << map.attr('id')
17
+ end
18
+
19
+ id_array
20
+
21
+ end
22
+
23
+ def scrape_map_data
24
+
25
+ self.scrape_map_ids.collect do |id|
26
+ Nokogiri::XML(open("https://skimap.org/SkiMaps/view/#{id}.xml"))
27
+ end
28
+
29
+ end
30
+
31
+ def scrape_map_years
32
+
33
+ self.scrape_map_data.collect do |map|
34
+ map.search("yearPublished").text
35
+ end
36
+
37
+ end
38
+
39
+ def map_count
40
+ self.area_info.search("skiMaps").attr('count').text
41
+ end
42
+
43
+ end
@@ -1,3 +1,3 @@
1
1
  module StudyTheMap
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.4"
3
3
  end
@@ -24,6 +24,6 @@ Gem::Specification.new do |spec|
24
24
  spec.add_development_dependency "rspec", "~> 3.0"
25
25
  spec.add_development_dependency "pry"
26
26
 
27
- spec.add_development_dependency "nokogiri"
28
- spec.add_development_dependency "launchy"
27
+ spec.add_runtime_dependency "launchy"
28
+ spec.add_runtime_dependency "nokogiri"
29
29
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: study_the_map
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - bshap93
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-06-13 00:00:00.000000000 Z
11
+ date: 2016-07-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -67,13 +67,13 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: nokogiri
70
+ name: launchy
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
- type: :development
76
+ type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
@@ -81,13 +81,13 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: launchy
84
+ name: nokogiri
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
- type: :development
90
+ type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
@@ -117,8 +117,10 @@ files:
117
117
  - lib/study_the_map.rb
118
118
  - lib/study_the_map/cli.rb
119
119
  - lib/study_the_map/lookupids.rb
120
+ - lib/study_the_map/region_scraper.rb
120
121
  - lib/study_the_map/regions.rb
121
122
  - lib/study_the_map/ski_map.rb
123
+ - lib/study_the_map/ski_map_scraper.rb
122
124
  - lib/study_the_map/version.rb
123
125
  - study_the_map.gemspec
124
126
  homepage: https://github.com/bshap93/study_the_map