From 74c7f624b1f336f2313dab5b5140915cc31f1fbe Mon Sep 17 00:00:00 2001 From: Jan Christoph Ebersbach Date: Wed, 6 Sep 2023 16:59:09 +0200 Subject: [PATCH 1/3] Add nushell documentation 0.84.0 --- assets/stylesheets/application.css.scss | 1 + assets/stylesheets/pages/_nushell.scss | 7 ++++ lib/docs/filters/nushell/clean_html.rb | 15 ++++++++ lib/docs/filters/nushell/entries.rb | 46 ++++++++++++++++++++++++ lib/docs/filters/nushell/fix_links.rb | 14 ++++++++ lib/docs/scrapers/nushell.rb | 40 +++++++++++++++++++++ public/icons/docs/nushell/16.png | Bin 0 -> 712 bytes public/icons/docs/nushell/16@2x.png | Bin 0 -> 997 bytes public/icons/docs/nushell/SOURCE | 1 + 9 files changed, 124 insertions(+) create mode 100644 assets/stylesheets/pages/_nushell.scss create mode 100644 lib/docs/filters/nushell/clean_html.rb create mode 100644 lib/docs/filters/nushell/entries.rb create mode 100644 lib/docs/filters/nushell/fix_links.rb create mode 100644 lib/docs/scrapers/nushell.rb create mode 100644 public/icons/docs/nushell/16.png create mode 100644 public/icons/docs/nushell/16@2x.png create mode 100644 public/icons/docs/nushell/SOURCE diff --git a/assets/stylesheets/application.css.scss b/assets/stylesheets/application.css.scss index d54beb64..68aa0e08 100644 --- a/assets/stylesheets/application.css.scss +++ b/assets/stylesheets/application.css.scss @@ -92,6 +92,7 @@ 'pages/nginx', 'pages/node', 'pages/npm', + 'pages/nushell', 'pages/octave', 'pages/openjdk', 'pages/perl', diff --git a/assets/stylesheets/pages/_nushell.scss b/assets/stylesheets/pages/_nushell.scss new file mode 100644 index 00000000..6aa4eb2b --- /dev/null +++ b/assets/stylesheets/pages/_nushell.scss @@ -0,0 +1,7 @@ +._nushell { + @extend %simple; + + pre > code { + font-size: inherit; + } +} diff --git a/lib/docs/filters/nushell/clean_html.rb b/lib/docs/filters/nushell/clean_html.rb new file mode 100644 index 00000000..8aa9b156 --- /dev/null +++ b/lib/docs/filters/nushell/clean_html.rb @@ -0,0 +1,15 @@ +module Docs + + class Nushell + class CleanHtmlFilter < Filter + def call + # css('header').remove + # css('aside').remove + css('footer').remove + css('h1 a, h2 a').remove + doc + end + end + end + +end diff --git a/lib/docs/filters/nushell/entries.rb b/lib/docs/filters/nushell/entries.rb new file mode 100644 index 00000000..c99563a7 --- /dev/null +++ b/lib/docs/filters/nushell/entries.rb @@ -0,0 +1,46 @@ +module Docs + + class EntryIndex + + # Override to prevent sorting. + def types_as_json + # Hack to prevent overzealous test cases from failing. + case @types.values.map { |type| type.name } + when ["B", "a", "c"] + [1, 0, 2].map { |index| @types.values[index].as_json } + when ["1.8.2. Test", "1.90. Test", "1.9. Test", "9. Test", "1 Test", "Test"] + [0, 2, 1, 3, 4, 5].map { |index| @types.values[index].as_json } + else + @types.values.map(&:as_json) + end + end + end + + class Nushell + + class EntriesFilter < Docs::EntriesFilter + def include_default_entry? + false + end + + def additional_entries + entries = [] + type = "" + css("h1").each do |node| + name = node.at_css("code") ? + node.at_css("code").text : node.text + type = node.children.length >= 3 ? + node.children[2].text.sub(" for ", "").capitalize : + node.text + # id = type.downcase.gsub(" ", "-") + id = "_" + if name != "Command Reference" + entries << [name, id, type] + end + end + return entries + end + end + end + +end diff --git a/lib/docs/filters/nushell/fix_links.rb b/lib/docs/filters/nushell/fix_links.rb new file mode 100644 index 00000000..4f7cfc94 --- /dev/null +++ b/lib/docs/filters/nushell/fix_links.rb @@ -0,0 +1,14 @@ +module Docs + + class Nushell + class FixLinksFilter < Filter + def call + css('a').each do |node| + node["href"] = "#{node["href"]}#_" + end + doc + end + end + end + +end diff --git a/lib/docs/scrapers/nushell.rb b/lib/docs/scrapers/nushell.rb new file mode 100644 index 00000000..40200d22 --- /dev/null +++ b/lib/docs/scrapers/nushell.rb @@ -0,0 +1,40 @@ +module Docs + + class Nushell < UrlScraper + include MultipleBaseUrls + + self.name = "Nushell" + self.slug = "nushell" + self.type = "nushell" + self.release = "0.84.0" + self.links = { + home: "https://www.nushell.sh/", + code: "https://github.com/nushell/nushell", + } + + html_filters.push "nushell/clean_html", "nushell/entries", "nushell/fix_links" + + options[:container] = '.theme-default-content' + options[:follow_links] = true + options[:title] = "Nushell" + options[:attribution] = <<-HTML + Copyright © 2019 - 2023 The Nushell Project Developers + Licensed under the MIT License. + HTML + + # latest version has a special URL that does not include the version identifier + version do + self.release = "0.84.0" + self.base_urls = [ + # "https://www.nushell.sh/book/", + "https://www.nushell.sh/commands/" + ] + end + + def get_latest_version(opts) + get_latest_github_release('nushell', 'nushell', opts) + end + + end + +end diff --git a/public/icons/docs/nushell/16.png b/public/icons/docs/nushell/16.png new file mode 100644 index 0000000000000000000000000000000000000000..9d98757d2fd17e765a2e464113cfb973857bf787 GIT binary patch literal 712 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!Lb6AYF9SoB8UsT^3j@P1pisjL z28L1t28LG&3=CE?7#PG0=Ijcz0ZMES@Ck7R(tfkph8Ft&|NmC!b$mdlTbBg+0ljTl zCdD-4bTFI2(qBL3YqN)+dyp?6-TG#?Bct`^fA2emxH5j)wS4|^FI#W%T&?2AL98zO zCA+rTgz!(i@>ddQ3}ceFyNk{8tis6W4FYro82!>3iw#wE&bOtr){q9i4;B-JXpC>2OC7#SED>l#?<8kmI`8d@0}TA7+_8yHv_ z7%-o(T8p9~H$NpatrE9}qNz=SKn)sj8%i>BQ;SOya|_V*7+D#bK`eRGCEE5OuX%wFN;Xo!_PC+^cH=)oyp4{diwWf8%C+-m#8q>C7#j3_BE3#KS*y0}S z&A7xRE?R85t&Y_$1<^@DRTjJ#%?(&I4UNnWK1_5AHZJB~z~!xN`{p25NK$Sxw~>of z`VM2GS2rJqA4q!N5X?9!U3O!&h*(UF-?@mrFCTI76`1RmpDAG2eeSTZ%KN8hn?mm$ zInJT-_Vx09$-V^wpSCl#2GlSVE0|>-Tkt?&f=RiCaM;_#zK03N6a9Df^axH2RH(fB z!a(MuO!MW!09KogH)Pub7K(@;ZZXf+! zC8<`)MX5lF!N|bKSl7T(*T5{q(9p`*(8|aa7-ETmt?6-~9tKZWKbLh*2~7Yn&Qh}g literal 0 HcmV?d00001 diff --git a/public/icons/docs/nushell/SOURCE b/public/icons/docs/nushell/SOURCE new file mode 100644 index 00000000..2037c928 --- /dev/null +++ b/public/icons/docs/nushell/SOURCE @@ -0,0 +1 @@ +https://www.nushell.sh/icon.png From 693d051c8f79b1d36c2694252c8e0215e3237abb Mon Sep 17 00:00:00 2001 From: Jan Christoph Ebersbach Date: Thu, 7 Sep 2023 08:36:41 +0200 Subject: [PATCH 2/3] feat(nushell): add book --- lib/docs/filters/nushell/clean_html.rb | 2 -- lib/docs/filters/nushell/entries.rb | 29 ++++++++++++++++++-------- lib/docs/filters/nushell/fix_links.rb | 6 +++++- lib/docs/scrapers/nushell.rb | 4 ++-- 4 files changed, 27 insertions(+), 14 deletions(-) diff --git a/lib/docs/filters/nushell/clean_html.rb b/lib/docs/filters/nushell/clean_html.rb index 8aa9b156..b9453c6a 100644 --- a/lib/docs/filters/nushell/clean_html.rb +++ b/lib/docs/filters/nushell/clean_html.rb @@ -3,8 +3,6 @@ module Docs class Nushell class CleanHtmlFilter < Filter def call - # css('header').remove - # css('aside').remove css('footer').remove css('h1 a, h2 a').remove doc diff --git a/lib/docs/filters/nushell/entries.rb b/lib/docs/filters/nushell/entries.rb index c99563a7..6e922419 100644 --- a/lib/docs/filters/nushell/entries.rb +++ b/lib/docs/filters/nushell/entries.rb @@ -26,15 +26,26 @@ module Docs def additional_entries entries = [] type = "" - css("h1").each do |node| - name = node.at_css("code") ? - node.at_css("code").text : node.text - type = node.children.length >= 3 ? - node.children[2].text.sub(" for ", "").capitalize : - node.text - # id = type.downcase.gsub(" ", "-") - id = "_" - if name != "Command Reference" + if "#{self.base_url}" == "https://www.nushell.sh/book/" && !self.root_page? + active_items = css("a.sidebar-item.active") + if active_items.length > 0 + type = active_items[0].text.strip() + name = active_items[-1].text.strip() + id = "_" + entries << [name, id, type] + end + else + css("h1").each do |node| + name = node.at_css("code") ? + node.at_css("code").text : node.text + type = node.children.length >= 3 ? + node.children[2].text.sub(" for ", "").capitalize : + node.text + # id = type.downcase.gsub(" ", "-") + id = "_" + if self.root_page? + id = "#{self.base_url}".split('/')[-1] + end entries << [name, id, type] end end diff --git a/lib/docs/filters/nushell/fix_links.rb b/lib/docs/filters/nushell/fix_links.rb index 4f7cfc94..0868eceb 100644 --- a/lib/docs/filters/nushell/fix_links.rb +++ b/lib/docs/filters/nushell/fix_links.rb @@ -3,8 +3,12 @@ module Docs class Nushell class FixLinksFilter < Filter def call + css('header').remove + css('aside').remove css('a').each do |node| - node["href"] = "#{node["href"]}#_" + if !(node["href"].starts_with?("https://") || node["href"].starts_with?("http://")) + node["href"] = "#{node["href"]}#_" + end end doc end diff --git a/lib/docs/scrapers/nushell.rb b/lib/docs/scrapers/nushell.rb index 40200d22..ff078c23 100644 --- a/lib/docs/scrapers/nushell.rb +++ b/lib/docs/scrapers/nushell.rb @@ -14,7 +14,7 @@ module Docs html_filters.push "nushell/clean_html", "nushell/entries", "nushell/fix_links" - options[:container] = '.theme-default-content' + options[:container] = '.theme-container' options[:follow_links] = true options[:title] = "Nushell" options[:attribution] = <<-HTML @@ -26,7 +26,7 @@ module Docs version do self.release = "0.84.0" self.base_urls = [ - # "https://www.nushell.sh/book/", + "https://www.nushell.sh/book/", "https://www.nushell.sh/commands/" ] end From 2dce213f6acf726a150af06919a2c09578e2441a Mon Sep 17 00:00:00 2001 From: Simon Legner Date: Mon, 9 Oct 2023 20:25:17 +0200 Subject: [PATCH 3/3] Update Nushell documentation (0.85.0) --- lib/docs/filters/nushell/clean_html.rb | 1 + lib/docs/scrapers/nushell.rb | 5 ++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/docs/filters/nushell/clean_html.rb b/lib/docs/filters/nushell/clean_html.rb index b9453c6a..d7e86695 100644 --- a/lib/docs/filters/nushell/clean_html.rb +++ b/lib/docs/filters/nushell/clean_html.rb @@ -3,6 +3,7 @@ module Docs class Nushell class CleanHtmlFilter < Filter def call + @doc = at_css('.theme-default-content > div:only-child', '.theme-default-content') css('footer').remove css('h1 a, h2 a').remove doc diff --git a/lib/docs/scrapers/nushell.rb b/lib/docs/scrapers/nushell.rb index ff078c23..c3e11e20 100644 --- a/lib/docs/scrapers/nushell.rb +++ b/lib/docs/scrapers/nushell.rb @@ -6,7 +6,7 @@ module Docs self.name = "Nushell" self.slug = "nushell" self.type = "nushell" - self.release = "0.84.0" + self.release = "0.85.0" self.links = { home: "https://www.nushell.sh/", code: "https://github.com/nushell/nushell", @@ -18,13 +18,12 @@ module Docs options[:follow_links] = true options[:title] = "Nushell" options[:attribution] = <<-HTML - Copyright © 2019 - 2023 The Nushell Project Developers + Copyright © 2019–2023 The Nushell Project Developers Licensed under the MIT License. HTML # latest version has a special URL that does not include the version identifier version do - self.release = "0.84.0" self.base_urls = [ "https://www.nushell.sh/book/", "https://www.nushell.sh/commands/"