diff --git a/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml b/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml
index 8ec83abda2..f3b6cf3a05 100644
--- a/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml
+++ b/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml
@@ -4,8 +4,25 @@
Pages
- <%- simple_files.each do |f| -%>
+ <%- simple_files.group_by do |f| -%>
+ <%- f.full_name[%r{\A[^/]+(?=/)}] || f.page_name -%>
+ <%- end.each do |n, files| -%>
+ <%- f = files.shift -%>
+ <%- if files.empty? -%>
- <%= h f.page_name %>
+ <%- next -%>
+ <%- end -%>
+
<%
+ if n == f.page_name
+ %><%= h n %><%
+ else
+ %><%= h n %><% files.unshift(f)
+ end %>
+
<%- end -%>
diff --git a/test/rdoc/test_rdoc_generator_darkfish.rb b/test/rdoc/test_rdoc_generator_darkfish.rb
index 5ab4cffd1a..90b934dc63 100644
--- a/test/rdoc/test_rdoc_generator_darkfish.rb
+++ b/test/rdoc/test_rdoc_generator_darkfish.rb
@@ -105,6 +105,11 @@ class TestRDocGeneratorDarkfish < RDoc::TestCase
@g.generate
assert_file 'outer_rdoc.html'
assert_file 'outer/inner_rdoc.html'
+ index = File.read('index.html')
+ re = %r[outer.*?]m
+ assert_match(re, index)
+ summary = index[re]
+ assert_match %r[inner], summary
end
def test_generate_dry_run