diff --git a/assets/javascripts/news.json b/assets/javascripts/news.json index 5f3d303b5d..ab349bc8a5 100644 --- a/assets/javascripts/news.json +++ b/assets/javascripts/news.json @@ -1,4 +1,8 @@ [ + [ + "2026-07-27", + "New documentation: Tokio" + ], [ "2026-07-09", "New documentation: MapLibre GL JS" diff --git a/assets/stylesheets/application.css.scss b/assets/stylesheets/application.css.scss index 5dd9f6c99b..13630eea4b 100644 --- a/assets/stylesheets/application.css.scss +++ b/assets/stylesheets/application.css.scss @@ -126,6 +126,7 @@ @use 'pages/tcl_tk'; @use 'pages/tensorflow'; @use 'pages/terraform'; +@use 'pages/tokio'; @use 'pages/typescript'; @use 'pages/underscore'; @use 'pages/vue'; diff --git a/assets/stylesheets/pages/_tokio.scss b/assets/stylesheets/pages/_tokio.scss new file mode 100644 index 0000000000..6c9f50dba4 --- /dev/null +++ b/assets/stylesheets/pages/_tokio.scss @@ -0,0 +1,10 @@ +@use 'pages/simple'; + +._tokio { + @extend %simple; + + .stab { + @extend %note; + @extend %note-orange; + } +} diff --git a/lib/docs/filters/tokio/clean_html.rb b/lib/docs/filters/tokio/clean_html.rb new file mode 100644 index 0000000000..d7a88fde0f --- /dev/null +++ b/lib/docs/filters/tokio/clean_html.rb @@ -0,0 +1,32 @@ +module Docs + class Tokio + class CleanHtmlFilter < Filter + def call + css('.main-heading h1').each do |node| + node.parent.replace(node) + end + + doc.css( + 'a.doc-anchor', + 'a.anchor', + 'a.src', + 'button#copy-path', + '.rustdoc-breadcrumbs', + '.sub-heading' + ).remove + + doc.css('pre.rust').each do |code| + code['data-language'] = 'rust' + end + + # Get rid of toggles hiding useful info. + doc.css('details').each do |node| + node.name = 'div' + end + doc.css('summary.hideme').remove + + doc + end + end + end +end diff --git a/lib/docs/filters/tokio/entries.rb b/lib/docs/filters/tokio/entries.rb new file mode 100644 index 0000000000..3d7814f7b7 --- /dev/null +++ b/lib/docs/filters/tokio/entries.rb @@ -0,0 +1,35 @@ +module Docs + class Tokio + class EntriesFilter < Docs::EntriesFilter + def get_name + namespace = at_css('.rustdoc-breadcrumbs').inner_text + header = at_css('h1 > span').inner_text + "#{namespace}::#{header}" + end + + def get_type + header = at_css('h1').inner_text + + if header.include?('Attribute Macro') + 'Attribute Macros' + elsif header.include?('Macro') + 'Macros' + elsif header.include?('Module') + 'Modules' + elsif header.include?('Struct') + 'Structs' + elsif header.include?('Function') + 'Functions' + elsif header.include?('Enum') + 'Enums' + elsif header.include?('Trait') + 'Traits' + elsif header.include?('Type') + 'Types' + else + 'Other' + end + end + end + end +end diff --git a/lib/docs/scrapers/tokio.rb b/lib/docs/scrapers/tokio.rb new file mode 100644 index 0000000000..6cf56d019e --- /dev/null +++ b/lib/docs/scrapers/tokio.rb @@ -0,0 +1,31 @@ +module Docs + class Tokio < UrlScraper + self.name = 'Tokio' + self.type = 'tokio' + self.root_path = 'index.html' + self.links = { + home: 'https://tokio.rs/', + code: 'https://github.com/tokio-rs/tokio' + } + + html_filters.push 'tokio/entries', 'tokio/clean_html' + + options[:rate_limit] = 50 + options[:container] = 'section.content' + options[:skip_patterns] = [/\/next|\/\d\.\d*/, /rabbitmq\//] + options[:attribution] = <<-HTML + MIT License
+ Copyright © Tokio Contributors + HTML + + version do + self.release = '1.53.1' + self.base_url = "https://docs.rs/tokio/#{self.release}/tokio/" + end + + def get_latest_version(opts) + doc = fetch_doc('https://docs.rs/tokio/latest/tokio/index.html', opts) + doc.at_css('h2 > .version').content.strip + end + end +end diff --git a/public/icons/docs/tokio/16.png b/public/icons/docs/tokio/16.png new file mode 100644 index 0000000000..830b4021d5 Binary files /dev/null and b/public/icons/docs/tokio/16.png differ diff --git a/public/icons/docs/tokio/16@2x.png b/public/icons/docs/tokio/16@2x.png new file mode 100644 index 0000000000..f593b8573d Binary files /dev/null and b/public/icons/docs/tokio/16@2x.png differ diff --git a/public/icons/docs/tokio/SOURCE b/public/icons/docs/tokio/SOURCE new file mode 100644 index 0000000000..e09093716f --- /dev/null +++ b/public/icons/docs/tokio/SOURCE @@ -0,0 +1 @@ +https://upload.wikimedia.org/wikipedia/commons/6/60/Tokio_logo.svg