class Arelastic::Sorts::Field

Attributes

field[R]
options[R]

Public Class Methods

new(field, extra_options = nil) click to toggle source

Field.new('price').as_elastic

=> 'price'

Field.new('price' => 'asc').as_elastic

=> {'price' => 'asc'}

Field.new('price', 'order' => 'asc').as_elastic

=> {'price' => {'order', 'asc'}}

Field.new({'price' => 'asc'}, {'missing' => '_last'}).as_elastic

=> {'price' => {'order' => 'asc', 'missing' => '_last'}}
# File lib/arelastic/sorts/field.rb, line 18
def initialize(field, extra_options = nil)
  if field.is_a?(Hash)
    @field, @options = field.first.to_a
    if extra_options
      @options = (@options.is_a?(Hash) ? @options : {'order' => @options}).update(extra_options)
    end
  else
    @field = field
    @options = extra_options
  end
end

Public Instance Methods

as_elastic() click to toggle source
# File lib/arelastic/sorts/field.rb, line 44
def as_elastic
  if options
    {field => options}
  else
    field
  end
end
ordering() click to toggle source
# File lib/arelastic/sorts/field.rb, line 40
def ordering
  (options.is_a?(Hash) ? options['order'] : options).to_s
end
reverse() click to toggle source
# File lib/arelastic/sorts/field.rb, line 30
def reverse
  reverse_order = ordering == 'desc' ? 'asc' : 'desc'

  if options.is_a?(Hash)
    Arelastic::Sorts::Field.new(field, options.merge('order' => reverse_order))
  else
    Arelastic::Sorts::Field.new(field => reverse_order)
  end
end