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