Skip to content

Commit 6e25e3f

Browse files
committed
Extract sidebar pages logic into helper methods
1 parent d08dc8a commit 6e25e3f

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
@@ -869,6 +869,43 @@ def group_classes_by_namespace_for_sidebar(classes)
869869
grouped_classes
870870
end
871871

872+
def generate_page_link(file, rel_prefix)
873+
%(<a href="#{rel_prefix}/#{h file.path}">#{h file.page_name}</a>)
874+
end
875+
876+
def generate_pages_index_content(page_files, rel_prefix, current)
877+
return '' if page_files.empty?
878+
879+
dir = current&.full_name&.[](/\A[^\/]+(?=\/)/) || current&.page_name
880+
881+
content = +'<ul class="link-list">'
882+
page_files.group_by do |f|
883+
f.full_name[/\A[^\/]+(?=\/)/] || f.page_name
884+
end.each do |n, grouped_files|
885+
f = grouped_files.shift
886+
if grouped_files.empty?
887+
content << %(<li>#{generate_page_link(f, rel_prefix)}</li>)
888+
next
889+
end
890+
891+
content << %(<li><details#{dir == n ? ' open' : ''}><summary>)
892+
if n == f.page_name
893+
content << generate_page_link(f, rel_prefix)
894+
else
895+
content << h(n)
896+
grouped_files.unshift(f)
897+
end
898+
content << '</summary><ul class="link-list">'
899+
900+
grouped_files.each do |f|
901+
content << %(<li>#{generate_page_link(f, rel_prefix)}</li>)
902+
end
903+
904+
content << '</ul></details>'
905+
end
906+
content << '</ul>'
907+
end
908+
872909
private
873910

874911
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)