diff options
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | lib/rdoc/generator/darkfish.rb | 7 | ||||
-rw-r--r-- | lib/rdoc/servlet.rb | 12 | ||||
-rw-r--r-- | test/rdoc/test_rdoc_servlet.rb | 23 |
4 files changed, 38 insertions, 12 deletions
@@ -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] |