@@ -824,6 +824,39 @@ def generate_ancestor_list(ancestors, klass)
824
824
content << '</li></ul>'
825
825
end
826
826
827
+ def generate_class_link ( klass , rel_prefix )
828
+ if klass . display?
829
+ %(<code><a href="#{ rel_prefix } /#{ klass . path } ">#{ klass . name } </a></code>)
830
+ else
831
+ %(<code>#{ klass . name } </code>)
832
+ end
833
+ end
834
+
835
+ def generate_class_index_content ( classes , rel_prefix )
836
+ grouped_classes = group_classes_by_namespace_for_sidebar ( classes )
837
+ return '' unless top = grouped_classes [ nil ]
838
+
839
+ solo = top . one? { |klass | klass . display? }
840
+ traverse_classes ( top , grouped_classes , rel_prefix , solo )
841
+ end
842
+
843
+ def traverse_classes ( klasses , grouped_classes , rel_prefix , solo = false )
844
+ content = +'<ul class="link-list">'
845
+
846
+ klasses . each do |index_klass |
847
+ if children = grouped_classes [ index_klass . full_name ]
848
+ content << %(<li><details#{ solo ? ' open' : '' } ><summary>#{ generate_class_link ( index_klass , rel_prefix ) } </summary>)
849
+ content << traverse_classes ( children , grouped_classes , rel_prefix )
850
+ content << '</ul></details>'
851
+ solo = false
852
+ elsif index_klass . display?
853
+ content << %(<li>#{ generate_class_link ( index_klass , rel_prefix ) } )
854
+ end
855
+ end
856
+
857
+ content
858
+ end
859
+
827
860
def group_classes_by_namespace_for_sidebar ( classes )
828
861
grouped_classes = classes . group_by do |klass |
829
862
klass . full_name [ /\A [^:]++(?:::[^:]++(?=::))*+(?=::[^:]*+\z )/ ]
0 commit comments