Quellcode durchsuchen

Update and improve Go documentation (1.7.4)

Closes #538.
Closes #540.
Closes #541.
Thibaut Courouble vor 9 Jahren
Ursprung
Commit
cd8188ba51

+ 5 - 0
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;
+  }
 }

+ 11 - 4
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 %(<a href="#{node['href']}" class="source">Source</a>)
+            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

+ 20 - 7
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

+ 2 - 1
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
       &copy; Google, Inc.<br>