Module: DynamicSunspotSearch::Translator

Defined in:
lib/dynamic_sunspot_search/translator.rb,
lib/dynamic_sunspot_search/translator/all.rb,
lib/dynamic_sunspot_search/translator/any.rb,
lib/dynamic_sunspot_search/translator/with.rb,
lib/dynamic_sunspot_search/translator/facet.rb,
lib/dynamic_sunspot_search/translator/scope.rb,
lib/dynamic_sunspot_search/translator/all_of.rb,
lib/dynamic_sunspot_search/translator/any_of.rb,
lib/dynamic_sunspot_search/translator/without.rb,
lib/dynamic_sunspot_search/translator/fulltext.rb,
lib/dynamic_sunspot_search/translator/order_by.rb,
lib/dynamic_sunspot_search/translator/paginate.rb,
lib/dynamic_sunspot_search/translator/field_list.rb,
lib/dynamic_sunspot_search/translator/text_search.rb,
lib/dynamic_sunspot_search/translator/order_by_function.rb

Defined Under Namespace

Modules: All, AllOf, Any, AnyOf, Facet, FieldList, Fulltext, OrderBy, OrderByFunction, Paginate, Scope, TextSearch, With, Without

Class Method Summary collapse

Class Method Details

.translate(query_object, query_hash) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/dynamic_sunspot_search/translator.rb', line 11

def self.translate(query_object, query_hash)
  query = query_hash.deep_dup.deep_symbolize_keys
  query_object.tap do |search|
    TextSearch.apply(search, query.extract!(:fulltext, :all, :any))
    Scope.apply(search, query.extract!(:with, :without, :any_of, :all_of, :scope))
    FieldList.apply(search, query.delete(:field_list))
    OrderBy.apply(search, query.delete(:order_by))
    OrderByFunction.apply(search, query.delete(:order_by_function))
    Paginate.apply(search, query.delete(:paginate))
    Facet.apply(search, query.delete(:facet))
    raise ArgumentError.new("Unknown keys detected: #{options.keys}") unless query.blank?
  end
end