Skip to content

Commit 32d9400

Browse files
committed
Extract sidebar pages logic into helper methods
1 parent 487ae9a commit 32d9400

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

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

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