Sha256: 4bb75d9be24e52fa92aeb767aaa226a186cdff3f01c9c5a6c8cf79e956346d51

Contents?: true

Size: 685 Bytes

Versions: 23

Compression:

Stored size: 685 Bytes

Contents

require "uri"
str = "\xE6\x97\xA5\xE6\x9C\xAC\xE8\xAA\x9E" # Ni-ho-nn-go in UTF-8, means Japanese.
parser = URI::Parser.new

unless str == parser.unescape(parser.escape(str))
  URI::Parser.class_eval do
    remove_method :unescape
    def unescape(str, escaped = /%[a-fA-F\d]{2}/)
      # TODO: Are we actually sure that ASCII == UTF-8?
      # YK: My initial experiments say yes, but let's be sure please
      enc = str.encoding
      enc = Encoding::UTF_8 if enc == Encoding::US_ASCII
      str.gsub(escaped) { |match| [match[1, 2].hex].pack("C") }.force_encoding(enc)
    end
  end
end

module URI
  class << self
    def parser
      @parser ||= URI::Parser.new
    end
  end
end

Version data entries

23 entries across 23 versions & 3 rubygems

Version Path
activesupport-5.1.7 lib/active_support/core_ext/uri.rb
activesupport-5.1.7.rc1 lib/active_support/core_ext/uri.rb
activesupport-5.1.6.2 lib/active_support/core_ext/uri.rb
activesupport-5.1.6.1 lib/active_support/core_ext/uri.rb
activesupport-5.1.6 lib/active_support/core_ext/uri.rb
tdiary-5.0.8 vendor/bundle/gems/activesupport-5.1.5/lib/active_support/core_ext/uri.rb
activesupport-5.1.5 lib/active_support/core_ext/uri.rb
activesupport-5.1.5.rc1 lib/active_support/core_ext/uri.rb
pract6-0.1.0 .gem/ruby/2.3.0/gems/activesupport-5.1.4/lib/active_support/core_ext/uri.rb
activesupport-5.1.4 lib/active_support/core_ext/uri.rb
activesupport-5.1.4.rc1 lib/active_support/core_ext/uri.rb
activesupport-5.1.3 lib/active_support/core_ext/uri.rb
activesupport-5.1.3.rc3 lib/active_support/core_ext/uri.rb
activesupport-5.1.3.rc2 lib/active_support/core_ext/uri.rb
activesupport-5.1.3.rc1 lib/active_support/core_ext/uri.rb
tdiary-5.0.5 vendor/bundle/gems/activesupport-5.1.2/lib/active_support/core_ext/uri.rb
activesupport-5.1.2 lib/active_support/core_ext/uri.rb
activesupport-5.1.2.rc1 lib/active_support/core_ext/uri.rb
activesupport-5.1.1 lib/active_support/core_ext/uri.rb
activesupport-5.1.0 lib/active_support/core_ext/uri.rb