class StarTrekCLI::Controller
Constants
- INDEX_URL
I am a constant <3
Public Class Methods
new(print_progress)
click to toggle source
# File lib/StarTrekCLI/controller.rb, line 9 def initialize(print_progress) @scraper = StarTrekCLI::Scraper.new @scraper.each_index_group(INDEX_URL) do |group| print "!" if print_progress # special case: Orginal series title has that weird new line hence the ternary title = group[:title] == "Original\nand Animated Series" ? "Star Trek" : group[:title] series = StarTrekCLI::Series.new(title) # this uses uri which is built into the ruby standardlibrary series_url = URI.join(INDEX_URL, group[:page_url]) current_season = 0 @scraper.each_series_page(series_url) do |episode_row| # for debugging purposes / caching if print_progress print "?" if current_season != episode_row[:season_number] current_season = episode_row[:season_number] end season = series.season(episode_row[:season_number]) episode_url = URI.join(INDEX_URL, group[:page_url], episode_row[:episode_url]) # FIXME: this method needs some work! @scraper.episode_page_header(episode_url) do |episode| print "." if print_progress StarTrekCLI::Episode.new( season, episode_row[:production_number], episode_row[:episode_name], episode[:star_date], episode[:air_date] ) end end end end
Public Instance Methods
list_episode_info(series_string, season_string, production_number)
click to toggle source
# File lib/StarTrekCLI/controller.rb, line 84 def list_episode_info(series_string, season_string, production_number) raise "series must be an string" unless series_string.is_a? String series = StarTrekCLI::Series.find_series_by_name(series_string) season_int = season_string.to_i unless season_int > 0 raise "COMPUTER: You must enter an integer for season number. You entered '#{season_string}'" end season = series.season(season_int) production_number_int = production_number.to_i unless production_number_int > 0 raise "COMPUTER: You must enter an integer for production number. You entered '#{production_number}'" end episode = season.episodes[production_number_int.to_s] puts "Air date: #{episode.air_date}" puts "Star date: #{episode.star_date}" end
list_episodes(series_string, season_string)
click to toggle source
# File lib/StarTrekCLI/controller.rb, line 66 def list_episodes(series_string, season_string) raise "series must be an string" unless series_string.is_a? String season_int = season_string.to_i unless season_int > 0 raise "You must enter an integer for season number. You entered '#{season_string}'" end series = StarTrekCLI::Series.find_series_by_name(series_string) season = series.season(season_int) ## working on season.episodes season.episodes.each do |production_number, episode| puts "#{production_number.colorize(:yellow)}: #{episode.name}" end end
list_seasons(series_string)
click to toggle source
# File lib/StarTrekCLI/controller.rb, line 56 def list_seasons(series_string) series = StarTrekCLI::Series.find_series_by_name(series_string) raise "This series is not scraped: '#{series_string}'" unless series series.seasons.each do |season| if season puts season.season_number.to_s.colorize(:green) end end end
list_series()
click to toggle source
# File lib/StarTrekCLI/controller.rb, line 50 def list_series StarTrekCLI::Series.all.each do |series| puts "#{series.name}".colorize(:cyan) end end