Browse Source

Merge pull request #1667 from kidonng/patch-1

yarn: update to 1.22.17 and add Yarn berry
Simon Legner 4 years ago
parent
commit
ae9142657b

+ 48 - 0
lib/docs/filters/yarn/clean_html_berry.rb

@@ -0,0 +1,48 @@
+module Docs
+  class Yarn
+    class CleanHtmlBerryFilter < Filter
+      def call
+        if slug.empty?
+          @doc = at_css('main')
+          css(
+            (['div:first-child'] * 3).join('>'), # Tagline
+            'img',
+            'hr', # Footer
+            'hr + div', # Footer
+          ).remove
+
+          css('a').each do |link|
+            link.name = 'div'
+            link.css('h3').each do |node|
+              node.replace("<h2><a href='#{link['href']}'>#{node.content}</a></h2>")
+            end
+          end
+
+          return doc
+        end
+
+        @doc = at_css('article')
+        # Heading & edit link
+        css('h1', 'h1 + a').remove unless slug.start_with?('configuration')
+
+        if slug.start_with?('cli')
+          css('.header-code').each do |node|
+            node.name = 'span'
+          end
+        end
+
+        if slug.start_with?('configuration')
+          css('h1', 'h2').each do |node|
+            node.name = node.name.sub(/\d/) { |i| i.to_i + 1 }
+          end
+        end
+
+        css('*').each do |node|
+          node.remove_attribute('style')
+        end
+
+        doc
+      end
+    end
+  end
+end

+ 1 - 2
lib/docs/filters/yarn/entries.rb

@@ -13,8 +13,7 @@ module Docs
 
       def get_type
         type = at_css('.guide-nav a').content.strip
-        type.remove! ' Introduction'
-        type
+        type.sub 'CLI Introduction', 'CLI Commands'
       end
     end
   end

+ 28 - 0
lib/docs/filters/yarn/entries_berry.rb

@@ -0,0 +1,28 @@
+module Docs
+  class Yarn
+    class EntriesBerryFilter < Docs::EntriesFilter
+      def get_name
+        if slug.start_with?('configuration')
+          filename = at_css('main .active code')
+          content = filename.content
+          return filename.parent.content.sub content, " (#{content})"
+        end
+
+        name = at_css('h1').content
+
+        if slug.start_with?('getting-started')
+          active_link = at_css('main .active')
+          links = active_link.parent.children.to_a
+          name.prepend "#{links.index(active_link) + 1}. "
+        end
+
+        name
+      end
+
+      def get_type
+         return 'CLI' if slug.start_with?('sdks', 'pnpify')
+         at_css('header .active').content
+      end
+    end
+  end
+end

+ 24 - 10
lib/docs/scrapers/yarn.rb

@@ -1,28 +1,42 @@
 module Docs
   class Yarn < UrlScraper
     self.type = 'simple'
-    self.release = '1.19.0'
-    self.base_url = 'https://yarnpkg.com/en/docs/'
-    self.links = {
-      home: 'https://yarnpkg.com/',
-      code: 'https://github.com/yarnpkg/yarn'
-    }
-
-    html_filters.push 'yarn/entries', 'yarn/clean_html', 'title'
 
     options[:root_title] = 'Yarn'
     options[:trailing_slash] = false
 
     options[:skip] = %w(nightly)
-    options[:skip_patterns] = [/\Aorg\//]
 
     options[:attribution] = <<-HTML
       &copy; 2016&ndash;present Yarn Contributors<br>
       Licensed under the BSD License.
     HTML
 
+    version 'Berry' do
+      self.release = '3.1.1'
+      self.base_url = 'https://yarnpkg.com/'
+      self.links = {
+        home: 'https://yarnpkg.com/',
+        code: 'https://github.com/yarnpkg/berry'
+      }
+      html_filters.push 'yarn/entries_berry', 'yarn/clean_html_berry', 'title'
+      options[:skip] = ['features', 'cli', 'configuration', 'advanced']
+      options[:skip_patterns] = [/\Aapi/, /\Apackage/]
+    end
+
+    version 'Classic' do
+      self.release = '1.22.17'
+      self.base_url = 'https://classic.yarnpkg.com/en/docs/'
+      self.links = {
+        home: 'https://classic.yarnpkg.com/',
+        code: 'https://github.com/yarnpkg/yarn'
+      }
+      html_filters.push 'yarn/entries', 'yarn/clean_html', 'title'
+      options[:skip_patterns] = [/\Aorg\//]
+    end
+
     def get_latest_version(opts)
-      get_latest_github_release('yarnpkg', 'yarn', opts)
+      get_latest_github_release('yarnpkg', 'berry', opts)[/[\d.]+/]
     end
   end
 end