Sha256: c0e60c751b021d7aeda6a3680936bf4e06c5e48721b270e4cc888489846edb72
Contents?: true
Size: 662 Bytes
Versions: 7
Compression:
Stored size: 662 Bytes
Contents
module Gummi module Fields class SanitizedString < Virtus::Attribute def coerce(value) return nil if value.blank? sanitize_string_for_query(value.to_s) end def mapping { type: 'string' } end def sanitize_string_for_query(str) # Escape special characters escaped_characters = Regexp.escape('\/\\+-&|!(){}[]^~*?:') str = str.gsub(/([#{escaped_characters}])/) do |match| '\\'+match end # Escape odd quotes quote_count = str.count '"' str = str.gsub(/(.*)"(.*)/, '\1\"\3') if quote_count % 2 == 1 str end end end end
Version data entries
7 entries across 7 versions & 1 rubygems