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
find_n_most_popular(sorted_frequencies)
click to toggle source
# File lib/find_most_popular_book.rb, line 28 def find_n_most_popular(sorted_frequencies) (0...places_number).map do |position| sorted_frequencies[position] end 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