mirror of
https://github.com/ruby/ruby.git
synced 2025-08-26 22:45:03 +02:00

(https://github.com/ruby/rdoc/pull/1176) * Move method source block to the top Currently, if a method description is long (e.g. `Array.new`), users need to click the method toggle button next to the method title, and then scroll down to the source code expanded below the description. This commit changes the behavior so that the source code is expanded immediately below the method title. * Update method toggle's interface 1. Display the method toggle button by default instead of displaying on hover 2. Only toggle the source code when clicking the method toggle button, not when clicking the entire method title section. This will allow us to display an anchor link next to the method title 3. Simplify the toggle source button's appearance * Use details tag for method toggling * Rename method-click-advice to method-source-toggle * Improve method controls' display on mobile By moving the method controls out of the method header, we can display them to the right of the method name on desktop, and below the method name on mobile. * Add "Example" label to example code blocks The label should help users distinguish example code blocks from other code blocks, such as method source code. It's only applied to Ruby code examples. * Revert "Add "Example" label to example code blocks" This reverts commit69fc9ce6a3
. * Give source code blocks a different background color * Change targeted method's highlighting color to work better with the new method sourcee608a84af3
182 lines
5.7 KiB
Text
182 lines
5.7 KiB
Text
<body id="top" role="document" class="<%= klass.type %>">
|
|
<%= render '_sidebar_toggle.rhtml' %>
|
|
|
|
<nav id="navigation" role="navigation">
|
|
<div id="project-navigation">
|
|
<%= render '_sidebar_navigation.rhtml' %>
|
|
<%= render '_sidebar_search.rhtml' %>
|
|
</div>
|
|
|
|
<%= 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' %>
|
|
|
|
<%= render '_footer.rhtml' %>
|
|
</nav>
|
|
|
|
<main role="main" aria-labelledby="<%=h klass.aref %>">
|
|
<h1 id="<%=h klass.aref %>" class="<%= klass.type %>">
|
|
<%= klass.type %> <%= klass.full_name %>
|
|
</h1>
|
|
|
|
<section class="description">
|
|
<%= klass.description %>
|
|
</section>
|
|
|
|
<%- klass.each_section do |section, constants, attributes| -%>
|
|
<section id="<%= section.aref %>" class="documentation-section">
|
|
<%- if section.title then -%>
|
|
<header class="documentation-section-title">
|
|
<h2>
|
|
<%= section.title %>
|
|
</h2>
|
|
<span class="section-click-top">
|
|
<a href="#top">↑ top</a>
|
|
</span>
|
|
</header>
|
|
<%- end -%>
|
|
|
|
<%- if section.comment then -%>
|
|
<div>
|
|
<%= section.description %>
|
|
</div>
|
|
<%- end -%>
|
|
|
|
<%- unless constants.empty? then -%>
|
|
<section class="constants-list">
|
|
<header>
|
|
<h3>Constants</h3>
|
|
</header>
|
|
<dl>
|
|
<%- constants.each do |const| -%>
|
|
<dt id="<%= const.name %>"><%= const.name %>
|
|
<%- if const.comment then -%>
|
|
<dd><%= const.description.strip %>
|
|
<%- else -%>
|
|
<dd class="missing-docs">(Not documented)
|
|
<%- end -%>
|
|
<%- end -%>
|
|
</dl>
|
|
</section>
|
|
<%- end -%>
|
|
|
|
<%- unless attributes.empty? then -%>
|
|
<section class="attribute-method-details" class="method-section">
|
|
<header>
|
|
<h3>Attributes</h3>
|
|
</header>
|
|
|
|
<%- attributes.each do |attrib| -%>
|
|
<div id="<%= attrib.aref %>" class="method-detail">
|
|
<div class="method-heading attribute-method-heading">
|
|
<span class="method-name"><%= h attrib.name %></span><span
|
|
class="attribute-access-type">[<%= attrib.rw %>]</span>
|
|
</div>
|
|
|
|
<div class="method-description">
|
|
<%- if attrib.comment then -%>
|
|
<%= attrib.description.strip %>
|
|
<%- else -%>
|
|
<p class="missing-docs">(Not documented)
|
|
<%- end -%>
|
|
</div>
|
|
</div>
|
|
<%- end -%>
|
|
</section>
|
|
<%- end -%>
|
|
|
|
<%- klass.methods_by_type(section).each do |type, visibilities|
|
|
next if visibilities.empty?
|
|
visibilities.each do |visibility, methods|
|
|
next if methods.empty? %>
|
|
<section id="<%= visibility %>-<%= type %>-<%= section.aref %>-method-details" class="method-section">
|
|
<header>
|
|
<h3><%= visibility.to_s.capitalize %> <%= type.capitalize %> Methods</h3>
|
|
</header>
|
|
|
|
<%- methods.each do |method| -%>
|
|
<div id="<%= method.aref %>" class="method-detail <%= method.is_alias_for ? "method-alias" : '' %>">
|
|
<div class="method-header">
|
|
<%- if (call_seq = method.call_seq) then -%>
|
|
<%- call_seq.strip.split("\n").each_with_index do |call_seq, i| -%>
|
|
<div class="method-heading">
|
|
<span class="method-callseq">
|
|
<%= h(call_seq.strip.
|
|
gsub( /^\w+\./m, '')).
|
|
gsub(/(.*)[-=]>/, '\1→') %>
|
|
</span>
|
|
</div>
|
|
<%- end -%>
|
|
<%- elsif method.has_call_seq? then -%>
|
|
<div class="method-heading">
|
|
<span class="method-name"><%= h method.name %></span>
|
|
</div>
|
|
<%- else -%>
|
|
<div class="method-heading">
|
|
<span class="method-name"><%= h method.name %></span>
|
|
<span class="method-args"><%= h method.param_seq %></span>
|
|
</div>
|
|
<%- end -%>
|
|
</div>
|
|
|
|
<%- if method.token_stream -%>
|
|
<div class="method-controls">
|
|
<details class="method-source-toggle">
|
|
<summary>Source</summary>
|
|
</details>
|
|
</div>
|
|
<%- end -%>
|
|
|
|
<%- unless method.skip_description? then -%>
|
|
<div class="method-description">
|
|
<%- if method.token_stream then -%>
|
|
<div class="method-source-code" id="<%= method.html_name %>-source">
|
|
<pre><%= method.markup_code %></pre>
|
|
</div>
|
|
<%- end -%>
|
|
<%- if method.comment then -%>
|
|
<%= method.description.strip %>
|
|
<%- else -%>
|
|
<p class="missing-docs">(Not documented)
|
|
<%- end -%>
|
|
<%- if method.calls_super then -%>
|
|
<div class="method-calls-super">
|
|
Calls superclass method
|
|
<%=
|
|
method.superclass_method ?
|
|
method.formatter.link(method.superclass_method.full_name, method.superclass_method.full_name) : nil
|
|
%>
|
|
</div>
|
|
<%- end -%>
|
|
</div>
|
|
<%- end -%>
|
|
|
|
<%- unless method.aliases.empty? then -%>
|
|
<div class="aliases">
|
|
Also aliased as: <%= method.aliases.map do |aka|
|
|
if aka.parent then # HACK lib/rexml/encodings
|
|
%{<a href="#{klass.aref_to aka.path}">#{h aka.name}</a>}
|
|
else
|
|
h aka.name
|
|
end
|
|
end.join ", " %>
|
|
</div>
|
|
<%- end -%>
|
|
|
|
<%- if method.is_alias_for then -%>
|
|
<div class="aliases">
|
|
Alias for: <a href="<%= klass.aref_to method.is_alias_for.path %>"><%= h method.is_alias_for.name %></a>
|
|
</div>
|
|
<%- end -%>
|
|
</div>
|
|
|
|
<%- end -%>
|
|
</section>
|
|
<%- end
|
|
end %>
|
|
</section>
|
|
<%- end -%>
|
|
</main>
|