class Flicks::Playlist
Public Class Methods
new(name)
click to toggle source
# File lib/flicks/playlist.rb, line 7 def initialize(name) @name = name @movies = Array.new end
saving_time()
click to toggle source
# File lib/flicks/playlist.rb, line 19 def Playlist.saving_time Time.new.strftime('Printed on %m/%d/%Y at %I:%M%p') end
Public Instance Methods
add_movie(movie)
click to toggle source
# File lib/flicks/playlist.rb, line 34 def add_movie(movie) puts "::Adding #{movie.title} to playlist" @movies.push(movie) end
load(from_file)
click to toggle source
# File lib/flicks/playlist.rb, line 12 def load(from_file) puts "::Loading #{from_file}::" File.readlines(from_file).each do |line| add_movie(Movie.convert(line)) end end
play(viewings)
click to toggle source
# File lib/flicks/playlist.rb, line 39 def play(viewings) puts "#{@name}'s playlist:" puts @movies.sort puts "There are #{SnackBar::SNACKS.size} snacks in the Snack Bar" SnackBar::SNACKS.map.with_index(1) {|snack,i| puts "\t#{i}. #{snack.name} #{snack.carbs} carbs"} 1.upto(viewings) do |count| @movies.sort.each do |movie| puts "\nViewing #{count}:" WaldorfAndStatler.review(movie) movie.ate_snack(SnackBar.random) puts movie end end end
print_stats()
click to toggle source
# File lib/flicks/playlist.rb, line 56 def print_stats puts "\n#{@name}'s Stats" movies_ordered_by_carbs = @movies.sort {|a,z| z.carbs_consumed <=> a.carbs_consumed} movies_ordered_by_carbs.map.with_index(1) do |movie,i| puts "#{i}. #{movie.title} - #{movie.carbs_consumed} total carbs(#{movie.snack_carbs.keys.size} snacks)" movie.each_snack do |snack| puts "\t#{snack.name.capitalize} - #{snack.carbs} carbs" end end hits, flops = @movies.partition {|movie| movie.hit? } puts "\nHits:" puts hits.sort {|a,z| z.rank <=> a.rank } puts "\nFlops:" puts flops.sort {|d,q| q.rank <=> d.rank } end
save(to_file='final_scores.csv')
click to toggle source
# File lib/flicks/playlist.rb, line 24 def save(to_file='final_scores.csv') File.open(to_file,'a+') do |file| @movies.sort {|a,z| z.rank <=> a.rank}.each do |movie| file.puts(movie.to_csv) end file.puts(Playlist.saving_time) end puts "\n::::Total Stats Saved to #{to_file}::::" end