class Priora::PriorityBuilder

Public Class Methods

build(raw_priority) click to toggle source
# File lib/priora/priority_builder.rb, line 6
def build(raw_priority)
  case raw_priority
  when Symbol
    Priority.new(attribute: raw_priority)
  when Array
    priority_hash = raw_priority.reduce(:merge)
    build_from_hash(priority_hash)
  when Hash
    build_from_hash(raw_priority)
  else
    raise InvalidPrioritySyntaxError
  end
rescue StandardError
  raise InvalidPrioritySyntaxError
end

Private Class Methods

build_from_hash(priority_hash) click to toggle source
# File lib/priora/priority_builder.rb, line 24
def build_from_hash(priority_hash)
  unless priority_hash.one?
    raise InvalidPrioritySyntaxError, 'directional priority declaration takes only a single priority at a time!'
  end

  attribute = priority_hash.keys.first
  direction = priority_hash[attribute]

  Priority.new(attribute: attribute, direction: direction)
end