Browse Source

Merge pull request #2180 from snzow/main

Add NextJs Documentation
Simon Legner 1 year ago
parent
commit
ab9382ee5b

+ 4 - 0
assets/javascripts/news.json

@@ -1,4 +1,8 @@
 [
+  [
+    "2024-02-20",
+    "New documentation: <a href=\"/nextjs/\">Nextjs</a>"
+  ],
   [
     "2024-01-24",
     "New documentation: <a href=\"/playwright/\">Playwright</a>"

+ 19 - 0
lib/docs/filters/nextjs/clean_html.rb

@@ -0,0 +1,19 @@
+module Docs
+    class Nextjs
+        class CleanHtmlFilter < Filter
+            def call
+                css('.zola-anchor').remove
+                doc.prepend_child("<h1>NextJS2</h1>") if root_page?
+                css('div:contains("NEWS:")').remove
+                css('h2:contains("sponsors"), #sponsor-table').remove
+                css('div.sticky').remove #remove the floating menu
+                css('div.-mt-4').remove #remove the navigation line
+                css('footer').remove
+                css('div.feedback_inlineTriggerWrapper__o7yUx').remove
+                css('header').remove #remove links from the top of the page
+                css('nav').remove
+                doc
+            end
+        end
+    end
+end

+ 43 - 0
lib/docs/filters/nextjs/entries.rb

@@ -0,0 +1,43 @@
+module Docs
+  class Nextjs
+    class EntriesFilter < Docs::EntriesFilter
+      def get_name
+        name = at_css('h1').content
+        name.strip!
+        #name
+        subpath_items = subpath.split('/', -1)
+        if subpath_items.length >= 5
+          subpath_items[3].capitalize + ': ' + name # e.g. Routing: Defining Routes
+        else
+          name
+        end
+      end
+
+      def get_type
+        if subpath.include?('/architecture')
+          'Architecture'
+        elsif subpath.include?('/community')
+          'Community'
+        elsif subpath.include?('/getting-started')
+          'Getting Started'
+        elsif subpath.include?('/messages')
+          'Messages'
+        elsif subpath.include?('/app/building-your-application')
+          'Using App Router: Building your application'
+        elsif subpath.include?('/app/api-reference')
+          'Using App Router: api-reference'
+        elsif subpath.include?('/app')
+          'Using App Router'
+        elsif subpath.include?('/pages/building-your-application')
+          'Using Pages Router: Building your application'
+        elsif subpath.include?('/pages/api-reference')
+          'Using Pages Router: api-reference'
+        elsif subpath.include?('/pages')
+          'Using Pages Router'
+        else
+          get_name
+        end
+      end
+    end
+  end
+end

+ 20 - 0
lib/docs/scrapers/nextjs.rb

@@ -0,0 +1,20 @@
+module Docs
+    class Nextjs < UrlScraper
+        self.name = 'NextJS'
+        self.type = 'simple'
+        self.release = 'v14.1.0'
+        self.base_url = 'https://nextjs.org/docs'
+        self.initial_paths = %w(reference/)
+        self.links = {
+          home: 'https://www.nextjs.org/',
+          code: 'https://github.com/vercel/next.js'
+        }
+
+        html_filters.push 'nextjs/entries', 'nextjs/clean_html'
+
+        options[:attribution] = <<-HTML
+          &copy; 2024 Vercel, Inc.
+          Licensed under the MIT License.
+        HTML
+    end
+end

+ 6 - 0
package-lock.json

@@ -0,0 +1,6 @@
+{
+  "name": "devdocs",
+  "lockfileVersion": 3,
+  "requires": true,
+  "packages": {}
+}

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


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


+ 2 - 0
public/icons/docs/nextjs/SOURCE

@@ -0,0 +1,2 @@
+https://assets.vercel.com/image/upload/v1662130559/nextjs/Icon_dark_background.png
+https://github.com/vercel/next.js/blob/canary/examples/cms-enterspeed/public/favicon/favicon.ico