diff options
Diffstat (limited to 'lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml')
-rw-r--r-- | lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml | 30 |
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> |