summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-11-28 07:41:19 +0000
committerdrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-11-28 07:41:19 +0000
commit45011d08e13878ba7593cc4aa3d112d689b9b95e (patch)
treef0008a69899f3fc93db8a688da57e72c82d84527
parent013521e55742a07fbc5a4b264862b2da21168b89 (diff)
* lib/rdoc/servlet.rb: Add support for serving documentation from a
subdirectory. * lib/rdoc/generator/darkfish.rb: ditto * test/rdoc/test_rdoc_servlet.rb: Test for above * test/rdoc/test_rdoc_servlet.rb: ditto git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37927 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog8
-rw-r--r--lib/rdoc/generator/darkfish.rb7
-rw-r--r--lib/rdoc/servlet.rb12
-rw-r--r--test/rdoc/test_rdoc_servlet.rb23
4 files changed, 38 insertions, 12 deletions
diff --git a/ChangeLog b/ChangeLog
index 7aaedb65a9..6cddaf0208 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+Wed Nov 28 16:41:04 2012 Eric Hodel <drbrain@segment7.net>
+
+ * lib/rdoc/servlet.rb: Add support for serving documentation from a
+ subdirectory.
+ * lib/rdoc/generator/darkfish.rb: ditto
+ * test/rdoc/test_rdoc_servlet.rb: Test for above
+ * test/rdoc/test_rdoc_servlet.rb: ditto
+
Wed Nov 28 15:37:17 2012 NARUSE, Yui <naruse@ruby-lang.org>
* configure.in: fix r37294: run only on i[3-6]86-linux.
diff --git a/lib/rdoc/generator/darkfish.rb b/lib/rdoc/generator/darkfish.rb
index bd0f617d84..b69d14855a 100644
--- a/lib/rdoc/generator/darkfish.rb
+++ b/lib/rdoc/generator/darkfish.rb
@@ -467,7 +467,7 @@ class RDoc::Generator::Darkfish
render_template template_file do |io| binding end
rescue => e
error = RDoc::Error.new \
- "error generating servlet_root: #{e.message} (#{e.class})"
+ "error generating servlet_not_found: #{e.message} (#{e.class})"
error.set_backtrace e.backtrace
raise error
@@ -484,13 +484,10 @@ class RDoc::Generator::Darkfish
debug_msg 'Rendering the servlet root page...'
- rel_prefix = rel_prefix = ''
+ rel_prefix = asset_rel_prefix = '.'
search_index_rel_prefix = rel_prefix
search_index_rel_prefix += @asset_rel_path if @file_output
- # suppress 1.9.3 warning
- asset_rel_prefix = asset_rel_prefix = ''
-
@title = 'Local RDoc Documentation'
render_template template_file do |io| binding end
diff --git a/lib/rdoc/servlet.rb b/lib/rdoc/servlet.rb
index a4aafeb252..d308288029 100644
--- a/lib/rdoc/servlet.rb
+++ b/lib/rdoc/servlet.rb
@@ -17,11 +17,13 @@ class RDoc::Servlet < WEBrick::HTTPServlet::AbstractServlet
new server, stores, @cache, *options
end
- def initialize server, stores, cache
+ def initialize server, stores, cache, mount_path = nil
super server
- @stores = stores
- @cache = cache
+ @cache = cache
+ @mount_path = mount_path
+ @stores = stores
+
@options = RDoc::Options.new
@options.op_dir = '.'
@@ -59,6 +61,8 @@ class RDoc::Servlet < WEBrick::HTTPServlet::AbstractServlet
end
def do_GET req, res
+ req.path.sub!(/^#{Regexp.escape @mount_path}/o, '') if @mount_path
+
case req.path
when '/' then
root req, res
@@ -128,7 +132,7 @@ class RDoc::Servlet < WEBrick::HTTPServlet::AbstractServlet
<title>Error - #{ERB::Util.html_escape e.class}</title>
-<link type="text/css" media="screen" href="/rdoc.css" rel="stylesheet">
+<link type="text/css" media="screen" href="#{@mouth_path}/rdoc.css" rel="stylesheet">
</head>
<body>
<h1>Error</h1>
diff --git a/test/rdoc/test_rdoc_servlet.rb b/test/rdoc/test_rdoc_servlet.rb
index e349babeb0..5c2ba4e6a7 100644
--- a/test/rdoc/test_rdoc_servlet.rb
+++ b/test/rdoc/test_rdoc_servlet.rb
@@ -1,4 +1,5 @@
require 'rdoc/test_case'
+
class TestRDocServlet < RDoc::TestCase
def setup
@@ -16,13 +17,13 @@ class TestRDocServlet < RDoc::TestCase
Gem::Specification.reset
Gem::Specification.all = [@spec]
- server = {}
- def server.mount(*) end
+ @server = {}
+ def @server.mount(*) end
@stores = {}
@cache = Hash.new { |hash, store| hash[store] = {} }
- @s = RDoc::Servlet.new server, @stores, @cache
+ @s = RDoc::Servlet.new @server, @stores, @cache
@req = WEBrick::HTTPRequest.new :Logger => nil
@res = WEBrick::HTTPResponse.new :HTTPVersion => '1.0'
@@ -126,6 +127,22 @@ class TestRDocServlet < RDoc::TestCase
assert_equal 500, @res.status
end
+ def test_do_GET_mount_path
+ @s = RDoc::Servlet.new @server, @stores, @cache, '/mount/path'
+
+ temp_dir do
+ FileUtils.touch 'rdoc.css'
+
+ @s.asset_dirs[:darkfish] = '.'
+
+ @req.path = '/mount/path/rdoc.css'
+
+ @s.do_GET @req, @res
+
+ assert_equal 'text/css', @res.content_type
+ end
+ end
+
def test_do_GET_not_modified
touch_system_cache_path
@req.header['if-modified-since'] = [(Time.now + 10).httpdate]