Class: Mincer::PgSearch::SearchEngines::Base

Inherits:
Object
  • Object
show all
Includes:
Mincer::Processors::Helpers
Defined in:
lib/mincer/processors/pg_search/search_engines/base.rb

Direct Known Subclasses

Array, Fulltext, Trigram

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Mincer::Processors::Helpers

#join_expressions

Constructor Details

#initialize(args, search_statements) ⇒ Base

Returns a new instance of Base.



8
9
10
# File 'lib/mincer/processors/pg_search/search_engines/base.rb', line 8

def initialize(args, search_statements)
  @args, @search_statements = ::ActiveSupport::HashWithIndifferentAccess.new(args), search_statements
end

Instance Attribute Details

#argsObject (readonly)

Returns the value of attribute args.



6
7
8
# File 'lib/mincer/processors/pg_search/search_engines/base.rb', line 6

def args
  @args
end

#search_statementsObject (readonly)

Returns the value of attribute search_statements.



6
7
8
# File 'lib/mincer/processors/pg_search/search_engines/base.rb', line 6

def search_statements
  @search_statements
end

Instance Method Details

#arel_group(sql_string = nil) ⇒ Object



12
13
14
15
16
# File 'lib/mincer/processors/pg_search/search_engines/base.rb', line 12

def arel_group(sql_string = nil)
  sql_string = yield if block_given?
  arel_query = sql_string.is_a?(String) ? Arel.sql(sql_string) : sql_string
  Arel::Nodes::Grouping.new(arel_query)
end

#engine_symObject

Redefine this method in subclass if your engine name does not match class



44
45
46
# File 'lib/mincer/processors/pg_search/search_engines/base.rb', line 44

def engine_sym
  @engine_sym ||= self.class.name.to_s.demodulize.underscore.to_sym
end

#prepared_search_statementsObject



36
37
38
39
40
41
# File 'lib/mincer/processors/pg_search/search_engines/base.rb', line 36

def prepared_search_statements
  @prepared_search_statements ||= search_engine_statements.map do |search_statement|
    search_statement.pattern = args[search_statement.param_name]
    search_statement.pattern.present? ? search_statement : nil
  end.compact
end

#rankObject



48
49
50
51
# File 'lib/mincer/processors/pg_search/search_engines/base.rb', line 48

def rank
  #Must be implemented in subclasses
  nil
end

#sanitize_column(term, sanitizers) ⇒ Object



18
19
20
# File 'lib/mincer/processors/pg_search/search_engines/base.rb', line 18

def sanitize_column(term, sanitizers)
  ::Mincer::Processors::PgSearch::Sanitizer.sanitize_column(term, sanitizers)
end

#sanitize_string(term, sanitizers) ⇒ Object



22
23
24
# File 'lib/mincer/processors/pg_search/search_engines/base.rb', line 22

def sanitize_string(term, sanitizers)
  ::Mincer::Processors::PgSearch::Sanitizer.sanitize_string(term, sanitizers)
end

#sanitize_string_quoted(term, sanitizers) ⇒ Object



26
27
28
# File 'lib/mincer/processors/pg_search/search_engines/base.rb', line 26

def sanitize_string_quoted(term, sanitizers)
  ::Mincer::Processors::PgSearch::Sanitizer.sanitize_string_quoted(term, sanitizers)
end

#search_engine_statementsObject



30
31
32
33
34
# File 'lib/mincer/processors/pg_search/search_engines/base.rb', line 30

def search_engine_statements
  @search_engine_statements ||= self.search_statements.select do |search_statement|
    search_statement.options[:engines].try(:include?, engine_sym)
  end
end