module Sqreen::Kit::StringSanitizer

Public Class Methods

sanitize(obj) click to toggle source
# File lib/sqreen/kit/string_sanitizer.rb, line 10
def sanitize(obj)
  case obj
  when String
    sanitize_string(obj)
  when Array
    obj.map { |e| sanitize(e) }
  when Hash
    obj.each_with_object({}) { |(k, v), h| h[sanitize(k)] = sanitize(v) }
  else
    obj
  end
end

Private Class Methods

sanitize_string_new(s) click to toggle source
# File lib/sqreen/kit/string_sanitizer.rb, line 25
def sanitize_string_new(s)
  return s if s.encoding == Encoding::UTF_8 && s.valid_encoding?

  s.encode(Encoding::UTF_8, invalid: :replace, undef: :replace)
end
sanitize_string_old(s) click to toggle source
# File lib/sqreen/kit/string_sanitizer.rb, line 31
def sanitize_string_old(s)
  return s if s.encoding == Encoding::UTF_8 && s.valid_encoding?

  s.encode('utf-16be', invalid: :replace, undef: :replace)
   .encode(Encoding::UTF_8, invalid: :replace, undef: :replace)
end