class TalentScout::OrderDefinition

@!visibility private

Constants

DEFAULT_ASC_SUFFIX
DEFAULT_DESC_SUFFIX

Attributes

asc_choice[R]
asc_value[R]
desc_choice[R]
desc_value[R]
name[R]

Public Class Methods

desc(columns) click to toggle source
# File lib/talent_scout/order_definition.rb, line 30
def self.desc(columns)
  columns.map do |column|
    column.match?(/ (?:ASC|DESC)$/i) ? column : "#{column} DESC"
  end
end
new(name, columns, asc_suffix: DEFAULT_ASC_SUFFIX, desc_suffix: DEFAULT_DESC_SUFFIX) click to toggle source
# File lib/talent_scout/order_definition.rb, line 10
def initialize(name, columns, asc_suffix: DEFAULT_ASC_SUFFIX, desc_suffix: DEFAULT_DESC_SUFFIX)
  columns = Array(columns || name)
  @name = name.to_s
  @asc_value = Arel.sql(columns.join(", "))
  @desc_value = Arel.sql(self.class.desc(columns).join(", "))
  @asc_choice = "#{@name}#{asc_suffix}"
  @desc_choice = @desc_value == @asc_value ? @asc_choice : "#{@name}#{desc_suffix}"
end

Public Instance Methods

choice_for_direction(direction) click to toggle source
# File lib/talent_scout/order_definition.rb, line 19
def choice_for_direction(direction)
  case direction
  when :asc, true, /\Aasc\Z/i
    asc_choice
  when :desc, /\Adesc\Z/i
    desc_choice
  else
    raise ArgumentError, "Invalid direction #{direction.inspect}"
  end
end