class GearedPagination::Order

Constants

INVALID_DIRECTION

Attributes

attribute[R]
direction[R]

Public Class Methods

new(attribute:, direction: :asc) click to toggle source
# File lib/geared_pagination/order.rb, line 26
def initialize(attribute:, direction: :asc)
  @attribute = attribute.to_sym
  @direction = direction.presence_in(%i[ asc desc ]) ||
    raise(ArgumentError, INVALID_DIRECTION % [ attribute, direction ])
end
wrap(object) click to toggle source
# File lib/geared_pagination/order.rb, line 12
def wrap(object)
  case object
  when Symbol
    new attribute: object
  when Hash
    object.collect { |key, value| new attribute: key, direction: value }
  when self
    object
  else
    raise ArgumentError, "Invalid orders: expected Symbol, Hash, or GearedPagination::Order, got #{object.inspect}"
  end
end
wrap_many(objects) click to toggle source
# File lib/geared_pagination/order.rb, line 8
def wrap_many(objects)
  Array.wrap(objects).flat_map { |object| wrap object }
end

Public Instance Methods

==(other) click to toggle source
# File lib/geared_pagination/order.rb, line 40
def ==(other)
  other.is_a?(Order) && attribute == other.attribute && direction == other.direction
end
asc?() click to toggle source
# File lib/geared_pagination/order.rb, line 32
def asc?
  direction == :asc
end
desc?() click to toggle source
# File lib/geared_pagination/order.rb, line 36
def desc?
  !asc?
end