diff options
Diffstat (limited to 'lib/rubygems/uri_formatter.rb')
-rw-r--r-- | lib/rubygems/uri_formatter.rb | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/lib/rubygems/uri_formatter.rb b/lib/rubygems/uri_formatter.rb new file mode 100644 index 0000000000..deac3bfe75 --- /dev/null +++ b/lib/rubygems/uri_formatter.rb @@ -0,0 +1,39 @@ +require 'uri' + +class Gem::UriFormatter + attr_reader :uri + + def initialize uri + @uri = uri + end + + def escape + return unless @uri + escaper.escape @uri + end + + ## + # Normalize the URI by adding "http://" if it is missing. + + def normalize + (@uri =~ /^(https?|ftp|file):/i) ? @uri : "http://#{@uri}" + end + + def unescape + return unless @uri + escaper.unescape @uri + end + + private + + def escaper + @uri_parser ||= + begin + URI::Parser.new + rescue NameError + URI + end + end + +end + |