summaryrefslogtreecommitdiff
path: root/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml')
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml30
1 files changed, 27 insertions, 3 deletions
diff --git a/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml b/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml
index 530f25c762..d3d8da4017 100644
--- a/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml
+++ b/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml
@@ -1,9 +1,33 @@
<div id="classindex-section" class="nav-section">
<h3>Class and Module Index</h3>
+ <%-
+ all_classes = @classes.group_by do |klass|
+ klass.full_name[/\A[^:]++(?:::[^:]++(?=::))*+(?=::[^:]*+\z)/]
+ end.delete_if do |_, klasses|
+ !klasses.any?(&:display?)
+ end
+ link = proc do |index_klass, display = index_klass.display?|
+ if display
+ -%><code><a href="<%= rel_prefix %>/<%= index_klass.path %>"><%= index_klass.name %></a></code><%-
+ else
+ -%><code><%= index_klass.name %></code><%-
+ end
+ end
+ if top = all_classes[nil]
+ solo = top.one? {|klass| klass.display?}
+ traverse = proc do |klasses| -%>
<ul class="link-list">
- <%- @modsort.each do |index_klass| -%>
- <li><a href="<%= rel_prefix %>/<%= index_klass.path %>"><%= index_klass.full_name %></a>
+ <%- klasses.each do |index_klass| -%>
+ <%- if children = all_classes[index_klass.full_name] -%>
+ <li><details<% if solo; solo = false %> open<% end %>><summary><% link.call(index_klass) %></summary>
+ <%- traverse.call(children) -%>
+ </ul></details>
+ <%- elsif index_klass.display? -%>
+ <li><% link.call(index_klass, true) %>
+ <%- end -%>
+ <%- end -%>
+ <%- end -%>
+ <%- traverse.call(top) -%>
<%- end -%>
- </ul>
</div>