Class: Top100Movies::Movie

Inherits:
Object
  • Object
show all
Defined in:
lib/top_100_movies/movie.rb

Constant Summary collapse

@@all =
[]

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(rank = nil, name = nil, score = nil, url = nil) ⇒ Movie

Returns a new instance of Movie.



7
8
9
10
11
12
13
14
15
16
# File 'lib/top_100_movies/movie.rb', line 7

def initialize(rank=nil, name=nil, score=nil, url=nil)
  @rank = rank
  @name = name
  @score = score
  @url = url
  @disc_release_date = "N/A"
  @box_office = "N/A"
  @writers = "N/A"
  @@all << self
end

Instance Attribute Details

#box_officeObject

Returns the value of attribute box_office.



2
3
4
# File 'lib/top_100_movies/movie.rb', line 2

def box_office
  @box_office
end

#directorsObject

Returns the value of attribute directors.



2
3
4
# File 'lib/top_100_movies/movie.rb', line 2

def directors
  @directors
end

#disc_release_dateObject

Returns the value of attribute disc_release_date.



2
3
4
# File 'lib/top_100_movies/movie.rb', line 2

def disc_release_date
  @disc_release_date
end

#genresObject

Returns the value of attribute genres.



2
3
4
# File 'lib/top_100_movies/movie.rb', line 2

def genres
  @genres
end

#nameObject

Returns the value of attribute name.



2
3
4
# File 'lib/top_100_movies/movie.rb', line 2

def name
  @name
end

#rankObject

Returns the value of attribute rank.



2
3
4
# File 'lib/top_100_movies/movie.rb', line 2

def rank
  @rank
end

#ratingObject

Returns the value of attribute rating.



2
3
4
# File 'lib/top_100_movies/movie.rb', line 2

def rating
  @rating
end

#release_dateObject

Returns the value of attribute release_date.



2
3
4
# File 'lib/top_100_movies/movie.rb', line 2

def release_date
  @release_date
end

#runtimeObject

Returns the value of attribute runtime.



2
3
4
# File 'lib/top_100_movies/movie.rb', line 2

def runtime
  @runtime
end

#scoreObject

Returns the value of attribute score.



2
3
4
# File 'lib/top_100_movies/movie.rb', line 2

def score
  @score
end

#studioObject

Returns the value of attribute studio.



2
3
4
# File 'lib/top_100_movies/movie.rb', line 2

def studio
  @studio
end

#synopsisObject

Returns the value of attribute synopsis.



2
3
4
# File 'lib/top_100_movies/movie.rb', line 2

def synopsis
  @synopsis
end

#urlObject

Returns the value of attribute url.



2
3
4
# File 'lib/top_100_movies/movie.rb', line 2

def url
  @url
end

#writersObject

Returns the value of attribute writers.



2
3
4
# File 'lib/top_100_movies/movie.rb', line 2

def writers
  @writers
end

Class Method Details

.allObject



27
28
29
# File 'lib/top_100_movies/movie.rb', line 27

def self.all
  @@all.reject { |c| c.name.empty? }
end

.find(rank) ⇒ Object



31
32
33
34
35
36
37
38
# File 'lib/top_100_movies/movie.rb', line 31

def self.find(rank)
  if @@all[rank-1].synopsis == nil
    Top100Movies::Scraper.scrape_details(@@all[rank-1])
    @@all[rank-1]
  else
    @@all[rank-1]
  end
end

.new_from_index(index) ⇒ Object



18
19
20
21
22
23
24
25
# File 'lib/top_100_movies/movie.rb', line 18

def self.new_from_index(index)
  self.new(
    index.search(".bold").text.tr('\.',''),
    index.search(".unstyled").text.strip,
    index.search(".tMeterScore").text.strip,
    Top100Movies::Scraper.scrape_url(index)
  )
end


40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/top_100_movies/movie.rb', line 40

def self.print_movie(movie)
  puts ""
  puts "#{movie.rank}. #{movie.name}"
  puts ""
  puts "Rotten Tomatoes Score: #{movie.score}"
  puts ""
  puts "Synopsis"
  puts "#{movie.synopsis}"
  puts ""

  printf "%18s %-2s \n", "Rating:", movie.rating
  printf "%18s %-2s \n", "Genre:", movie.genres.join(", ")
  printf "%18s %-2s \n", "Directors:", movie.directors
  printf "%18s %-2s \n", "Writers:", movie.writers
  printf "%18s %-2s \n", "In Theaters:", movie.release_date[0..11]
  printf "%18s %-2s \n", "On Disc/Streaming:", movie.disc_release_date
  printf "%18s %-2s \n", "Box Office:", movie.box_office
  printf "%18s %-2s \n", "Runtime:", movie.runtime
  printf "%18s %-2s \n", "Studio:", movie.studio
end