class Elasticband::Sort
Attributes
sort_by[R]
Public Class Methods
new(sort_by)
click to toggle source
# File lib/elasticband/sort.rb, line 31 def initialize(sort_by) @sort_by = sort_by end
parse(options)
click to toggle source
Parses sort option to a Elasticsearch syntax.
#### Options
-
‘sort:` List of sort params.
#### Examples “‘ Sort.parse
(sort: { name: :desc })
> { sort: [{ name: :desc }] }¶ ↑
Sort.parse
(sort: [{ name: :desc }, { created_at: :asc }])
> { sort: [{ name: :desc }, { created_at: :asc }] }¶ ↑
Sort.parse
(sort: ‘-name,+created_at,id’)
> { sort: [{ name: :desc }, { created_at: :asc }, { id: :asc }] }¶ ↑
Sort.parse
(sort: [‘-name’, ‘+created_at’, ‘id’])
> { sort: [{ name: :desc }, { created_at: :asc }, { id: :asc }] }¶ ↑
“‘
# File lib/elasticband/sort.rb, line 24 def parse(options) new(options[:sort]).parse end
Public Instance Methods
parse()
click to toggle source
# File lib/elasticband/sort.rb, line 35 def parse return if sort_by.blank? return [sort_by] if sort_by.is_a?(Hash) @sort_by = sort_by.split(','.freeze) if sort_by.is_a?(String) sort_by.map { |param| parse_param(param) } end
Private Instance Methods
direction(param)
click to toggle source
# File lib/elasticband/sort.rb, line 55 def direction(param) param.start_with?('-'.freeze) ? :desc : :asc end
field(param)
click to toggle source
# File lib/elasticband/sort.rb, line 51 def field(param) param.start_with?('-'.freeze) || param.start_with?('+'.freeze) ? param[1..-1] : param end
parse_param(param)
click to toggle source
# File lib/elasticband/sort.rb, line 45 def parse_param(param) return param if param.is_a?(Hash) { field(param).to_sym => direction(param) } end