module Axiom::Relation::Operation::Sorted::Methods

Public Instance Methods

sort() click to toggle source

Return a sorted relation

@example

sorted = relation.sort

@return [Sorted]

@api public

# File lib/axiom/relation/operation/sorted.rb, line 162
def sort
  Sorted.new(self, nil)
end
sort_by(*args, &block) click to toggle source

Return a sorted relation

@example with a block

sorted = relation.sort_by { |r| [r.a.desc, r.b] }

@example with directions

sorted = relation.sort_by(directions)

@param [Array] args

optional arguments

@yield [relation]

optional block to evaluate for directions

@yieldparam [Relation] relation

@yieldreturn [DirectionSet, Array<Direction>, Header]

@return [Sorted]

@api public

# File lib/axiom/relation/operation/sorted.rb, line 150
def sort_by(*args, &block)
  Sorted.new(self, coerce_to_directions(*args, &block))
end

Private Instance Methods

coerce_to_directions(directions = Undefined, &block) click to toggle source

Coerce the arguments and block into directions

@param [DirectionSet, Array<Direction>, Header] directions

optional directions

@yield [relation]

optional block to evaluate for directions

@yieldparam [Relation] relation

@yieldreturn [DirectionSet, Array<Direction>, Header]

@return [DirectionSet, Array<Direction>, Header]

@api private

# File lib/axiom/relation/operation/sorted.rb, line 183
def coerce_to_directions(directions = Undefined, &block)
  if directions.equal?(Undefined)
    header.context(&block).yield
  else
    directions
  end
end