Sfoglia il codice sorgente

Merge pull request #2221 from Cimbali/click

Add click documentation
Simon Legner 1 anno fa
parent
commit
6512f29a22

+ 1 - 1
assets/javascripts/news.json

@@ -1,7 +1,7 @@
 [
   [
     "2024-02-20",
-    "New documentation: <a href=\"/nextjs/\">Next.js</a>"
+    "New documentations: <a href=\"/nextjs/\">Next.js</a>, <a href=\"/click/\">click</a>"
   ],
   [
     "2024-01-24",

+ 58 - 0
lib/docs/filters/click/entries.rb

@@ -0,0 +1,58 @@
+module Docs
+  class Click
+    class EntriesFilter < Docs::EntriesFilter
+      TYPE_BY_SLUG = {}
+
+      def call
+        if root_page?
+          css('section').each do |node|
+            next if ['documentation', 'api-reference'].include?(node['id'])
+            type = node.at_css('h2').content.strip
+            node.css('li > a').each do |toclink|
+              slug = toclink['href'].split('/')[-2]
+              TYPE_BY_SLUG[slug] = type
+            end
+          end
+        end
+        super
+      end
+
+      def get_name
+        return at_css('h1').content.strip
+      end
+
+      def get_type
+        TYPE_BY_SLUG[slug.split('/').first] || at_css('h1').content.strip
+      end
+
+      def include_default_entry?
+        TYPE_BY_SLUG.include?(slug.split('/').first)
+      end
+
+      def additional_entries
+        return [] if root_page? || TYPE_BY_SLUG.include?(slug.split('/').first)
+
+        if slug == 'api/'
+          entries = []
+          doc.css('> section').each do |section|
+            title = section.at_css('h2').content.strip
+            section.css('dl.py > dt[id]').each do |dt|
+              name = dt['id'].split('.')[1..].join('.')
+              name << '()' if dt.parent.classes.intersect?(['function', 'method', 'classmethod', 'staticmethod'])
+              entries << [name, dt['id'], title]
+            end
+          end
+          return entries
+        end
+
+        (doc.css('> section') || []).map do |section|
+          title = section.at_css('h2').content.strip
+          [title, section['id']]
+        end
+      end
+
+      private
+
+    end
+  end
+end

+ 11 - 0
lib/docs/filters/click/pre_clean_html.rb

@@ -0,0 +1,11 @@
+module Docs
+  class Click
+    class PreCleanHtmlFilter < Filter
+      def call
+        # Remove ¶ character from headers
+        css('.headerlink').remove
+        doc
+      end
+    end
+  end
+end

+ 30 - 0
lib/docs/scrapers/click.rb

@@ -0,0 +1,30 @@
+module Docs
+  class Click < UrlScraper
+    self.name = 'click'
+    self.type = 'sphinx'
+    self.root_path = 'index.html'
+    self.links = {
+      home: 'https://click.palletsprojects.com/',
+      code: 'https://github.com/pallets/click'
+    }
+
+    html_filters.push 'click/pre_clean_html', 'click/entries', 'sphinx/clean_html'
+
+    options[:container] = '.body > section'
+    options[:skip] = ['changes/', 'genindex/', 'py-modindex/']
+    options[:title] = false
+
+    options[:attribution] = <<-HTML
+      &copy; Copyright 2014 Pallets.<br>
+      Licensed under the BSD 3-Clause License.<br>
+      We are not supported nor endorsed by Pallets.
+    HTML
+
+    self.release = '8.1.x'
+    self.base_url = "https://click.palletsprojects.com/en/#{self.release}/"
+
+    def get_latest_version(opts)
+      get_latest_github_release('pallets', 'click', opts)
+    end
+  end
+end

BIN
public/icons/docs/click/16.png


BIN
public/icons/docs/click/16@2x.png


+ 1 - 0
public/icons/docs/click/SOURCE

@@ -0,0 +1 @@
+https://github.com/pallets/click/blob/main/docs/_static/click-icon.png