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.



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

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

Instance Method Details

#add_movie(movie) ⇒ Object



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

def add_movie(movie)
    @movies.push(movie)
end

#load(from_file) ⇒ Object



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

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

#play(viewings) ⇒ Object



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

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

    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.sort.each do |movie|
            WaldorfAndStatler.review(movie)
            snack = SnackBar.random
            movie.ate_snack(snack)
            puts movie
        end
    end
end


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

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

    puts "#{total_carbs_comsumed} total carbs consumed"

    @movies.sort.each do |movie|
        puts "\n#{movie.title}'s snack totals:"
        movie.each_snack do |snack|
            puts "#{snack.carbs} total #{snack.name} 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



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

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_comsumedObject



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

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