module Seek::Sorting

Attributes

default_sort_by[W]
default_sort_direction[W]
sort_by[W]
sort_direction[W]
valid_sort_bys[W]

Public Instance Methods

default_sort_by() click to toggle source

Returns a String or nil.

# File lib/seek/sorting.rb, line 40
def default_sort_by
  result = @default_sort_by.to_s.downcase
  valid_sort_bys.include?(result) ? result : valid_sort_bys.first
end
default_sort_direction() click to toggle source
# File lib/seek/sorting.rb, line 45
def default_sort_direction
  result = @default_sort_direction.to_s.downcase
  valid_sort_directions.include?(result) ? result : valid_sort_directions.first
end
order() click to toggle source

Useful for queries that require the format “first_name desc” (such as SQL or lucene)

Returns a String or nil

# File lib/seek/sorting.rb, line 29
def order
  return if sort_by.to_s.empty?
  [sort_by, sort_direction].join(' ')
end
sort_by() click to toggle source

Returns a String or nil.

# File lib/seek/sorting.rb, line 14
def sort_by
  result = @sort_by.to_s.downcase
  return result if !result.empty? && (valid_sort_bys.empty? || valid_sort_bys.include?(result))
  default_sort_by
end
sort_direction() click to toggle source
# File lib/seek/sorting.rb, line 20
def sort_direction
  result = @sort_direction.to_s.downcase
  valid_sort_directions.include?(result) ? result : default_sort_direction
end
sortable?() click to toggle source

Returns true if sort_by and sort_direction are present.

# File lib/seek/sorting.rb, line 8
def sortable?
  !!order
end
valid_sort_bys() click to toggle source
# File lib/seek/sorting.rb, line 34
def valid_sort_bys
  Array(@valid_sort_bys).map(&:to_s).map(&:downcase)
end

Private Instance Methods

valid_sort_directions() click to toggle source
# File lib/seek/sorting.rb, line 52
def valid_sort_directions
  %w{ asc desc }
end