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.