class StudyTheMap::CLI
Public Instance Methods
call()
click to toggle source
# File lib/study_the_map/cli.rb, line 10 def call get_areas goodbye end
get_areas()
click to toggle source
# File lib/study_the_map/cli.rb, line 124 def get_areas input = nil while input != 'exit' puts "1. Select a region (type 'region') or Ski Resort (type 'resort') to study associated ski trail maps!" puts '-----------------------------------------------------------------------' puts "2. Or check out the world map to find resorts and trails: (type 'world')" puts '-----------------------------------------------------------------------' puts "3. Enter the area you would like to search:" puts '-->' input = gets.strip.downcase case input when "region" region when "world" Launchy.open("http://openskimap.org/") when "resort" get_map else puts "Please enter 'region', 'resort', or 'world'" puts '-----------------------------------------------------------------------' end end end
get_map()
click to toggle source
# File lib/study_the_map/cli.rb, line 26 def get_map resort_name = nil while resort_name != 'back' puts "1. Please enter the name of the ski area you would like the map for:" puts '-----------------------------------------------------------------------' puts "2. Or type 'back' to go back to the main menu." puts '-->' resort_name = gets.strip if resort_name == 'back' get_areas elsif RegionScraper.ski_area_list.include?(resort_name) @skimaps = SkiMaps.new(resort_name) self.map_count_and_pick(@skimaps.map_count) else puts "Invalid ski area name" end end end
goodbye()
click to toggle source
# File lib/study_the_map/cli.rb, line 205 def goodbye puts "Come back anytime for more maps!" end
list_map_years()
click to toggle source
# File lib/study_the_map/cli.rb, line 18 def list_map_years @skimaps.area_info.scrape_map_data.each do |map| puts map.search("yearPublished").text end end
map_count_and_pick(map_count)
click to toggle source
# File lib/study_the_map/cli.rb, line 55 def map_count_and_pick(map_count) puts "There are #{map_count} maps for this ski area." if map_count == "0" StudyTheMap::CLI.new.call elsif map_count == "1" self.pick_map(self.get_map_years.join) else puts "Please wait while we fetch the maps' years..." puts "" self.list_map_years map_years = @skimaps.area_info.scrape_map_years input = nil until map_years.include?(input) puts "" puts "Please pick a year that is listed." input = gets.strip end pick_map(input) end end
pick_map(year)
click to toggle source
# File lib/study_the_map/cli.rb, line 89 def pick_map(year) map_data = @skimaps.area_info.scrape_map_data.detect do |map| map.search("yearPublished").text == year end begin url = map_data.search("render").attr('url').text rescue Exception url = map_data.search("unprocessed").attr('url').text end puts "Would you like to download the Map to your working directory or see it in your browser?" puts "Type 'browser', 'download', or 'exit'" input = gets.strip case input when "download" exec "curl -O #{url}" puts "Enjoy your map!" when "browser" Launchy.open("#{url}") puts "Enjoy your map!" end end
region()
click to toggle source
# File lib/study_the_map/cli.rb, line 159 def region region_name = nil while region_name != "back" puts "-----------------------------------------------------------------------" puts "1. Input a region for a list of ski resorts, or" puts '-----------------------------------------------------------------------' puts "2. Request a list of regions by typing the letter the region you're looking for starts with," puts '-----------------------------------------------------------------------' puts "3. Or 'back' to return to the main menu." puts '-->' region_name = gets.strip if region_name == "back" call end if region_name.size == 1 Region.starts_with(region_name) region else begin region_object = Region.new(region_name) region_object.full_list rescue Exception if region_name != "back" puts '-----------------------------------------------------------------------' puts "Not a valid region." puts '-----------------------------------------------------------------------' end region end end end end