module Bundler::URI
def self.encode_www_form_component(str, enc=nil)
http://www.w3.org/TR/2013/CR-html5-20130806/forms.html#url-encoded-form-data.
This is an implementation of
If +enc+ is given, convert +str+ to the encoding before percent encoding.
(ASCII space) to + and converts others to %XX.
This method doesn't convert *, -, ., 0-9, A-Z, _, a-z, but does convert SP
Encodes given +str+ to URL-encoded form data.
def self.encode_www_form_component(str, enc=nil) str = str.to_s.dup if str.encoding != Encoding::ASCII_8BIT if enc && enc != Encoding::ASCII_8BIT str.encode!(Encoding::UTF_8, invalid: :replace, undef: :replace) str.encode!(enc, fallback: ->(x){"&##{x.ord};"}) end str.force_encoding(Encoding::ASCII_8BIT) end str.gsub!(/[^*\-.0-9A-Z_a-z]/, TBLENCWWWCOMP_) str.force_encoding(Encoding::US_ASCII) end