Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 2325a3b

Browse files
authoredMar 21, 2022
Merge pull request #876 from nobu/pages-details
Fold "Pages" list
2 parents d3137cc + f9f90ef commit 2325a3b

File tree

2 files changed

+38
-1
lines changed

2 files changed

+38
-1
lines changed
 

‎lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml‎

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,31 @@
11
<%- simple_files = @files.select { |f| f.text? } %>
2+
<%- if defined?(current) -%>
3+
<%- dir = current.full_name[%r{\A[^/]+(?=/)}] || current.page_name -%>
4+
<%- end -%>
25
<%- unless simple_files.empty? then -%>
36
<div id="fileindex-section" class="nav-section">
47
<h3>Pages</h3>
58

69
<ul class="link-list">
7-
<%- simple_files.each do |f| -%>
10+
<%- simple_files.group_by do |f| -%>
11+
<%- f.full_name[%r{\A[^/]+(?=/)}] || f.page_name -%>
12+
<%- end.each do |n, files| -%>
13+
<%- f = files.shift -%>
14+
<%- if files.empty? -%>
815
<li><a href="<%= rel_prefix %>/<%= f.path %>"><%= h f.page_name %></a>
16+
<%- next -%>
17+
<%- end -%>
18+
<li><details<% if dir == n %> open<% end %>><summary><%
19+
if n == f.page_name
20+
%><a href="<%= rel_prefix %>/<%= f.path %>"><%= h n %></a><%
21+
else
22+
%><%= h n %><% files.unshift(f)
23+
end %></summary>
24+
<ul class="link-list">
25+
<%- files.each do |f| -%>
26+
<li><a href="<%= rel_prefix %>/<%= f.path %>"><%= h f.page_name %></a>
27+
<%- end -%>
28+
</ul></details>
929
<%- end -%>
1030
</ul>
1131
</div>

‎test/rdoc/test_rdoc_generator_darkfish.rb‎

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,23 @@ def test_generate
9999
assert_match(%r[Klass/Inner\.html".*>Inner<], summary)
100100
end
101101

102+
def test_generate_page
103+
@store.add_file 'outer.rdoc', parser: RDoc::Parser::Simple
104+
@store.add_file 'outer/inner.rdoc', parser: RDoc::Parser::Simple
105+
@g.generate
106+
assert_file 'outer_rdoc.html'
107+
assert_file 'outer/inner_rdoc.html'
108+
index = File.read('index.html')
109+
re = %r[<summary><a href="\./outer_rdoc\.html">outer</a></summary>.*?</details>]m
110+
assert_match(re, index)
111+
summary = index[re]
112+
assert_match %r[<a href="\./outer/inner_rdoc.html">inner</a>], summary
113+
re = %r[<details open><summary><a href="\./outer_rdoc\.html">outer</a></summary>.*?</details>]m
114+
assert_match(re, File.read('outer_rdoc.html'))
115+
re = %r[<details open><summary><a href="\.\./outer_rdoc\.html">outer</a></summary>.*?</details>]m
116+
assert_match(re, File.read('outer/inner_rdoc.html'))
117+
end
118+
102119
def test_generate_dry_run
103120
@g.dry_run = true
104121
top_level = @store.add_file 'file.rb'

0 commit comments

Comments
 (0)
Please sign in to comment.