aboutsummaryrefslogtreecommitdiffstats
path: root/lib/rubygems/server.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rubygems/server.rb')
-rw-r--r--lib/rubygems/server.rb15
1 files changed, 11 insertions, 4 deletions
diff --git a/lib/rubygems/server.rb b/lib/rubygems/server.rb
index 63dfe31b35..81df0e608e 100644
--- a/lib/rubygems/server.rb
+++ b/lib/rubygems/server.rb
@@ -2,6 +2,7 @@
require 'webrick'
require 'zlib'
require 'erb'
+require 'uri'
require 'rubygems'
require 'rubygems/rdoc'
@@ -68,7 +69,7 @@ class Gem::Server
<h1>Summary</h1>
<p>There are <%=values["gem_count"]%> gems installed:</p>
<p>
- <%= values["specs"].map { |v| "<a href\"##{u v["name"]}\">#{h v["name"]}</a>" }.join ', ' %>.
+ <%= values["specs"].map { |v| "<a href=\"##{u v["name"]}\">#{h v["name"]}</a>" }.join ', ' %>.
<h1>Gems</h1>
<dl>
@@ -81,20 +82,20 @@ class Gem::Server
<b><%=h spec["name"]%> <%=h spec["version"]%></b>
<% if spec["ri_installed"] || spec["rdoc_installed"] then %>
- <a href="<%=u spec["doc_path"]%>">[rdoc]</a>
+ <a href="<%=spec["doc_path"]%>">[rdoc]</a>
<% else %>
<span title="rdoc not installed">[rdoc]</span>
<% end %>
<% if spec["homepage"] then %>
- <a href="<%=u spec["homepage"]%>" title="<%=h spec["homepage"]%>">[www]</a>
+ <a href="<%=uri_encode spec["homepage"]%>" title="<%=h spec["homepage"]%>">[www]</a>
<% else %>
<span title="no homepage available">[www]</span>
<% end %>
<% if spec["has_deps"] then %>
- depends on
- <%= spec["dependencies"].map { |v| "<a href=\"##{u v["name"]}>#{h v["name"]}</a>" }.join ', ' %>.
+ <%= spec["dependencies"].map { |v| "<a href=\"##{u v["name"]}\">#{h v["name"]}</a>" }.join ', ' %>.
<% end %>
</dt>
<dd>
@@ -455,6 +456,12 @@ div.method-source-code pre { color: #ffdead; overflow: hidden; }
end.max
end
+ def uri_encode(str)
+ str.gsub(URI::UNSAFE) do |match|
+ match.each_byte.map { |c| sprintf('%%%02X', c.ord) }.join
+ end
+ end
+
def doc_root gem_name
if have_rdoc_4_plus? then
"/doc_root/#{u gem_name}/"