Module: Caoutsearch::Search::Sanitizer

Defined in:
lib/caoutsearch/search/sanitizer.rb

Constant Summary collapse

ESCAPED_CHARACTERS =
"+-&|!(){}[]^~*?:"
ESCAPED_CHARACTERS_REGEXP =
/([+\-&|!(){}\[\]\^~*?:])/

Class Method Summary collapse

Class Method Details

.sanitize(value, characters = ESCAPED_CHARACTERS) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/caoutsearch/search/sanitizer.rb', line 10

def sanitize(value, characters = ESCAPED_CHARACTERS)
  case value
  when Array
    value.map { |v| sanitize(v) }
  when Hash
    value.each { |k, v| value[k] = sanitize(v) }
  when String
    regexp = ESCAPED_CHARACTERS_REGEXP if characters == ESCAPED_CHARACTERS
    regexp ||= Regexp.new("([#{Regexp.escape(characters)}])")

    value.gsub(regexp, '\\\\\1')
  else
    value
  end
end