class FindMostPopularBook

Attributes

library[R]
places_number[R]

Public Class Methods

new(library, places_number: 1) click to toggle source
# File lib/find_most_popular_book.rb, line 6
def initialize(library, places_number: 1)
  @library = library
  @places_number = places_number
end
perform(library, places_number: 1) click to toggle source
# File lib/find_most_popular_book.rb, line 2
def self.perform(library, places_number: 1)
  new(library, places_number: places_number).perform
end

Public Instance Methods

perform() click to toggle source
# File lib/find_most_popular_book.rb, line 11
def perform
  sorted_frequencies = sort_frequency_hash(build_frequency_hash)
  find_n_most_popular(sorted_frequencies)
end

Private Instance Methods

build_frequency_hash() click to toggle source
# File lib/find_most_popular_book.rb, line 18
def build_frequency_hash
  frequency_hash = Hash.new { |hash, key| hash[key] = 0 }
  library.orders.each { |order| frequency_hash[order.book] += 1 }
  frequency_hash
end
sort_frequency_hash(frequency_hash) click to toggle source
# File lib/find_most_popular_book.rb, line 24
def sort_frequency_hash(frequency_hash)
  frequency_hash.sort_by { |_key, value| value }.reverse
end