From cd8188ba5107b78fd576b016b59fe5bca319c4f1 Mon Sep 17 00:00:00 2001 From: Thibaut Courouble Date: Sun, 4 Dec 2016 16:42:13 -0500 Subject: [PATCH] Update and improve Go documentation (1.7.4) Closes #538. Closes #540. Closes #541. --- assets/stylesheets/pages/_go.scss | 5 +++++ lib/docs/filters/go/clean_html.rb | 15 +++++++++++---- lib/docs/filters/go/entries.rb | 27 ++++++++++++++++++++------- lib/docs/scrapers/go.rb | 3 ++- 4 files changed, 38 insertions(+), 12 deletions(-) diff --git a/assets/stylesheets/pages/_go.scss b/assets/stylesheets/pages/_go.scss index 218fa0df..e4f7da09 100644 --- a/assets/stylesheets/pages/_go.scss +++ b/assets/stylesheets/pages/_go.scss @@ -2,4 +2,9 @@ @extend %simple; #short-nav, table.dir { margin-left: -1rem; } + + a.source { + float: right; + font-size: .9em; + } } diff --git a/lib/docs/filters/go/clean_html.rb b/lib/docs/filters/go/clean_html.rb index e36149fa..9acc91c7 100644 --- a/lib/docs/filters/go/clean_html.rb +++ b/lib/docs/filters/go/clean_html.rb @@ -20,9 +20,16 @@ module Docs node.before(node.children).remove end + css('h2 a', 'h3 a').each do |node| + if node['href'].include?('/src/') + node.after %(Source) + node.before(node.children).remove + end + end + # Remove triangle character css('h2', '.exampleHeading').each do |node| - node.content = node.content.remove("\u25BE") + node.inner_html = node.inner_html.remove("\u25BE") node.name = 'h4' unless node.name == 'h2' end @@ -44,9 +51,9 @@ module Docs node.content = node.content end - css('td[style]', 'ul[style]').each do |node| - node.remove_attribute('style') - end + css('td[style]', 'ul[style]').remove_attr('style') + css('.toggleButton[title]').remove_attr('title') + css('.toggleButton').remove_attr('class') doc end diff --git a/lib/docs/filters/go/entries.rb b/lib/docs/filters/go/entries.rb index e8339679..e125b8fe 100644 --- a/lib/docs/filters/go/entries.rb +++ b/lib/docs/filters/go/entries.rb @@ -2,23 +2,36 @@ module Docs class Go class EntriesFilter < Docs::EntriesFilter def get_name - name = at_css('h1').content - name.remove! 'Package ' - name + code = at_css('code') + if code && name = code.content[/import "([\w\/]+)"/, 1] + name + else + name = at_css('h1').content + name.remove! 'Package ' + name + end end def get_type - subpath[/\A[^\/]+/] + package = subpath[/\A[^\/]+/] + if package.in?(%w(math net)) + name.split('/')[0..1].join('/') + else + package + end end def additional_entries + return [] if root_page? + package = self.name.split('/').last css('#manual-nav a').each_with_object [] do |node, entries| case node.content when /type\ (\w+)/ - name = "#{$1} (#{self.name})" + name = "#{package}.#{$1}" when /func\ (?:\(.+\)\ )?(\w+)\(/ - name = "#{$1}() (#{self.name})" + name = "#{$1}()" name.prepend "#{$1}." if node['href'] =~ /#(\w+)\.#{$1}/ + name.prepend "#{package}." when 'Constants' name = "#{self.name} constants" when 'Variables' @@ -30,7 +43,7 @@ module Docs end def include_default_entry? - !at_css('h1 + table.dir') + !at_css('h1 + .pkg-dir') end end end diff --git a/lib/docs/scrapers/go.rb b/lib/docs/scrapers/go.rb index 8b83fac1..e1b32f09 100644 --- a/lib/docs/scrapers/go.rb +++ b/lib/docs/scrapers/go.rb @@ -1,7 +1,7 @@ module Docs class Go < UrlScraper self.type = 'go' - self.release = '1.7.3' + self.release = '1.7.4' self.base_url = 'https://golang.org/pkg/' self.links = { home: 'https://golang.org/', @@ -12,6 +12,7 @@ module Docs options[:trailing_slash] = true options[:container] = '#page .container' + options[:skip] = %w(runtime/msan/) options[:attribution] = <<-HTML © Google, Inc.