Improve documentation

pull/1708/head
Nicolas Ettlin 3 years ago committed by Simon Legner
parent 4d02410ac1
commit 16ccff51ff

@ -8,6 +8,7 @@ module Docs
css('.documentableFilter, .documentableAnchor, .documentableBrief').remove css('.documentableFilter, .documentableAnchor, .documentableBrief').remove
format_title format_title
format_signature
format_top_links format_top_links
format_metadata format_metadata
format_members format_members
@ -16,10 +17,14 @@ module Docs
doc doc
end end
private
# Formats the title of the page
def format_title def format_title
# Add the kind of page to the title
cover_header = at_css('.cover-header') cover_header = at_css('.cover-header')
unless cover_header.nil? return if cover_header.nil?
# Add the kind of page to the title
icon = cover_header.at_css('.micon') icon = cover_header.at_css('.micon')
types = { types = {
cl: 'Class', cl: 'Class',
@ -35,22 +40,26 @@ module Docs
type = types[type_id.to_sym] type = types[type_id.to_sym]
name = CGI.escapeHTML cover_header.at_css('h1').text name = CGI.escapeHTML cover_header.at_css('h1').text
# Add the package name
package = at_css('.breadcrumbs a:nth-of-type(3)').text package = at_css('.breadcrumbs a:nth-of-type(3)').text
package = package + '.' unless name.empty? || package.empty? package = package + '.' unless name.empty? || package.empty?
# Replace the title
title = root_page? ? 'Package root' : "#{type} #{package}#{name}".strip title = root_page? ? 'Package root' : "#{type} #{package}#{name}".strip
cover_header.replace "<h1>#{title}</h1>" cover_header.replace "<h1>#{title}</h1>"
end end
# Signature # Formats the signature block at the top of the page
def format_signature
signature = at_css('.signature') signature = at_css('.signature')
signature_annotations = signature.at_css('.annotations') signature_annotations = signature.at_css('.annotations')
signature_annotations.name = 'small' unless signature_annotations.nil? signature_annotations.name = 'small' unless signature_annotations.nil?
signature.replace "<h2 id=\"signature\">#{signature.inner_html}</h2>" signature.replace "<h2 id=\"signature\">#{signature.inner_html}</h2>"
end end
# Formats the top links (companion page, source code)
def format_top_links def format_top_links
# Companion page # Companion page (e.g. List ↔ List$)
links = [] links = []
at_css('.attributes').css('dt').each do |dt| at_css('.attributes').css('dt').each do |dt|
next if dt.content.strip != 'Companion:' next if dt.content.strip != 'Companion:'
@ -82,8 +91,9 @@ module Docs
title.add_next_sibling("<div class=\"links\">#{links.join(' • ')}</div>") title.add_next_sibling("<div class=\"links\">#{links.join(' • ')}</div>")
end end
# Metadata about the whole file (e.g. supertypes)
def format_metadata def format_metadata
# Metadata (attributes) # Format the values
css('.tabs.single .monospace').each do |node| css('.tabs.single .monospace').each do |node|
node.css('> div').each do |div| node.css('> div').each do |div|
div['class'] = 'member' div['class'] = 'member'
@ -91,7 +101,7 @@ module Docs
node['class'] = 'related-types' node['class'] = 'related-types'
if node.children.count > 15 if node.children.count > 15 # Hide too large lists
node.replace "<details> node.replace "<details>
<summary>#{node.children.count} types</summary> <summary>#{node.children.count} types</summary>
#{node.to_html} #{node.to_html}
@ -101,6 +111,7 @@ module Docs
attributes = at_css('.attributes') attributes = at_css('.attributes')
# Change the HTML structure
tabs_names = css('.tabs.single .names .tab') tabs_names = css('.tabs.single .names .tab')
tabs_contents = css('.tabs.single .contents .tab') tabs_contents = css('.tabs.single .contents .tab')
tabs_names.zip(tabs_contents).each do |name, contents| tabs_names.zip(tabs_contents).each do |name, contents|
@ -116,8 +127,9 @@ module Docs
tabs.remove unless tabs.nil? || tabs.parent['class'] == 'membersList' tabs.remove unless tabs.nil? || tabs.parent['class'] == 'membersList'
end end
# Format the members (methods, values…)
def format_members def format_members
# Headings # Section headings
css('.cover h2').each do |node| css('.cover h2').each do |node|
node.name = 'h3' node.name = 'h3'
end end
@ -126,13 +138,14 @@ module Docs
'.membersList h3', '.membersList h3',
# Custom group headers for which Scaladoc generates invalid HTML # Custom group headers for which Scaladoc generates invalid HTML
# (<h3><p>…</p></h3>)
'.documentableList > h3:empty + p' '.documentableList > h3:empty + p'
).each do |node| ).each do |node|
node.name = 'h2' node.name = 'h2'
node.content = node.content node.content = node.content
end end
# Methods # Individual members
css('.documentableElement').each do |element| css('.documentableElement').each do |element|
header = element.at_css('.header') header = element.at_css('.header')
header.name = 'h3' header.name = 'h3'
@ -181,9 +194,12 @@ module Docs
end end
end end
# Simplify the HTML structure by removing useless elements
def simplify_html def simplify_html
# Remove unneeded parts of the document
@doc = at_css('#content > div') @doc = at_css('#content > div')
# Remove the useless elements around members
css('.documentableList > *').each do |element| css('.documentableList > *').each do |element|
element.parent = doc element.parent = doc
end end

Loading…
Cancel
Save