<%= h @title %>

-<%- simple_files = @files.select { |f| f.text? } -%> -<%- unless simple_files.empty? then -%> +<%- if @page_files.any? -%>

Pages

    -<%- simple_files.sort.each do |file| -%> +<%- @page_files.sort.each do |file| -%>
  • <%= h file.page_name %> <% From 180771e2bc7242b44953f9e4734ac9126efd7fcb Mon Sep 17 00:00:00 2001 From: Stan Lo Date: Thu, 20 Feb 2025 12:58:45 +0000 Subject: [PATCH 02/12] Extract sidebar pages logic into helper methods --- lib/rdoc/generator/darkfish.rb | 37 +++++++++++++++++++ .../template/darkfish/_sidebar_pages.rhtml | 26 +------------ 2 files changed, 38 insertions(+), 25 deletions(-) diff --git a/lib/rdoc/generator/darkfish.rb b/lib/rdoc/generator/darkfish.rb index 44ae47fe82..b6b0cf2531 100644 --- a/lib/rdoc/generator/darkfish.rb +++ b/lib/rdoc/generator/darkfish.rb @@ -800,6 +800,43 @@ def group_classes_by_namespace_for_sidebar(classes) grouped_classes end + def generate_page_link(file, rel_prefix) + %(#{h file.page_name}) + end + + def generate_pages_index_content(page_files, rel_prefix, current) + return '' if page_files.empty? + + dir = current&.full_name&.[](/\A[^\/]+(?=\/)/) || current&.page_name + + content = +'' + end + private def nesting_namespaces_to_class_modules klass diff --git a/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml b/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml index 25c3f49ca8..1ea53f14a3 100644 --- a/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml +++ b/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml @@ -1,31 +1,7 @@ -<%- if defined?(current) -%> - <%- dir = current.full_name[%r{\A[^/]+(?=/)}] || current.page_name -%> -<%- end -%> <%- if @page_files.any? -%> <%- end -%> From f6756648caa50223719b92d2225faa5de8b84ad0 Mon Sep 17 00:00:00 2001 From: Stan Lo Date: Thu, 20 Feb 2025 13:30:33 +0000 Subject: [PATCH 03/12] Refactor sidebar list generation methods --- lib/rdoc/generator/darkfish.rb | 103 ++++++++++++++++++++------------- 1 file changed, 62 insertions(+), 41 deletions(-) diff --git a/lib/rdoc/generator/darkfish.rb b/lib/rdoc/generator/darkfish.rb index b6b0cf2531..6c5397ca71 100644 --- a/lib/rdoc/generator/darkfish.rb +++ b/lib/rdoc/generator/darkfish.rb @@ -758,7 +758,7 @@ def generate_ancestor_list(ancestors, klass) def generate_class_link(klass, rel_prefix) if klass.display? - %(#{klass.name}) + %(#{generate_sidebar_link(klass.name, klass.path, rel_prefix)}) else %(#{klass.name}) end @@ -768,25 +768,21 @@ def generate_class_index_content(classes, rel_prefix) grouped_classes = group_classes_by_namespace_for_sidebar(classes) return '' unless top = grouped_classes[nil] - solo = top.one? { |klass| klass.display? } - traverse_classes(top, grouped_classes, rel_prefix, solo) + open = top.one? { |klass| klass.display? } + traverse_classes(top, grouped_classes, rel_prefix, open) end - def traverse_classes(klasses, grouped_classes, rel_prefix, solo = false) - content = +'" end def group_classes_by_namespace_for_sidebar(classes) @@ -800,41 +796,43 @@ def group_classes_by_namespace_for_sidebar(classes) grouped_classes end - def generate_page_link(file, rel_prefix) - %(#{h file.page_name}) + def generate_sidebar_link(name, path, rel_prefix) + name = CGI.escapeHTML(name) + path = CGI.escapeHTML(path) + %(#{name}) end def generate_pages_index_content(page_files, rel_prefix, current) return '' if page_files.empty? dir = current&.full_name&.[](/\A[^\/]+(?=\/)/) || current&.page_name + grouped_files = page_files.group_by { |f| f.full_name[/\A[^\/]+(?=\/)/] || f.page_name } - content = +'' end private @@ -855,4 +853,27 @@ def generate_nesting_namespaces_breadcrumb klass, rel_prefix { name: namespace, path: path, self: klass.full_name == class_module&.full_name } end end + + def traverse_tree(items, &block) + content = +'" + end end From 0a517de4bf18255b8e67f91bdfe3c66cd6b1b9cf Mon Sep 17 00:00:00 2001 From: Stan Lo Date: Thu, 27 Feb 2025 12:46:49 +0000 Subject: [PATCH 04/12] Simplify sidebar ToC's generation logic --- lib/rdoc/generator/darkfish.rb | 13 ++++++++++++- .../darkfish/_sidebar_table_of_contents.rhtml | 10 ++-------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/lib/rdoc/generator/darkfish.rb b/lib/rdoc/generator/darkfish.rb index 6c5397ca71..2184962148 100644 --- a/lib/rdoc/generator/darkfish.rb +++ b/lib/rdoc/generator/darkfish.rb @@ -321,7 +321,7 @@ def generate_index # suppress 1.9.3 warning here.local_variable_set(:asset_rel_prefix, asset_rel_prefix) # some partials rely on the presence of current variable to render - here.local_variable_set(:current, @main_page) if @main_page + here.local_variable_set(:current, @main_page) here end rescue => e @@ -738,6 +738,17 @@ def excerpt(comment) extracted_text[0...150].gsub(/\n/, " ").squeeze(" ") end + def generate_table_from_the_current_object(current) + return '' if current.nil? + comment = + if current.respond_to? :comment_location then + current.comment_location + else + current.comment + end + current.parse(comment).table_of_contents.dup + end + def generate_ancestor_list(ancestors, klass) return '' if ancestors.empty? diff --git a/lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml b/lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml index b1e047b5f7..192869e013 100644 --- a/lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml +++ b/lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml @@ -1,11 +1,5 @@ -<%- comment = if current.respond_to? :comment_location then - current.comment_location - else - current.comment - end - table = current.parse(comment).table_of_contents.dup - - if table.length > 1 then %> +<%- table = generate_table_from_the_current_object(current) -%> +<%- if table.length > 1 %> <%= render '_sidebar_table_of_contents.rhtml' %> - <%= render '_sidebar_sections.rhtml' %> - <%= render '_sidebar_parent.rhtml' %> - <%= render '_sidebar_includes.rhtml' %> - <%= render '_sidebar_extends.rhtml' %> - <%= render '_sidebar_methods.rhtml' %> + + <%- unless klass.sections.length == 1 then %> + + <%- end -%> + + <%- if klass.type == 'class' && (ancestors = klass.super_classes).any? -%> + + <%- end -%> + + <%- unless klass.includes.empty? then %> + + <%- end -%> + + <%- unless klass.extends.empty? then %> + + <%- end -%> + + <% if (class_methods = klass.class_method_list.sort).any? %> + + <% end %> + + <% if (instance_methods = klass.instance_methods.sort).any? %> + + <% end %> <%= render '_footer.rhtml' %> From a5f0bf5bc35c816589d26bedf752426715d40f10 Mon Sep 17 00:00:00 2001 From: Stan Lo Date: Thu, 27 Feb 2025 13:28:10 +0000 Subject: [PATCH 07/12] Simplify class page --- lib/rdoc/generator/darkfish.rb | 11 +++++++ .../generator/template/darkfish/class.rhtml | 32 +++++++++---------- 2 files changed, 27 insertions(+), 16 deletions(-) diff --git a/lib/rdoc/generator/darkfish.rb b/lib/rdoc/generator/darkfish.rb index 279e5214d6..cf656aace1 100644 --- a/lib/rdoc/generator/darkfish.rb +++ b/lib/rdoc/generator/darkfish.rb @@ -350,11 +350,22 @@ def generate_class klass, template_file = nil @title = "#{klass.type} #{klass.full_name} - #{@options.title}" + klass_class_methods = klass.class_method_list.sort + klass_instance_methods = klass.instance_methods.sort + klass_extends = klass.extends + klass_includes = klass.includes + klass_sections = klass.sort_sections + debug_msg " rendering #{out_file}" render_template template_file, out_file do |io| here = binding here.local_variable_set(:asset_rel_prefix, asset_rel_prefix) here.local_variable_set(:breadcrumb, breadcrumb) + here.local_variable_set(:klass_class_methods, klass_class_methods) + here.local_variable_set(:klass_instance_methods, klass_instance_methods) + here.local_variable_set(:klass_extends, klass_extends) + here.local_variable_set(:klass_includes, klass_includes) + here.local_variable_set(:klass_sections, klass_sections) here end end diff --git a/lib/rdoc/generator/template/darkfish/class.rhtml b/lib/rdoc/generator/template/darkfish/class.rhtml index 289750d660..2c6b4238fa 100644 --- a/lib/rdoc/generator/template/darkfish/class.rhtml +++ b/lib/rdoc/generator/template/darkfish/class.rhtml @@ -9,12 +9,12 @@ <%= render '_sidebar_table_of_contents.rhtml' %> - <%- unless klass.sections.length == 1 then %> + <%- if klass_sections.any? %> <%- end -%> - <%- unless klass.includes.empty? then %> + <%- if klass_includes.any? %> <%- end -%> - <%- unless klass.extends.empty? then %> + <%- if klass_extends.any? %> <%- end -%> - <% if (class_methods = klass.class_method_list.sort).any? %> + <% if klass_class_methods.any? %> <% end %> - <% if (instance_methods = klass.instance_methods.sort).any? %> + <% if klass_instance_methods.any? %>