diff --git a/lib/docs/filters/erlang/clean_html.rb b/lib/docs/filters/erlang/clean_html.rb index 33dfb5ac..a467515a 100644 --- a/lib/docs/filters/erlang/clean_html.rb +++ b/lib/docs/filters/erlang/clean_html.rb @@ -12,8 +12,6 @@ module Docs node.before(node.children).remove end - css('> br').remove - css('> font[size="+1"]:first-child').each do |node| node.name = 'h1' end @@ -31,15 +29,11 @@ module Docs # others # Remove JS on-hover highlighting - css('h3.title-link', 'h4.data-type-name', 'h4.func-head').each do |node| + css('h3.title-link', 'h4.title-link', 'div.data-type-name', 'div.func-head').each do |node| node.remove_attribute('onmouseover') node.remove_attribute('onmouseout') end - css('a[name]').each do |node| - node.before(node.children).remove - end - css('h3').each do |node| content = node.content node.content = content.capitalize if content == content.upcase @@ -49,12 +43,19 @@ module Docs css('h4.func-head + .fun-types > h3.func-types-title') .each { |node| node.name = 'h5' } + css('p > a[name]').each do |node| + parent = node.parent + parent.name = 'h4' + parent['id'] ||= node['name'] + parent.css('> br:last-child').remove + end + css('a[name]:empty').each { |n| (n.next_element || n.parent)['id'] ||= n['name'] } + css('h3', 'h4', 'h5').each do |node| node.name = node.name.sub(/\d/) { |i| i.to_i - 1 } end - # Convert code blocks to if inline otherwise - #
. + # Convert code blocks to if inline otherwise
css('span.bold_code', 'span.code', '.func-head > span.title-name').each do |node| node.remove_attribute('class') node.css('span.bold_code', 'span.code') @@ -75,14 +76,6 @@ module Docs node.inner_html = node.inner_html.strip_heredoc end - css('.REFBODY').each do |node| - if node.element_children.length == 0 - node.name = 'p' - else - node.before(node.children).remove - end - end - css('a[href^=javascript]').each { |n| n.before(n.children).remove } css('table').each do |node| diff --git a/lib/docs/filters/erlang/entries.rb b/lib/docs/filters/erlang/entries.rb index 3373e1e7..bd6c94e5 100644 --- a/lib/docs/filters/erlang/entries.rb +++ b/lib/docs/filters/erlang/entries.rb @@ -2,14 +2,14 @@ module Docs class Erlang class EntriesFilter < Docs::EntriesFilter def get_name - name = at_css('h1').content.strip + name = at_css('#content h1').content.strip name << " (#{type.remove('Guide: ')})" if name == '1 Introduction' name.sub! %r{\A(\d+)}, '\1.' name end def get_type - name = at_css('h1').content.strip + name = at_css('#content h1').content.strip if subpath.start_with?('lib/') type = subpath[/lib\/(.+?)[\-\/]/, 1] @@ -44,7 +44,7 @@ module Docs if subpath.start_with?('lib/') names = Set.new entry_nodes.each_with_object [] do |node, entries| - id = node['id'] + id = node['id'] || node['name'] name = id.remove %r{\-\d*\z} name << ' (type)' if name.sub!(/\Atype-/, '') name.prepend "#{self.name}:" @@ -66,7 +66,13 @@ module Docs def entry_nodes @entry_nodes ||= if subpath.start_with?('lib/') - css('article.func > h4', 'article.data-types-body > h4').entries + r18_funs = css('p + div.REFBODY').each_with_object [] do |node, result| + result.concat(node.previous_element.css('a[name]').to_a) + end + css('article.data-types-body > h4', 'article.func > h4', + 'div.data-type-name a[name]', 'div.exports-body > a[name]', + 'div.fun-type a[name]').entries + + r18_funs elsif subpath.start_with?('erts') link = at_css(".flipMenu a[href='#{File.basename(subpath, '.html')}']") list = link.parent.parent