Sha256: 045b1f10389623fc3774b3be60b268a15a72446bb1a318c26d35a11f159f35d7
Contents?: true
Size: 1.42 KB
Versions: 6
Compression:
Stored size: 1.42 KB
Contents
# typed: ignore # Copyright (c) 2015 Sqreen. All Rights Reserved. # Please refer to our terms for more information: https://www.sqreen.com/terms.html module Sqreen module Kit module StringSanitizer class << self 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 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 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 repl_ok = "\x80".dup.force_encoding(Encoding::UTF_8) .encode(Encoding::UTF_8, invalid: :replace, undef: :replace) .valid_encoding? if repl_ok alias_method :sanitize_string, :sanitize_string_new else # for Ruby < 2 alias_method :sanitize_string, :sanitize_string_old end public :sanitize_string end end end end
Version data entries
6 entries across 6 versions & 1 rubygems