Module: JimmyJukebox::HandleLoadJukeboxInput

Defined in:
lib/jimmy_jukebox/handle_load_jukebox_input.rb

Instance Method Summary collapse

Instance Method Details

#artist_name(arg) ⇒ Object



60
61
62
# File 'lib/jimmy_jukebox/handle_load_jukebox_input.rb', line 60

def artist_name(arg)
  ARTISTS[arg.to_sym][:name]
end

#display_genre_download_requires_n_messageObject



97
98
99
100
101
102
103
104
# File 'lib/jimmy_jukebox/handle_load_jukebox_input.rb', line 97

def display_genre_download_requires_n_message
  display_template {
    puts "    You requested a sample of #{ARGV[0]} songs without specifying how many.\n\n"
    puts "    Please try again but specify how many songs you wish to download.\n\n"
    puts "    For example, to download 10 #{ARGV[0]} songs, type:\n\n"
    puts "         load_jukebox #{ARGV[0]} 10"
  }
end

#display_template(&msg) ⇒ Object



89
90
91
92
93
94
95
# File 'lib/jimmy_jukebox/handle_load_jukebox_input.rb', line 89

def display_template(&msg)
  puts "    ------------------------------------------------------------------------"
  puts "                     JimmyJukebox usage help\n\n"
  msg.call if msg
  puts "    Full instructions: https://github.com/JamesLavin/jimmy_jukebox#readme"
  puts "    ------------------------------------------------------------------------"
end

#invalid_artistObject



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/jimmy_jukebox/handle_load_jukebox_input.rb', line 30

def invalid_artist
  display_template {
    puts "    No action taken in response to your command 'load_jukebox #{ARGV[0]}'.\n\n"
    puts "    JimmyJukebox does not recognize '#{ARGV[0]}'.\n\n"
    puts "    You must select a valid artist or genre.\n\n"
    puts "    Valid genres:\n\n"
    puts "         'bluegrass'"
    puts "         'banjo'"
    puts "         'classical'"
    puts "         'jazz'"
    puts "         'rock'\n\n"
    puts "    Valid artists include:\n\n"
    puts "         'bh' for Billie Holiday"
    puts "         'cb' for Count Basie"
    puts "         'lh' for Lionel Hampton.\n\n"
    puts "    Please visit the link below for a complete list of valid artists.\n\n"
  }
  exit
end

#list_artistsObject



20
21
22
23
24
25
26
27
28
# File 'lib/jimmy_jukebox/handle_load_jukebox_input.rb', line 20

def list_artists
  display_template {
    puts "    Artist symbol = Artist name (Genre)\n\n"
    ARTISTS.each do |k,v|
      puts "            " + k.to_s.rjust(5) + ' = ' + prettified_artist_name(v[:name]) + ' (' + v[:genre].capitalize + ')'
    end
    puts "\n"
  }
end

#no_argv0Object



7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/jimmy_jukebox/handle_load_jukebox_input.rb', line 7

def no_argv0
  display_template {
    puts "    You must select an artist or genre to use 'load_jukebox'.\n\n"
    puts "    Examples:\n\n"
    puts "         load_jukebox at            (to download Art Tatum)\n\n"
    puts "         load_jukebox dr            (to download Django Reinhardt)\n\n"
    puts "         load_jukebox bluegrass     (to download bluegrass)\n\n"
    puts "         load_jukebox classical     (to download classical)\n\n"
    puts "         load_jukebox jazz          (to download jazz)\n\n"
  }
  exit
end

#play_radioObject



68
69
70
71
# File 'lib/jimmy_jukebox/handle_load_jukebox_input.rb', line 68

def play_radio
  require 'jimmy_jukebox/check_gems'
  require 'jimmy_jukebox/user_interface'
end

#process_artistObject



73
74
75
76
77
78
79
# File 'lib/jimmy_jukebox/handle_load_jukebox_input.rb', line 73

def process_artist
  if valid_integer?(ARGV[1])
    JimmyJukebox::SongLoader.new.send(artist_name(ARGV[0]), ARGV[1].to_i)
  else
    JimmyJukebox::SongLoader.new.send(artist_name(ARGV[0]))
  end
end

#process_genreObject



81
82
83
84
85
86
87
# File 'lib/jimmy_jukebox/handle_load_jukebox_input.rb', line 81

def process_genre
  if valid_integer?(ARGV[1])
    JimmyJukebox::SongLoader.new.download_sample_genre(ARGV[1].to_i, ARGV[0].upcase)
  else
    display_genre_download_requires_n_message
  end
end

#process_sampleObject



106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
# File 'lib/jimmy_jukebox/handle_load_jukebox_input.rb', line 106

def process_sample
  if ARGV[1].nil?
    JimmyJukebox::SongLoader.new.download_sample_genre(1)
  elsif valid_integer?(ARGV[1]) && valid_genre?(ARGV[2])
    JimmyJukebox::SongLoader.new.download_sample_genre(ARGV[1].to_i, ARGV[2].upcase)
  elsif valid_genre?(ARGV[1]) && valid_integer?(ARGV[2])
    JimmyJukebox::SongLoader.new.download_sample_genre(ARGV[2].to_i, ARGV[1].upcase)
  elsif valid_integer?(ARGV[1])
    JimmyJukebox::SongLoader.new.download_sample_genre(ARGV[1].to_i)
  elsif valid_genre?(ARGV[1])
    JimmyJukebox::SongLoader.new.download_sample_genre(1, ARGV[1].upcase)
  else
    JimmyJukebox::SongLoader.new.download_sample_genre(1)
  end
end

#valid_artist?(arg) ⇒ Boolean

Returns:

  • (Boolean)


50
51
52
# File 'lib/jimmy_jukebox/handle_load_jukebox_input.rb', line 50

def valid_artist?(arg)
  ARTISTS.has_key?(arg.to_sym)
end

#valid_genre?(arg) ⇒ Boolean

Returns:

  • (Boolean)


54
55
56
57
58
# File 'lib/jimmy_jukebox/handle_load_jukebox_input.rb', line 54

def valid_genre?(arg)
  # probably shouldn't hardcode these
  valid_genres = [/^BANJO$/i, /^BLUEGRASS$/i, /^CLASSICAL$/i, /^FOLK$/i, /^JAZZ$/i, /^JUGBAND$/i, /^ROCK$/i]
  valid_genres.any? { |g| g =~ arg }
end

#valid_integer?(arg) ⇒ Boolean

Returns:

  • (Boolean)


64
65
66
# File 'lib/jimmy_jukebox/handle_load_jukebox_input.rb', line 64

def valid_integer?(arg)
  arg && arg.to_i.is_a?(Integer) && arg.to_i > 0
end