class Priora::Collection
Public Class Methods
new(collection)
click to toggle source
# File lib/priora/collection.rb, line 3 def initialize(collection) @collection = collection @comparison_ready_objects = {} end
Public Instance Methods
prioritize_by(priorities)
click to toggle source
# File lib/priora/collection.rb, line 8 def prioritize_by(priorities) sorted_collection_by(priorities).reverse end
Private Instance Methods
comparison_ready(object, priorities)
click to toggle source
# File lib/priora/collection.rb, line 20 def comparison_ready(object, priorities) @comparison_ready_objects[[object, priorities]] ||= begin priorities.map do |priority| priority.comparable_value_from(object) end end end
sorted_collection_by(priorities)
click to toggle source
# File lib/priora/collection.rb, line 14 def sorted_collection_by(priorities) @collection.sort do |object_a, object_b| comparison_ready(object_a, priorities) <=> comparison_ready(object_b, priorities) end end