Sha256: f4378011fd2e84eb7d2e1bbb0eb9b4d651e53b413adec5de125997d151cf409d

Contents?: true

Size: 1.24 KB

Versions: 16

Compression:

Stored size: 1.24 KB

Contents

# frozen_string_literal: true

class ThinkingSphinx::Masks::ScopesMask
  def initialize(search)
    @search = search
  end

  def can_handle?(method)
    public_methods(false).include?(method) || can_apply_scope?(method)
  end

  def facets(query = nil, options = {})
    search = ThinkingSphinx.facets query, options
    ThinkingSphinx::Search::Merger.new(search).merge!(
      @search.query, @search.options
    )
  end

  def search(query = nil, options = {})
    query, options = nil, query if query.is_a?(Hash)
    ThinkingSphinx::Search::Merger.new(@search).merge! query, options
  end

  def search_for_ids(query = nil, options = {})
    query, options = nil, query if query.is_a?(Hash)
    search query, options.merge(:ids_only => true)
  end

  private

  def apply_scope(scope, *args)
    query, options = sphinx_scopes[scope].call(*args)
    search query, options
  end

  def can_apply_scope?(scope)
    @search.options[:classes].present?    &&
    @search.options[:classes].length == 1 &&
    @search.options[:classes].first.respond_to?(:sphinx_scopes) &&
    sphinx_scopes[scope].present?
  end

  def method_missing(method, *args, &block)
    apply_scope method, *args
  end

  def sphinx_scopes
    @search.options[:classes].first.sphinx_scopes
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
thinking-sphinx-5.5.1 lib/thinking_sphinx/masks/scopes_mask.rb
thinking-sphinx-5.5.0 lib/thinking_sphinx/masks/scopes_mask.rb
thinking-sphinx-5.4.0 lib/thinking_sphinx/masks/scopes_mask.rb
thinking-sphinx-5.3.0 lib/thinking_sphinx/masks/scopes_mask.rb
thinking-sphinx-5.2.1 lib/thinking_sphinx/masks/scopes_mask.rb
thinking-sphinx-5.2.0 lib/thinking_sphinx/masks/scopes_mask.rb
thinking-sphinx-5.1.0 lib/thinking_sphinx/masks/scopes_mask.rb
thinking-sphinx-5.0.0 lib/thinking_sphinx/masks/scopes_mask.rb
thinking-sphinx-4.4.1 lib/thinking_sphinx/masks/scopes_mask.rb
thinking-sphinx-4.4.0 lib/thinking_sphinx/masks/scopes_mask.rb
thinking-sphinx-4.3.2 lib/thinking_sphinx/masks/scopes_mask.rb
thinking-sphinx-4.3.1 lib/thinking_sphinx/masks/scopes_mask.rb
thinking-sphinx-4.3.0 lib/thinking_sphinx/masks/scopes_mask.rb
thinking-sphinx-4.2.0 lib/thinking_sphinx/masks/scopes_mask.rb
thinking-sphinx-4.1.0 lib/thinking_sphinx/masks/scopes_mask.rb
thinking-sphinx-4.0.0 lib/thinking_sphinx/masks/scopes_mask.rb