flicks 0.0.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/bin/flicks CHANGED
@@ -3,8 +3,9 @@
3
3
  require_relative '../lib/flicks/playlist'
4
4
 
5
5
  playlist = Flicks::Playlist.new("Kermit")
6
-
7
- playlist.load(ARGV.shift || File.join(File.dirname(__FILE__), 'movies.csv'))
6
+ default_movie_file =
7
+ File.join(File.dirname(__FILE__), 'movies.csv')
8
+ playlist.load(ARGV.shift || default_movie_file)
8
9
 
9
10
  loop do
10
11
  puts "\nHow many viewings? ('quit' to exit)"
@@ -4,7 +4,7 @@ require_relative 'rankable'
4
4
  module Flicks
5
5
  class Movie
6
6
  include Rankable
7
-
7
+
8
8
  attr_accessor :title, :rank
9
9
 
10
10
  def initialize(title, rank=0)
@@ -12,33 +12,43 @@ module Flicks
12
12
  @rank = rank
13
13
  @snack_carbs = Hash.new(0)
14
14
  end
15
-
15
+
16
16
  def ate_snack(snack)
17
17
  @snack_carbs[snack.name] += snack.carbs
18
18
  puts "#{@title} led to #{snack.carbs} #{snack.name} carbs being consumed."
19
19
  end
20
-
20
+
21
21
  def carbs_consumed
22
22
  @snack_carbs.values.reduce(0, :+)
23
23
  end
24
-
24
+
25
25
  def each_snack
26
26
  @snack_carbs.each do |name, carbs|
27
- yield Snack.new(name, carbs)
27
+ yield Snack.new(name, carbs)
28
28
  end
29
29
  end
30
-
30
+
31
31
  def to_s
32
32
  "#{@title} has a rank of #{@rank} (#{status})"
33
33
  end
34
-
34
+
35
35
  def to_csv
36
36
  "#{@title},#{@rank}"
37
37
  end
38
-
38
+
39
39
  def self.from_csv(string)
40
40
  title, rank = string.split(',')
41
41
  new(title, Integer(rank))
42
42
  end
43
43
  end
44
- end
44
+ end
45
+
46
+ if __FILE__ == $0
47
+ movie = Flicks::Movie.new("goonies", 10)
48
+ puts movie.title
49
+ puts movie.rank
50
+ movie.thumbs_up
51
+ puts movie.rank
52
+ movie.thumbs_down
53
+ puts movie.rank
54
+ end
@@ -3,18 +3,28 @@ require_relative 'movie'
3
3
  module Flicks
4
4
  class Movie3D < Movie
5
5
  attr_reader :wow_factor
6
-
6
+
7
7
  def initialize(name, rank, wow_factor)
8
8
  super(name, rank)
9
9
  @wow_factor = wow_factor
10
10
  end
11
-
11
+
12
12
  def thumbs_up
13
13
  @wow_factor.times { super }
14
14
  end
15
-
15
+
16
16
  def show_effect
17
17
  puts "Wow! " * @wow_factor
18
- end
18
+ end
19
19
  end
20
- end
20
+ end
21
+
22
+ if __FILE__ == $0
23
+ movie3d = Flicks::Movie3D.new('Glee', 5, 10)
24
+ movie3d.thumbs_up
25
+ puts movie3d.rank
26
+ movie3d.thumbs_down
27
+ puts movie3d.rank
28
+ puts movie3d
29
+ movie3d.show_effect
30
+ end
@@ -6,12 +6,12 @@ require_relative 'snack_bar'
6
6
  module Flicks
7
7
  class Playlist
8
8
  attr_reader :name
9
-
9
+
10
10
  def initialize(name)
11
11
  @name = name
12
12
  @movies = []
13
13
  end
14
-
14
+
15
15
  def add_movie(a_movie)
16
16
  @movies << a_movie
17
17
  end
@@ -26,7 +26,7 @@ module Flicks
26
26
  snacks.each do |snack|
27
27
  puts "#{snack.name} has #{snack.carbs} carbs"
28
28
  end
