module SearchObject::Plugin::Sorting

Public Class Methods

included(base) click to toggle source
# File lib/search_object/plugin/sorting.rb, line 6
def self.included(base)
  base.extend ClassMethods
  base.instance_eval do
    option :sort do |scope, _|
      scope.order sort_attribute => sort_direction
    end
  end
end

Public Instance Methods

reverted_sort_direction() click to toggle source
# File lib/search_object/plugin/sorting.rb, line 40
def reverted_sort_direction
  sort_direction == 'desc' ? 'asc' : 'desc'
end
sort?(attribute) click to toggle source
# File lib/search_object/plugin/sorting.rb, line 15
def sort?(attribute)
  attribute == sort || sort.to_s.starts_with?("#{attribute} ")
end
sort_attribute() click to toggle source
# File lib/search_object/plugin/sorting.rb, line 19
def sort_attribute
  @sort_attribute ||= Helper.ensure_included sort.to_s.split(' ', 2).first, self.class.sort_attributes
end
sort_direction() click to toggle source
# File lib/search_object/plugin/sorting.rb, line 23
def sort_direction
  @sort_direction ||= Helper.ensure_included sort.to_s.split(' ', 2).last, %w[desc asc]
end
sort_direction_for(attribute) click to toggle source
# File lib/search_object/plugin/sorting.rb, line 27
def sort_direction_for(attribute)
  if sort_attribute == attribute.to_s
    reverted_sort_direction
  else
    'desc'
  end
end
sort_params_for(attribute, options = {}) click to toggle source
# File lib/search_object/plugin/sorting.rb, line 35
def sort_params_for(attribute, options = {})
  options['sort'] = "#{attribute} #{sort_direction_for(attribute)}"
  params options
end