Sha256: 97c3d4be982a808797b3c196076a39d6b9377e5d4718ec9333dc2cbb441fe381

Contents?: true

Size: 1003 Bytes

Versions: 1

Compression:

Stored size: 1003 Bytes

Contents

require_relative 'priora/version'
require_relative 'priora/configuration'
require_relative 'priora/class_methods'
require_relative 'priora/collection'
require_relative 'priora/priority_builder'
require_relative 'priora/errors'

module Priora
  class << self
    def configuration
      @configuration ||= Configuration.new
    end

    def included(base_class)
      base_class.extend ClassMethods
    end

    def prioritize(collection, by: nil)
      raw_priorities = by
      priorities = priorities_from_call(collection, raw_priorities)
      Collection.new(collection).prioritize_by(priorities)
    end

    private

    def priorities_from_call(collection, raw_priorities)
      if raw_priorities
        raw_priorities.map { |raw_priority| Priora::PriorityBuilder.build(raw_priority) }
      else
        begin
          collection.map { |item| item.class.priorities }.uniq.first
        rescue StandardError => e
          raise UnsuppliedPrioritiesError
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
priora-0.1.0 lib/priora.rb