summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2022-03-13 19:44:09 +0900
committergit <svn-admin@ruby-lang.org>2022-03-14 14:48:12 +0900
commit976431d9ed1a144675c24c4e8d510171cfd7c32c (patch)
tree81944f7d7d930ca413eb3a1a1b37d0889603c53b /lib
parenta884431624966824b9496daa1cfa0dc5e95fe118 (diff)
[ruby/rdoc] Fold class and module index
https://github.com/ruby/rdoc/commit/4c7c46fcc4
Diffstat (limited to 'lib')
-rw-r--r--lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml28
-rw-r--r--lib/rdoc/generator/template/darkfish/css/rdoc.css16
2 files changed, 41 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..787bbe42c2 100644
--- a/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml
+++ b/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml
@@ -1,9 +1,31 @@
<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
+ -%>
+ <%- 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><summary><% link.call(index_klass) %></summary>
+ <%- traverse.call(children) -%>
+ </ul></details>
+ <%- elsif index_klass.display? -%>
+ <li><% link.call(index_klass, true) %>
+ <%- end -%>
+ <%- end -%>
<%- end -%>
- </ul>
+ <%- traverse.call(all_classes[nil]) -%>
</div>
diff --git a/lib/rdoc/generator/template/darkfish/css/rdoc.css b/lib/rdoc/generator/template/darkfish/css/rdoc.css
index 7451b6ecb9..8c2b2ac6cb 100644
--- a/lib/rdoc/generator/template/darkfish/css/rdoc.css
+++ b/lib/rdoc/generator/template/darkfish/css/rdoc.css
@@ -484,6 +484,22 @@ main header h3 {
/* @group Method Details */
+details summary {
+ display: block;
+}
+details summary::-webkit-details-marker {
+ display: none;
+}
+details summary:before {
+ content: "";
+}
+details summary:after {
+ content: " ▶";
+}
+details[open] > summary:after {
+ content: " ▽";
+}
+
main .method-source-code {
max-height: 0;
overflow: hidden;