class Mincer::Processors::PgSearch::Sanitizer
Constants
- AVAILABLE_SANITIZERS
Attributes
sanitizers[RW]
term[RW]
Public Class Methods
coalesce(term, val = '')
click to toggle source
# File lib/mincer/processors/pg_search/sanitizer.rb, line 54 def self.coalesce(term, val = '') if Mincer.pg_extension_installed?(:unaccent) Arel::Nodes::NamedFunction.new('coalesce', [quote(term), quote(val)]) else term end end
ignore_accent(term)
click to toggle source
# File lib/mincer/processors/pg_search/sanitizer.rb, line 50 def self.ignore_accent(term) Arel::Nodes::NamedFunction.new('unaccent', [quote(term)]) end
ignore_case(term)
click to toggle source
# File lib/mincer/processors/pg_search/sanitizer.rb, line 46 def self.ignore_case(term) Arel::Nodes::NamedFunction.new('lower', [quote(term)]) end
new(term, *sanitizers)
click to toggle source
# File lib/mincer/processors/pg_search/sanitizer.rb, line 8 def initialize(term, *sanitizers) @term, @sanitizers = term, AVAILABLE_SANITIZERS & Array.wrap(sanitizers).flatten end
quote(string)
click to toggle source
# File lib/mincer/processors/pg_search/sanitizer.rb, line 62 def self.quote(string) if defined?(Arel::Nodes::Quoted) && !string.is_a?(Arel::Nodes::Quoted) && !string.is_a?(Arel::Nodes::NamedFunction) Arel::Nodes::Quoted.new(string) else string end end
sanitize_column(term, *sanitizers)
click to toggle source
# File lib/mincer/processors/pg_search/sanitizer.rb, line 34 def self.sanitize_column(term, *sanitizers) new(term, *sanitizers).sanitize_column end
sanitize_string(term, *sanitizers)
click to toggle source
# File lib/mincer/processors/pg_search/sanitizer.rb, line 38 def self.sanitize_string(term, *sanitizers) new(term, *sanitizers).sanitize_string end
sanitize_string_quoted(term, *sanitizers)
click to toggle source
# File lib/mincer/processors/pg_search/sanitizer.rb, line 42 def self.sanitize_string_quoted(term, *sanitizers) new(term, *sanitizers).sanitize_string(quote: true) end
Public Instance Methods
sanitize(node)
click to toggle source
# File lib/mincer/processors/pg_search/sanitizer.rb, line 27 def sanitize(node) sanitizers.inject(node) do |query, sanitizer| query = self.class.send(sanitizer, query) query end end
sanitize_column()
click to toggle source
# File lib/mincer/processors/pg_search/sanitizer.rb, line 12 def sanitize_column @sanitized_column ||= sanitize(Arel.sql(@term)) end
sanitize_string(options = {})
click to toggle source
# File lib/mincer/processors/pg_search/sanitizer.rb, line 16 def sanitize_string(options = {}) if sanitizers.empty? if defined?(Arel::Nodes::Quoted) return self.class.quote(@term) elsif options[:quote] return Mincer.connection.quote(@term) end end @sanitized_string ||= sanitize(@term) end