Class: Flicks::Playlist

Inherits:
Object
  • Object
show all
Defined in:
lib/flicks/playlist.rb

Instance Method Summary collapse

Constructor Details

#initialize(name) ⇒ Playlist

Returns a new instance of Playlist.



7
8
9
10
# File 'lib/flicks/playlist.rb', line 7

def initialize(name)
  @name = name
  @movies = []
end

Instance Method Details

#add_movie(movie) ⇒ Object



26
27
28
# File 'lib/flicks/playlist.rb', line 26

def add_movie(movie)
  @movies << movie
end

#load(from_file) ⇒ Object



12
13
14
15
16
# File 'lib/flicks/playlist.rb', line 12

def load(from_file)
  File.readlines(from_file).each do |line|
    add_movie(Movie.from_csv(line))
  end
end

#play(viewings) ⇒ Object



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

def play(viewings)
  puts "#{@name}'s playlist:"

  puts @movies.sort

  snacks = SnackBar::SNACKS
  puts "\nThere are #{snacks.size} snacks available in the snack bar."

  snacks.each do  |snack|
    puts "#{snack.name} has #{snack.carbs} carbs"
  end

  1.upto(viewings) do |count|
    puts "\nViewing #{count}:"
    @movies.each do |movie|
      WaldorfAndStatler.review(movie)
      snack = SnackBar.random
      movie.ate_snack(snack)
      puts movie
    end
  end
end


59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/flicks/playlist.rb', line 59

def print_stats
  puts "\n#{@name}'s Stats:"

  puts "#{total_carbs_consumed} total carbs consumed"
  @movies.sort.each do |movie|
    puts "\n#{movie.title}'s snack totals:"
    movie.each_snack do |snack|
      puts "#{snack.name} total #{snack.carbs} carbs"
    end
    puts "#{movie.carbs_consumed} grand total carbs"
  end

  hits, flops = @movies.partition { |movie| movie.hit? }

  puts "\nHits:"
  puts hits.sort

  puts "\nFlops:"
  puts flops.sort
end

#save(to_file = "movie_rankings.csv") ⇒ Object



18
19
20
21
22
23
24
# File 'lib/flicks/playlist.rb', line 18

def save(to_file="movie_rankings.csv")
  File.open(to_file, "w") do |file|
    @movies.sort.each do |movie|
      file.puts movie.to_csv
    end
  end
end

#total_carbs_consumedObject



53
54
55
56
57
# File 'lib/flicks/playlist.rb', line 53

def total_carbs_consumed
  @movies.reduce(0) do |sum, movie|
    sum + movie.carbs_consumed
  end
end