diff options
Diffstat (limited to 'ruby_2_2/lib/rubygems/uri_formatter.rb')
-rw-r--r-- | ruby_2_2/lib/rubygems/uri_formatter.rb | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/ruby_2_2/lib/rubygems/uri_formatter.rb b/ruby_2_2/lib/rubygems/uri_formatter.rb new file mode 100644 index 0000000000..68aacc6369 --- /dev/null +++ b/ruby_2_2/lib/rubygems/uri_formatter.rb @@ -0,0 +1,49 @@ +require 'cgi' +require 'uri' + +## +# The UriFormatter handles URIs from user-input and escaping. +# +# uf = Gem::UriFormatter.new 'example.com' +# +# p uf.normalize #=> 'http://example.com' + +class Gem::UriFormatter + + ## + # The URI to be formatted. + + attr_reader :uri + + ## + # Creates a new URI formatter for +uri+. + + def initialize uri + @uri = uri + end + + ## + # Escapes the #uri for use as a CGI parameter + + def escape + return unless @uri + CGI.escape @uri + end + + ## + # Normalize the URI by adding "http://" if it is missing. + + def normalize + (@uri =~ /^(https?|ftp|file):/i) ? @uri : "http://#{@uri}" + end + + ## + # Unescapes the #uri which came from a CGI parameter + + def unescape + return unless @uri + CGI.unescape @uri + end + +end + |