History

Elixir: include source link in section headers

This implements #763 just for Elixir without solving the general issue. The style used is similar to the one of the Go docs.

Stefan Breunig committed 5 years ago

Commit 24ac9961 parent fdfc4dd3 files · +12 −2Browse files

Unified · Split

3 files
  1. assets/stylesheets/pages/_elixir.scss +5 −0
  2. lib/docs/filters/elixir/clean_html.rb +5 −1
  3. lib/docs/filters/elixir/entries.rb +2 −1
assets/stylesheets/pages/_elixir.scss+5−0
@@ -4,4 +4,9 @@ · 3 unmodified lines
44 .type-detail { margin-bottom: 2em; }
55 .type-detail pre { margin-left: -1rem; }
66 ._mobile & .type-detail pre { margin-left: 0; }
7+
8+ a.source {
9+ float: right;
10+ font-size: .9em;
11+ }
712 }
lib/docs/filters/elixir/clean_html.rb+5−1
@@ -25,7 +25,7 @@ module Docs · 24 unmodified lines
2525 end
2626
2727 def api
28− css('.hover-link', '.view-source', 'footer').remove
28+ css('.hover-link', 'footer', ':not(.detail-header) > .view-source').remove
2929
3030 css('.summary').each do |node|
3131 node.name = 'dl'
@@ -51,7 +51,11 @@ module Docs · 19 unmodified lines
5151 detail.css('.detail-header').each do |node|
5252 node.name = 'h3'
5353 node['id'] = id
54+
55+ source_href = node.at_css('.view-source').attr('href')
56+
5457 node.content = node.at_css('.signature').inner_text
58+ node << %(<a href="#{source_href}" class="source">Source</a>)
5559 end
5660
5761 detail.css('.docstring h2').each do |node|
lib/docs/filters/elixir/entries.rb+2−1
@@ -45,7 +45,8 @@ module Docs · 44 unmodified lines
4545
4646 css('.detail-header').map do |node|
4747 id = node['id']
48− name = node.content.strip
48+ # ignore text of children, i.e. source link
49+ name = node.children.select(&:text?).map(&:content).join.strip
4950
5051 name.remove! %r{\(.*\)}
5152 name.remove! 'left '