29
-
29
+
30
30
  1.upto(viewings) do |count|
31
31
  puts "\nViewing #{count}:"
32
32
  @movies.each do |movie|
@@ -37,22 +37,22 @@ module Flicks
37
37
  end
38
38
  end
39
39
  end
40
-
40
+
41
41
  def total_carbs_consumed
42
42
  @movies.reduce(0) { |sum, movie| sum + movie.carbs_consumed }
43
43
  end
44
-
44
+
45
45
  def print_stats
46
46
  puts "\n#{@name}'s Stats:"
47
47
 
48
48
  hits, flops = @movies.partition {|movie| movie.hit? }
49
-
49
+
50
50
  puts "\nHits:"
51
51
  puts hits.sort
52
52
 
53
53
  puts "\nFlops:"
54
54
  puts flops.sort
55
-
55
+
56
56
  puts "\n#{total_carbs_consumed} total carbs consumed"
57
57
  @movies.sort.each do |movie|
58
58
  puts "\n#{movie.title}'s snack totals:"
@@ -62,13 +62,13 @@ module Flicks
62
62
  puts "#{movie.carbs_consumed} grand total carbs"
63
63
  end
64
64
  end
65
-
65
+
66
66
  def load(from_file)
67
67
  File.readlines(from_file).each do |line|
68
68
  add_movie(Movie.from_csv(line))
69
69
  end
70
70
  end
71
-
71
+
72
72
  def save(to_file="movie_rankings.csv")
73
73
  File.open(to_file, "w") do |file|
74
74
  file.puts @movies.sort.map { |movie| movie.to_csv }
@@ -3,19 +3,19 @@ module Flicks
3
3
  def thumbs_up
4
4
  self.rank += 1
5
5
  end
6
-
6
+
7
7
  def thumbs_down
8
8
  self.rank -= 1
9
9
  end
10
-
10
+
11
11
  def hit?
12
12
  self.rank >= 10
13
13
  end
14
-
14
+
15
15
  def status
16
16
  hit? ? "Hit": "Flop"
17
17
  end
18
-
18
+
19
19
  def <=>(other)
20
20
  other.rank <=> self.rank
21
21
  end
@@ -9,9 +9,14 @@ module Flicks
9
9
  Snack.new(:pretzel, 10),
10
10
  Snack.new(:soda, 5)
11
11
  ]
12
-
12
+
13
13
  def self.random
14
14
  SNACKS.sample
15
15
  end
16
16
  end
17
- end
17
+ end
18
+
19
+ if __FILE__ == $0
20
+ puts Flicks::SnackBar::SNACKS
21
+ puts Flicks::SnackBar.random
22
+ end
@@ -1,11 +1,9 @@
1
- require_relative 'movie'
2
-
3
1
  module Flicks
4
2
  module WaldorfAndStatler
5
3
  def self.roll_die
6
4
  rand(1..6)
7
5
  end
8
-
6
+
9
7
  def self.review(movie)
10
8
  case roll_die
11
9
  when 1..2
@@ -15,10 +15,9 @@ module Flicks
15
15
  end
16
16
 
17
17
  end
18
- end
19
18
 
20
- module Flicks
21
19
  describe SnackBar do
20
+
22
21
  it "has a trove of treasures" do
23
22
  SnackBar::SNACKS.should_not be_empty
24
23
  end
@@ -29,4 +28,4 @@ module Flicks
29
28
  SnackBar::SNACKS.should include(snack)
30
29
  end
31
30
  end
32
- end
31
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flicks
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 1.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-27 00:00:00.000000000 Z
12
+ date: 2012-02-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &70225081360240 !ruby/object:Gem::Requirement
16
+ requirement: &70102011883120 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,7 +21,7 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70225081360240
24
+ version_requirements: *70102011883120
25
25
  description: ! "This is an example application used in The Pragmatic Studio's \nRuby
26
26
  Programming course, as described at\n\n http://pragmaticstudio.com\n\nThis code
27
27
  is Copyright 2012 The Pragmatic Studio. See the LICENSE file."