diff --git a/assets/javascripts/news.json b/assets/javascripts/news.json index 43958e1a..077180c9 100644 --- a/assets/javascripts/news.json +++ b/assets/javascripts/news.json @@ -1,7 +1,7 @@ [ [ "2022-08-27", - "New documentations: Sanctuary" + "New documentations: Sanctuary, Requests" ], [ "2022-05-03", diff --git a/assets/javascripts/templates/pages/about_tmpl.coffee b/assets/javascripts/templates/pages/about_tmpl.coffee index 20dd3f84..b3b7136c 100644 --- a/assets/javascripts/templates/pages/about_tmpl.coffee +++ b/assets/javascripts/templates/pages/about_tmpl.coffee @@ -766,6 +766,11 @@ credits = [ '2015-2022 Dan Abramov', 'MIT', 'https://raw.githubusercontent.com/reactjs/redux/master/LICENSE.md' + ], [ + 'Requests', + '2011-2022 Kenneth Reitz and other contributors', + 'Apache', + 'https://raw.githubusercontent.com/psf/requests/main/LICENSE' ], [ 'RequireJS', 'jQuery Foundation and other contributors', diff --git a/assets/stylesheets/pages/_sphinx.scss b/assets/stylesheets/pages/_sphinx.scss index f51e161d..64a4df6b 100644 --- a/assets/stylesheets/pages/_sphinx.scss +++ b/assets/stylesheets/pages/_sphinx.scss @@ -4,7 +4,7 @@ h4 { font-size: 1em; } > dl:not(.docutils) > dt { @extend %block-label, %label-blue; } dd > dl:not(.docutils) > dt { @extend %block-label; } - .class > dt { @extend %block-label, %label-blue; } + .class > dt, #main-interface .function > dt { @extend %block-label, %label-blue; } dt + dt { margin-top: -.5em; } .note, .admonition, div.versionadded, div.versionchanged, .deprecated-removed, .deprecated, .topic { @extend %note; } diff --git a/lib/docs/filters/requests/entries.rb b/lib/docs/filters/requests/entries.rb new file mode 100755 index 00000000..2bf7e219 --- /dev/null +++ b/lib/docs/filters/requests/entries.rb @@ -0,0 +1,75 @@ +module Docs + class Requests + class EntriesFilter < Docs::EntriesFilter + TYPE_BY_SLUG = {} + + def call + if root_page? + css('.section').each do |node| + type = node.at_css('h2').content[0..-2] + node.css('li > a').each do |n| + s = n['href'].split('/')[-2] + TYPE_BY_SLUG[s] = type + end + end + end + super + end + + def get_name + at_css('h1').content[0..-2] + end + + def get_type + TYPE_BY_SLUG[slug.split('/').first] || 'Other' + end + + def include_default_entry? + slug != 'api/' + end + + def additional_entries + entries = [] + css('dl.function > dt[id]').each do |node| + name = node['id'].split('.').last + '()' + id = node['id'] + type = node['id'].split('.')[0..-2].join('.') + entries << [name, id, type] + end + + css('dl.class > dt[id]').each do |node| + name = node['id'].split('.').last + id = node['id'] + type = node['id'].split('.')[0..-2].join('.') + entries << [name, id, type] + end + + css('dl.attribute > dt[id]').each do |node| + name = node['id'].split('.')[-2..-1].join('.') + id = node['id'] + type = node['id'].split('.')[0..-3].join('.') + type = 'requests' if type == '' + entries << [name, id, type] + end + + css('dl.data > dt[id]').each do |node| + name = node['id'] + id = node['id'] + type = node['id'].split('.')[0..-3].join('.') + type = 'requests' if type == '' + type = 'Configuration' if slug == 'config/' + entries << [name, id, type] + end + + css('dl.method > dt[id]').each do |node| + name = node['id'].split('.')[-2..-1].join('.') + '()' + id = node['id'] + type = node['id'].split('.')[0..-3].join('.') + entries << [name, id, type] + end + entries + end + + end + end +end diff --git a/lib/docs/filters/sphinx/clean_html.rb b/lib/docs/filters/sphinx/clean_html.rb index 048f6d3b..55cd5c0d 100644 --- a/lib/docs/filters/sphinx/clean_html.rb +++ b/lib/docs/filters/sphinx/clean_html.rb @@ -60,6 +60,7 @@ module Docs css('dt').each do |node| next if current_url.host == 'matplotlib.org' next if current_url.host == 'numpy.org' + next if current_url.host == 'requests.readthedocs.io' next unless node['id'] || node.at_css('code, .classifier') links = [] links << node.children.last.remove while node.children.last.try(:name) == 'a' diff --git a/lib/docs/scrapers/requests.rb b/lib/docs/scrapers/requests.rb new file mode 100755 index 00000000..d031e375 --- /dev/null +++ b/lib/docs/scrapers/requests.rb @@ -0,0 +1,25 @@ +module Docs + class Requests < UrlScraper + self.type = 'sphinx' + self.root_path = 'index.html' + self.links = { + home: 'https://requests.readthedocs.io/', + code: 'https://github.com/psf/requests' + } + self.release = '2.28.1' + self.base_url = "https://requests.readthedocs.io/en/latest/api/" + + html_filters.push 'requests/entries', 'sphinx/clean_html' + + options[:container] = '.body > section' + + options[:attribution] = <<-HTML + © 2011-2022 Kenneth Reitz and other contributors
+ Licensed under the Apache license. + HTML + + def get_latest_version(opts) + get_latest_github_release('psf', 'requests', opts) + end + end +end diff --git a/public/icons/docs/requests/16.png b/public/icons/docs/requests/16.png new file mode 100644 index 00000000..e423927a Binary files /dev/null and b/public/icons/docs/requests/16.png differ diff --git a/public/icons/docs/requests/16@2x.png b/public/icons/docs/requests/16@2x.png new file mode 100644 index 00000000..06a4550f Binary files /dev/null and b/public/icons/docs/requests/16@2x.png differ diff --git a/public/icons/docs/requests/SOURCE b/public/icons/docs/requests/SOURCE new file mode 100644 index 00000000..eeae972f --- /dev/null +++ b/public/icons/docs/requests/SOURCE @@ -0,0 +1 @@ +https://requests.readthedocs.io/en/latest/_static/requests-sidebar.png