Skip to content

Commit 180771e

Browse files
committed
Extract sidebar pages logic into helper methods
1 parent f4fffbe commit 180771e

File tree

2 files changed

+38
-25
lines changed

2 files changed

+38
-25
lines changed

lib/rdoc/generator/darkfish.rb

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -800,6 +800,43 @@ def group_classes_by_namespace_for_sidebar(classes)
800800
grouped_classes
801801
end
802802

803+
def generate_page_link(file, rel_prefix)
804+
%(<a href="#{rel_prefix}/#{h file.path}">#{h file.page_name}</a>)
805+
end
806+
807+
def generate_pages_index_content(page_files, rel_prefix, current)
808+
return '' if page_files.empty?
809+
810+
dir = current&.full_name&.[](/\A[^\/]+(?=\/)/) || current&.page_name
811+
812+
content = +'<ul class="link-list">'
813+
page_files.group_by do |f|
814+
f.full_name[/\A[^\/]+(?=\/)/] || f.page_name
815+
end.each do |n, grouped_files|
816+
f = grouped_files.shift
817+
if grouped_files.empty?
818+
content << %(<li>#{generate_page_link(f, rel_prefix)}</li>)
819+
next
820+
end
821+
822+
content << %(<li><details#{dir == n ? ' open' : ''}><summary>)
823+
if n == f.page_name
824+
content << generate_page_link(f, rel_prefix)
825+
else
826+
content << h(n)
827+
grouped_files.unshift(f)
828+
end
829+
content << '</summary><ul class="link-list">'
830+
831+
grouped_files.each do |f|
832+
content << %(<li>#{generate_page_link(f, rel_prefix)}</li>)
833+
end
834+
835+
content << '</ul></details>'
836+
end
837+
content << '</ul>'
838+
end
839+
803840
private
804841

805842
def nesting_namespaces_to_class_modules klass
Lines changed: 1 addition & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,7 @@
1-
<%- if defined?(current) -%>
2-
<%- dir = current.full_name[%r{\A[^/]+(?=/)}] || current.page_name -%>
3-
<%- end -%>
41
<%- if @page_files.any? -%>
52
<div id="fileindex-section" class="nav-section">
63
<h3>Pages</h3>
74

8-
<ul class="link-list">
9-
<%- @page_files.group_by do |f| -%>
10-
<%- f.full_name[%r{\A[^/]+(?=/)}] || f.page_name -%>
11-
<%- end.each do |n, files| -%>
12-
<%- f = files.shift -%>
13-
<%- if files.empty? -%>
14-
<li><a href="<%= rel_prefix %>/<%= h f.path %>"><%= h f.page_name %></a>
15-
<%- next -%>
16-
<%- end -%>
17-
<li><details<% if dir == n %> open<% end %>><summary><%
18-
if n == f.page_name
19-
%><a href="<%= rel_prefix %>/<%= h f.path %>"><%= h n %></a><%
20-
else
21-
%><%= h n %><% files.unshift(f)
22-
end %></summary>
23-
<ul class="link-list">
24-
<%- files.each do |f| -%>
25-
<li><a href="<%= rel_prefix %>/<%= h f.path %>"><%= h f.page_name %></a>
26-
<%- end -%>
27-
</ul></details>
28-
<%- end -%>
29-
</ul>
5+
<%= generate_pages_index_content(@page_files, rel_prefix, current) %>
306
</div>
317
<%- end -%>

0 commit comments

Comments
 (0)