Merge branch 'master' into master

pull/1255/head
Simon Legner 4 years ago committed by GitHub
commit 44eb7ec32a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -0,0 +1,4 @@
# This controls who gets notified for review and allows branches to be protected.
# Protected branches can only be merged into after being approved by a codeowner.
* @freeCodeCamp/devdocs

@ -26,7 +26,7 @@ GEM
eventmachine (1.2.7) eventmachine (1.2.7)
execjs (2.7.0) execjs (2.7.0)
exifr (1.3.6) exifr (1.3.6)
ffi (1.11.1) ffi (1.12.2)
fspath (3.1.2) fspath (3.1.2)
highline (2.0.3) highline (2.0.3)
html-pipeline (2.12.0) html-pipeline (2.12.0)

@ -4,6 +4,10 @@ DevDocs combines multiple developer documentations in a clean and organized web
DevDocs was created by [Thibaut Courouble](https://thibaut.me) and is operated by [freeCodeCamp](https://www.freecodecamp.org). DevDocs was created by [Thibaut Courouble](https://thibaut.me) and is operated by [freeCodeCamp](https://www.freecodecamp.org).
## We are currently searching for maintainers
Please reach out to the community on [Gitter](https://gitter.im/FreeCodeCamp/DevDocs) if you would like to join the team!
Keep track of development news: Keep track of development news:
* Join the contributor chat room on [Gitter](https://gitter.im/FreeCodeCamp/DevDocs) * Join the contributor chat room on [Gitter](https://gitter.im/FreeCodeCamp/DevDocs)

@ -22,7 +22,7 @@ app.templates.aboutPage = -> """
<h2 class="_block-heading" id="copyright">Copyright and License</h2> <h2 class="_block-heading" id="copyright">Copyright and License</h2>
<p class="_note"> <p class="_note">
<strong>Copyright 2013&ndash;2019 Thibaut Courouble and <a href="https://github.com/freeCodeCamp/devdocs/graphs/contributors">other contributors</a></strong><br> <strong>Copyright 2013&ndash;2020 Thibaut Courouble and <a href="https://github.com/freeCodeCamp/devdocs/graphs/contributors">other contributors</a></strong><br>
This software is licensed under the terms of the Mozilla Public License v2.0.<br> This software is licensed under the terms of the Mozilla Public License v2.0.<br>
You may obtain a copy of the source code at <a href="https://github.com/freeCodeCamp/devdocs">github.com/freeCodeCamp/devdocs</a>.<br> You may obtain a copy of the source code at <a href="https://github.com/freeCodeCamp/devdocs">github.com/freeCodeCamp/devdocs</a>.<br>
For more information, see the <a href="https://github.com/freeCodeCamp/devdocs/blob/master/COPYRIGHT">COPYRIGHT</a> For more information, see the <a href="https://github.com/freeCodeCamp/devdocs/blob/master/COPYRIGHT">COPYRIGHT</a>
@ -82,8 +82,13 @@ app.templates.aboutPage = -> """
""" """
credits = [ credits = [
[ 'Angular<br>Angular.js', [ 'Angular.js',
'2010-2019 Google, Inc.', '2010-2020 Google, Inc.',
'CC BY 3.0',
'https://creativecommons.org/licenses/by/3.0/'
], [
'Angular',
'2010-2020 Google, Inc.',
'CC BY', 'CC BY',
'https://creativecommons.org/licenses/by/4.0/' 'https://creativecommons.org/licenses/by/4.0/'
], [ ], [
@ -378,7 +383,7 @@ credits = [
'https://raw.githubusercontent.com/jekyll/jekyll/master/LICENSE' 'https://raw.githubusercontent.com/jekyll/jekyll/master/LICENSE'
], [ ], [
'Jest', 'Jest',
'Facebook, Inc. and its affiliates.', '2020 Facebook, Inc.',
'MIT', 'MIT',
'https://raw.githubusercontent.com/facebook/jest/master/LICENSE' 'https://raw.githubusercontent.com/facebook/jest/master/LICENSE'
], [ ], [
@ -448,7 +453,7 @@ credits = [
'https://raw.githubusercontent.com/lodash/lodash/master/LICENSE' 'https://raw.githubusercontent.com/lodash/lodash/master/LICENSE'
], [ ], [
'Lua', 'Lua',
'19942017 Lua.org, PUC-Rio', '19942020 Lua.org, PUC-Rio',
'MIT', 'MIT',
'http://www.lua.org/license.html' 'http://www.lua.org/license.html'
], [ ], [
@ -508,7 +513,7 @@ credits = [
'https://github.com/LearnBoost/mongoose/blob/master/README.md#license' 'https://github.com/LearnBoost/mongoose/blob/master/README.md#license'
], [ ], [
'nginx', 'nginx',
'2002-2019 Igor Sysoev<br>&copy; 2011-2019 Nginx, Inc.', '2002-2020 Igor Sysoev<br>&copy; 2011-2020 Nginx, Inc.',
'BSD', 'BSD',
'http://nginx.org/LICENSE' 'http://nginx.org/LICENSE'
], [ ], [
@ -548,7 +553,7 @@ credits = [
'https://octave.org/doc/interpreter/' 'https://octave.org/doc/interpreter/'
], [ ], [
'OpenJDK', 'OpenJDK',
'1993-2017, Oracle and/or its affiliates. All rights reserved.<br>Licensed under the GNU General Public License, version 2, with the Classpath Exception.<br>Various third party code in OpenJDK is licensed under different licenses.<br>Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.', '1993, 2020, Oracle and/or its affiliates. All rights reserved.<br>Licensed under the GNU General Public License, version 2, with the Classpath Exception.<br>Various third party code in OpenJDK is licensed under different licenses.<br>Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.',
'GPLv2', 'GPLv2',
'http://openjdk.java.net/legal/gplv2+ce.html' 'http://openjdk.java.net/legal/gplv2+ce.html'
], [ ], [
@ -603,7 +608,7 @@ credits = [
'https://raw.githubusercontent.com/ponylang/ponyc/master/LICENSE' 'https://raw.githubusercontent.com/ponylang/ponyc/master/LICENSE'
], [ ], [
'PostgreSQL', 'PostgreSQL',
'1996-2019 The PostgreSQL Global Development Group<br>&copy; 1994 The Regents of the University of California', '1996-2020 The PostgreSQL Global Development Group<br>&copy; 1994 The Regents of the University of California',
'PostgreSQL', 'PostgreSQL',
'https://www.postgresql.org/about/licence/' 'https://www.postgresql.org/about/licence/'
], [ ], [

@ -3,7 +3,7 @@
//= depend_on sprites/docs.json //= depend_on sprites/docs.json
/*! /*!
* Copyright 2013-2019 Thibaut Courouble and other contributors * Copyright 2013-2020 Thibaut Courouble and other contributors
* *
* This source code is licensed under the terms of the Mozilla * This source code is licensed under the terms of the Mozilla
* Public License, v. 2.0, a copy of which may be obtained at: * Public License, v. 2.0, a copy of which may be obtained at:

@ -80,6 +80,24 @@ $GS = '/usr/local/opt/ghostscript/bin/gs'; # GhostScript
## OpenJDK ## OpenJDK
https://packages.debian.org/sid/openjdk-11-doc
```sh
mkdir docs/openjdk~11
curl --remote-name http://ftp.debian.org/debian/pool/main/o/openjdk-11/openjdk-11-doc_11.0.9.1+1-1_all.deb
bsdtar --extract --to-stdout --file openjdk-11-doc_11.0.9.1+1-1_all.deb data.tar.xz | \
bsdtar --extract --xz --file - --strip-components=6 --directory=docs/openjdk\~11/ ./usr/share/doc/openjdk-11-jre-headless/api/
```
https://packages.debian.org/sid/openjdk-8-doc
```sh
mkdir docs/openjdk~8
curl --remote-name http://ftp.debian.org/debian/pool/main/o/openjdk-8/openjdk-8-doc_8u272-b10-1_all.deb
bsdtar --extract --to-stdout --file openjdk-8-doc_8u272-b10-1_all.deb data.tar.xz | \
bsdtar --extract --xz --file - --strip-components=6 --directory=docs/openjdk\~8/ ./usr/share/doc/openjdk-8-jre-headless/api/
```
## Perl ## Perl
## PHP ## PHP

@ -220,6 +220,8 @@ module Docs
if opts.key?(:github_token) and url.start_with?('https://api.github.com/') if opts.key?(:github_token) and url.start_with?('https://api.github.com/')
headers['Authorization'] = "token #{opts[:github_token]}" headers['Authorization'] = "token #{opts[:github_token]}"
elsif ENV['GITHUB_TOKEN'] and url.start_with?('https://api.github.com/')
headers['Authorization'] = "token #{ENV['GITHUB_TOKEN']}"
end end
opts[:logger].debug("Fetching #{url}") opts[:logger].debug("Fetching #{url}")

@ -7,6 +7,13 @@ module Docs
name.remove! %r{ \- .*} name.remove! %r{ \- .*}
name.remove! 'Introduction To ' name.remove! 'Introduction To '
name.remove! %r{ Guide\z} name.remove! %r{ Guide\z}
if version == "2.10"
if slug =~ /\Acollections\// and slug !~ /index$/
name = name.split('.')[2]
end
end
name name
end end
@ -21,6 +28,12 @@ module Docs
end end
end end
if version == "2.10"
if slug =~ /\Acollections\//
return "Collection #{slug.split('/')[1..-2].join(".")}"
end
end
if slug =~ /\Acli\// if slug =~ /\Acli\//
'CLI Reference' 'CLI Reference'
elsif slug =~ /\Anetwork\// elsif slug =~ /\Anetwork\//

@ -2,7 +2,7 @@ module Docs
class Haxe class Haxe
class CleanHtmlFilter < Filter class CleanHtmlFilter < Filter
def call def call
css('.viewsource', 'hr', 'h1 > small', '.inherited-fields').remove css('.viewsource', 'hr', 'h1 > small', '.inherited-fields', '.label-meta').remove
css('h4 + h1').each do |node| css('h4 + h1').each do |node|
node.after(node.previous_element) node.after(node.previous_element)
@ -28,8 +28,10 @@ module Docs
end end
css('.field').each do |node| css('.field').each do |node|
h3 = node.at_css('h3:not(:empty)')
next unless h3.present?
link = node.at_css('a[name]') link = node.at_css('a[name]')
node.at_css('h3:not(:empty)')['id'] = link['name'] h3['id'] = link['name']
link.before(link.children).remove link.before(link.children).remove
node.before(node.children).remove node.before(node.children).remove
end end

@ -19,6 +19,7 @@ module Docs
def additional_entries def additional_entries
return [] unless !root_page? && self.type == self.name # api page return [] unless !root_page? && self.type == self.name # api page
return [] if self.slug == 'environment-variables'
entries = [] entries = []

@ -8,25 +8,25 @@ module Docs
node.name = 'h2' node.name = 'h2'
end end
at_css('> h2:first-child').name = 'h1' # remove "This reference reflects Leaflet"
css('p:contains("This reference reflects Leaflet")').each do |node|
# remove "This reference reflects Leaflet 1.2.0."
css('h1 ~ p').each do |node|
node.remove node.remove
break break
end end
at_css('> h2:first-child').name = 'h1'
css('section', 'code b', '.accordion', '.accordion-overflow', '.accordion-content').each do |node| css('section', 'code b', '.accordion', '.accordion-overflow', '.accordion-content').each do |node|
node.before(node.children).remove node.before(node.children).remove
end end
css('pre > code').each do |node| css('pre > code').each do |node|
node['class'] ||= '' node['class'] ||= ''
lang = if node['class'].include?('lang-html') || node.content =~ /\A</ lang = if node['class'].include?('lang-html') || node['class'].include?('language-html') || node.content =~ /\A</
'html' 'html'
elsif node['class'].include?('lang-css') elsif node['class'].include?('lang-css') || node['class'].include?('language-css')
'css' 'css'
elsif node['class'].include?('lang-js') || node['class'].include?('lang-javascript') elsif node['class'].include?('lang-js') || node['class'].include?('language-js') || node['class'].include?('lang-javascript')
'javascript' 'javascript'
end end
node.parent['data-language'] = lang if lang node.parent['data-language'] = lang if lang

@ -33,7 +33,7 @@ module Docs
node.content = node.content.remove(' Summary').remove(' Detail').pluralize node.content = node.content.remove(' Summary').remove(' Detail').pluralize
end end
if root_page? if root_page? && version == '8'
css('.header')[1].remove css('.header')[1].remove
css('.contentContainer')[0].remove css('.contentContainer')[0].remove
css('.contentContainer')[-1].remove css('.contentContainer')[-1].remove
@ -45,7 +45,10 @@ module Docs
end end
end end
at_css('h1').content = "OpenJDK #{release} Documentation" + (version != release ? " (#{version.split(' ').last})" : '') end
if root_page?
at_css('h1').content = "OpenJDK #{release} Documentation"
end end
css('table').each do |node| css('table').each do |node|

@ -11,7 +11,7 @@ module Docs
options[:max_image_size] = 256_000 options[:max_image_size] = 256_000
options[:attribution] = <<-HTML options[:attribution] = <<-HTML
&copy; 2010&ndash;2019 Google, Inc.<br> &copy; 2010&ndash;2020 Google, Inc.<br>
Licensed under the Creative Commons Attribution License 4.0. Licensed under the Creative Commons Attribution License 4.0.
HTML HTML
@ -59,7 +59,7 @@ module Docs
end end
version do version do
self.release = '8.2.14' self.release = '11.0.0'
self.base_url = 'https://angular.io/' self.base_url = 'https://angular.io/'
self.root_path = 'docs' self.root_path = 'docs'
@ -78,6 +78,66 @@ module Docs
include Docs::Angular::Common include Docs::Angular::Common
end end
version '10' do
self.release = '10.2.3'
self.base_url = 'https://v10.angular.io/'
self.root_path = 'docs'
html_filters.push 'angular/clean_html', 'angular/entries'
options[:follow_links] = false
options[:only_patterns] = [/\Aguide/, /\Atutorial/, /\Aapi/]
options[:fix_urls_before_parse] = ->(url) do
url.sub! %r{\Aguide/}, '/guide/'
url.sub! %r{\Atutorial/}, '/tutorial/'
url.sub! %r{\Aapi/}, '/api/'
url.sub! %r{\Agenerated/}, '/generated/'
url
end
include Docs::Angular::Common
end
version '9' do
self.release = '9.1.12'
self.base_url = 'https://v9.angular.io/'
self.root_path = 'docs'
html_filters.push 'angular/clean_html', 'angular/entries'
options[:follow_links] = false
options[:only_patterns] = [/\Aguide/, /\Atutorial/, /\Aapi/]
options[:fix_urls_before_parse] = ->(url) do
url.sub! %r{\Aguide/}, '/guide/'
url.sub! %r{\Atutorial/}, '/tutorial/'
url.sub! %r{\Aapi/}, '/api/'
url.sub! %r{\Agenerated/}, '/generated/'
url
end
include Docs::Angular::Common
end
version '8' do
self.release = '8.2.14'
self.base_url = 'https://v8.angular.io/'
self.root_path = 'docs'
html_filters.push 'angular/clean_html', 'angular/entries'
options[:follow_links] = false
options[:only_patterns] = [/\Aguide/, /\Atutorial/, /\Aapi/]
options[:fix_urls_before_parse] = ->(url) do
url.sub! %r{\Aguide/}, '/guide/'
url.sub! %r{\Atutorial/}, '/tutorial/'
url.sub! %r{\Aapi/}, '/api/'
url.sub! %r{\Agenerated/}, '/generated/'
url
end
include Docs::Angular::Common
end
version '7' do version '7' do
self.release = '7.2.15' self.release = '7.2.15'
self.base_url = 'https://v7.angular.io/' self.base_url = 'https://v7.angular.io/'

@ -38,8 +38,8 @@ module Docs
] ]
options[:attribution] = <<-HTML options[:attribution] = <<-HTML
&copy; 2010&ndash;2018 Google, Inc.<br> &copy; 2010&ndash;2020 Google, Inc.<br>
Licensed under the Creative Commons Attribution License 4.0. Licensed under the Creative Commons Attribution License 3.0.
HTML HTML
stub '' do stub '' do
@ -49,6 +49,11 @@ module Docs
capybara.execute_script("return document.querySelector('.side-navigation').innerHTML") capybara.execute_script("return document.querySelector('.side-navigation').innerHTML")
end end
version '1.8' do
self.release = '1.8.2'
self.base_url = "https://code.angularjs.org/#{release}/docs/partials/"
end
version '1.7' do version '1.7' do
self.release = '1.7.8' self.release = '1.7.8'
self.base_url = "https://code.angularjs.org/#{release}/docs/partials/" self.base_url = "https://code.angularjs.org/#{release}/docs/partials/"

@ -30,18 +30,23 @@ module Docs
/\Aroadmap.*/i, /\Aroadmap.*/i,
] ]
version '2.10' do
self.release = '2.10.3'
self.base_url = "https://docs.ansible.com/ansible/#{version}/"
end
version '2.9' do version '2.9' do
self.release = '2.9.1' self.release = '2.9.15'
self.base_url = "https://docs.ansible.com/ansible/#{version}/" self.base_url = "https://docs.ansible.com/ansible/#{version}/"
end end
version '2.8' do version '2.8' do
self.release = '2.8.7' self.release = '2.8.16'
self.base_url = "https://docs.ansible.com/ansible/#{version}/" self.base_url = "https://docs.ansible.com/ansible/#{version}/"
end end
version '2.7' do version '2.7' do
self.release = '2.7.15' self.release = '2.7.17'
self.base_url = "https://docs.ansible.com/ansible/#{version}/" self.base_url = "https://docs.ansible.com/ansible/#{version}/"
end end
@ -71,7 +76,7 @@ module Docs
def get_latest_version(opts) def get_latest_version(opts)
doc = fetch_doc('https://docs.ansible.com/ansible/latest/index.html', opts) doc = fetch_doc('https://docs.ansible.com/ansible/latest/index.html', opts)
doc.at_css('.DocSiteProduct-CurrentVersion').content.strip doc.at_css('.version').content.strip
end end
end end
end end

@ -24,8 +24,7 @@ module Docs
end end
def get_latest_version(opts) def get_latest_version(opts)
doc = fetch_doc('https://babeljs.io/docs/en/', opts) get_latest_github_release('babel', 'babel', opts)
doc.at_css('a[href="/versions"] > h3').content
end end
end end
end end

@ -49,8 +49,8 @@ module Docs
end end
def get_latest_version(opts) def get_latest_version(opts)
doc = fetch_doc('https://downloads.chef.io/chef', opts) doc = fetch_doc('https://downloads.chef.io/products/infra', opts)
doc.at_css('h1.product-heading > span').content.strip doc.at_css('#versions > option').content.strip
end end
end end
end end

@ -40,9 +40,8 @@ module Docs
end end
def get_latest_version(opts) def get_latest_version(opts)
doc = fetch_doc('https://codeigniter.com/userguide3/changelog.html', opts) tags = get_github_tags('codeigniter4', 'codeigniter4', opts)
header = doc.at_css('#change-log h2') tags[0]['name'][1..-1]
header.content.scan(/([0-9.]+)/)[0][0]
end end
end end
end end

@ -33,7 +33,7 @@ module Docs
def get_latest_version(opts) def get_latest_version(opts)
doc = fetch_doc('https://api.dartlang.org/', opts) doc = fetch_doc('https://api.dartlang.org/', opts)
label = doc.at_css('footer > span').content.strip label = doc.at_css('footer > span').content.strip
label.sub(/Dart /, '') label.sub(/Dart\s*/, '')
end end
end end
end end

@ -260,9 +260,9 @@ module Docs
end end
def get_latest_version(opts) def get_latest_version(opts)
doc = fetch_doc('https://docs.docker.com/', opts) doc = fetch_doc('https://docs.docker.com/engine/release-notes/', opts)
label = doc.at_css('.nav-container button.dropdown-toggle').content.strip latest_version = doc.at_css('.content > section > h1[id^="version-"]').content.strip
label.scan(/([0-9.]+)/)[0][0] latest_version.rpartition(' ')[-1]
end end
end end
end end

@ -126,7 +126,7 @@ module Docs
def get_latest_version(opts) def get_latest_version(opts)
doc = fetch_doc('https://hexdocs.pm/elixir/api-reference.html', opts) doc = fetch_doc('https://hexdocs.pm/elixir/api-reference.html', opts)
doc.at_css('h2.sidebar-projectVersion').content.strip[1..-1] doc.at_css('.sidebar-projectVersion').content.strip[1..-1]
end end
end end
end end

@ -57,8 +57,7 @@ module Docs
end end
def get_latest_version(opts) def get_latest_version(opts)
doc = fetch_doc('https://www.erlang.org/downloads', opts) get_latest_github_release('erlang', 'otp', opts)[4..-1]
doc.at_css('.col-lg-3 > ul > li').content.strip.sub(/OTP /, '')
end end
end end
end end

@ -54,8 +54,7 @@ module Docs
end end
def get_latest_version(opts) def get_latest_version(opts)
doc = fetch_doc('http://fishshell.com/docs/current/index.html', opts) get_latest_github_release('fish-shell', 'fish-shell', opts)
doc.at_css('#toc-index').content.scan(/([0-9.]+)/)[0][0]
end end
end end
end end

@ -18,9 +18,11 @@ module Docs
HTML HTML
def get_latest_version(opts) def get_latest_version(opts)
doc = fetch_doc('https://open-cobol.sourceforge.io/HTML/gnucobpg.html', opts) fetch_doc('https://sourceforge.net/projects/gnucobol/files/gnucobol/', opts)
title = doc.at_css('h1').content .css('#files_list > tbody > tr')
title.scan(/([0-9.]+)/)[0][0] .map { |file| file['title'] }
.sort_by { |version| version.to_f }
.last
end end
end end
end end

@ -37,5 +37,10 @@ module Docs
Distributed under the <a href="https://sourceforge.net/p/gnuplot/gnuplot-main/ci/master/tree/Copyright">gnuplot license</a> (rights to distribute modified versions are withheld). Distributed under the <a href="https://sourceforge.net/p/gnuplot/gnuplot-main/ci/master/tree/Copyright">gnuplot license</a> (rights to distribute modified versions are withheld).
HTML HTML
def get_latest_version(opts)
doc = fetch_doc('http://www.gnuplot.info/download.html', opts)
label = doc.at_css('h2').content.strip
label.sub(/[^0-9.]*/, '')
end
end end
end end

@ -1,7 +1,7 @@
module Docs module Docs
class Go < UrlScraper class Go < UrlScraper
self.type = 'go' self.type = 'go'
self.release = '1.13' self.release = '1.15'
self.base_url = 'https://golang.org/pkg/' self.base_url = 'https://golang.org/pkg/'
self.links = { self.links = {
home: 'https://golang.org/', home: 'https://golang.org/',

@ -44,8 +44,7 @@ module Docs
end end
def get_latest_version(opts) def get_latest_version(opts)
doc = fetch_doc('https://docs.godotengine.org/', opts) get_latest_github_release('godotengine', 'godot', opts).split('-')[0]
doc.at_css('.version').content.strip
end end
end end
end end

@ -2,7 +2,7 @@ module Docs
class Haxe < UrlScraper class Haxe < UrlScraper
self.name = 'Haxe' self.name = 'Haxe'
self.type = 'simple' self.type = 'simple'
self.release = '3.4.7' self.release = '4.1.3'
self.base_url = 'https://api.haxe.org/' self.base_url = 'https://api.haxe.org/'
html_filters.push 'haxe/clean_html', 'haxe/entries' html_filters.push 'haxe/clean_html', 'haxe/entries'
@ -10,7 +10,7 @@ module Docs
options[:container] = '.span9' options[:container] = '.span9'
options[:attribution] = <<-HTML options[:attribution] = <<-HTML
&copy; 2005&ndash;2018 Haxe Foundation<br> &copy; 2005&ndash;2020 Haxe Foundation<br>
Licensed under a MIT license. Licensed under a MIT license.
HTML HTML
@ -20,7 +20,7 @@ module Docs
code: 'https://github.com/HaxeFoundation/haxe' code: 'https://github.com/HaxeFoundation/haxe'
} }
options[:skip_patterns] = [/\A(?:cpp|cs|flash|java|js|neko|php|python|lua|hl|sys)/i] options[:skip_patterns] = [/\A(?:cpp|cs|flash|java|js|neko|php|python|lua|hl|sys|eval)/i]
end end
version 'C++' do version 'C++' do
@ -67,6 +67,10 @@ module Docs
self.base_url = 'https://api.haxe.org/python/' self.base_url = 'https://api.haxe.org/python/'
end end
version 'Eval' do
self.base_url = 'https://api.haxe.org/eval/'
end
def get_latest_version(opts) def get_latest_version(opts)
doc = fetch_doc('https://api.haxe.org/', opts) doc = fetch_doc('https://api.haxe.org/', opts)
label = doc.at_css('.container.main-content h1 > small').content label = doc.at_css('.container.main-content h1 > small').content

@ -48,9 +48,7 @@ module Docs
HTML HTML
def get_latest_version(opts) def get_latest_version(opts)
doc = fetch_doc('https://docs.influxdata.com/influxdb/', opts) get_latest_github_release('influxdata', 'influxdb', opts)
label = doc.at_css('.navbar--current-product').content.strip
label.scan(/([0-9.]+)/)[0][0]
end end
end end
end end

@ -1,7 +1,7 @@
module Docs module Docs
class Jest < UrlScraper class Jest < UrlScraper
self.type = 'simple' self.type = 'simple'
self.release = '24.9' self.release = '26.6'
self.base_url = 'https://jestjs.io/docs/en/' self.base_url = 'https://jestjs.io/docs/en/'
self.root_path = 'getting-started' self.root_path = 'getting-started'
self.links = { self.links = {
@ -14,7 +14,7 @@ module Docs
options[:container] = '.docMainWrapper' options[:container] = '.docMainWrapper'
options[:attribution] = <<-HTML options[:attribution] = <<-HTML
&copy; 2019 Facebook, Inc. and its affiliates.<br> &copy; 2020 Facebook, Inc.<br>
Licensed under the MIT License. Licensed under the MIT License.
HTML HTML

@ -19,6 +19,11 @@ module Docs
Maps &copy; OpenStreetMap contributors. Maps &copy; OpenStreetMap contributors.
HTML HTML
version '1.7' do
self.release = '1.7.1'
self.base_url = "https://leafletjs.com/reference-#{release}.html"
end
version '1.6' do version '1.6' do
self.release = '1.6.0' self.release = '1.6.0'
self.base_url = "https://leafletjs.com/reference-#{release}.html" self.base_url = "https://leafletjs.com/reference-#{release}.html"

@ -8,12 +8,17 @@ module Docs
options[:skip_links] = true options[:skip_links] = true
options[:attribution] = <<-HTML options[:attribution] = <<-HTML
&copy; 1994&ndash;2017 Lua.org, PUC-Rio.<br> &copy; 1994&ndash;2020 Lua.org, PUC-Rio.<br>
Licensed under the MIT License. Licensed under the MIT License.
HTML HTML
version '5.4' do
self.release = '5.4.1'
self.base_url = 'https://www.lua.org/manual/5.4/'
end
version '5.3' do version '5.3' do
self.release = '5.3.4' self.release = '5.3.6'
self.base_url = 'https://www.lua.org/manual/5.3/' self.base_url = 'https://www.lua.org/manual/5.3/'
end end

@ -24,8 +24,7 @@ module Docs
HTML HTML
def get_latest_version(opts) def get_latest_version(opts)
doc = fetch_doc('http://momentjs.com/', opts) get_github_tags('moment', 'moment', opts)[0]['name']
doc.at_css('.hero-title > h1 > span').content
end end
end end
end end

@ -2,7 +2,7 @@ module Docs
class Nginx < UrlScraper class Nginx < UrlScraper
self.name = 'nginx' self.name = 'nginx'
self.type = 'nginx' self.type = 'nginx'
self.release = '1.17.2' self.release = '1.19.3'
self.base_url = 'https://nginx.org/en/docs/' self.base_url = 'https://nginx.org/en/docs/'
self.links = { self.links = {
home: 'https://nginx.org/', home: 'https://nginx.org/',
@ -20,9 +20,10 @@ module Docs
options[:skip_patterns] = [/\/faq\//] options[:skip_patterns] = [/\/faq\//]
# http://nginx.org/LICENSE
options[:attribution] = <<-HTML options[:attribution] = <<-HTML
&copy; 2002-2019 Igor Sysoev<br> &copy; 2002-2020 Igor Sysoev<br>
&copy; 2011-2019 Nginx, Inc.<br> &copy; 2011-2020 Nginx, Inc.<br>
Licensed under the BSD License. Licensed under the BSD License.
HTML HTML

@ -23,7 +23,12 @@ module Docs
HTML HTML
version do version do
self.release = '12.9.1' self.release = '14.15.0'
self.base_url = 'https://nodejs.org/dist/latest-v14.x/docs/api/'
end
version '12 LTS' do
self.release = '12.19.0'
self.base_url = 'https://nodejs.org/dist/latest-v12.x/docs/api/' self.base_url = 'https://nodejs.org/dist/latest-v12.x/docs/api/'
end end

@ -18,13 +18,20 @@ module Docs
/doc-files\//] /doc-files\//]
options[:attribution] = <<-HTML options[:attribution] = <<-HTML
&copy; 1993&ndash;2017, Oracle and/or its affiliates. All rights reserved.<br> &copy; 1993, 2020, Oracle and/or its affiliates. All rights reserved.<br>
Documentation extracted from Debian's OpenJDK Development Kit package.<br> Documentation extracted from Debian's OpenJDK Development Kit package.<br>
Licensed under the GNU General Public License, version 2, with the Classpath Exception.<br> Licensed under the GNU General Public License, version 2, with the Classpath Exception.<br>
Various third party code in OpenJDK is licensed under different licenses (see Debian package).<br> Various third party code in OpenJDK is licensed under different licenses (see Debian package).<br>
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
HTML HTML
version '11' do
self.release = '11.0.9'
self.root_path = 'index.html'
self.base_url = 'https://docs.oracle.com/en/java/javase/11/docs/api/'
options[:only_patterns] = [/\Ajava\./]
end
version '8' do version '8' do
self.release = '8' self.release = '8'

@ -62,9 +62,7 @@ module Docs
end end
def get_latest_version(opts) def get_latest_version(opts)
doc = fetch_doc('http://pandas.pydata.org/pandas-docs/stable/', opts) get_latest_github_release('pandas-dev', 'pandas', opts)
label = doc.at_css('.body > .section > p').content
label.scan(/Version: ([0-9.]+)/)[0][0]
end end
end end
end end

@ -46,8 +46,7 @@ module Docs
def get_latest_version(opts) def get_latest_version(opts)
doc = fetch_doc('https://perldoc.perl.org/', opts) doc = fetch_doc('https://perldoc.perl.org/', opts)
header = doc.at_css('h2.h1').content doc.at_css('#dropdownlink-stable').content
header.scan(/Perl ([0-9.]+)/)[0][0]
end end
end end
end end

@ -68,9 +68,8 @@ module Docs
HTML HTML
def get_latest_version(opts) def get_latest_version(opts)
doc = fetch_doc('https://secure.php.net/manual/en/doc.changelog.php', opts) doc = fetch_doc('https://www.php.net/supported-versions.php', opts)
label = doc.at_css('tbody.gen-changelog > tr > td').content doc.at_css('table > tbody > .stable:last-of-type > td > a').content.strip
label.split(',').last.strip
end end
end end
end end

@ -51,10 +51,15 @@ module Docs
/\Aunsupported-features/ ] /\Aunsupported-features/ ]
options[:attribution] = <<-HTML options[:attribution] = <<-HTML
&copy; 1996&ndash;2019 The PostgreSQL Global Development Group<br> &copy; 1996&ndash;2020 The PostgreSQL Global Development Group<br>
Licensed under the PostgreSQL License. Licensed under the PostgreSQL License.
HTML HTML
version '13' do
self.release = '13.1'
self.base_url = "https://www.postgresql.org/docs/#{version}/"
end
version '12' do version '12' do
self.release = '12.1' self.release = '12.1'
self.base_url = "https://www.postgresql.org/docs/#{version}/" self.base_url = "https://www.postgresql.org/docs/#{version}/"

@ -3,7 +3,7 @@ module Docs
self.type = 'pug' self.type = 'pug'
self.base_url = 'https://pugjs.org/' self.base_url = 'https://pugjs.org/'
self.root_path = 'api/getting-started.html' self.root_path = 'api/getting-started.html'
self.release = '2.0.3' self.release = '3.0.0'
self.links = { self.links = {
home: 'https://pugjs.org/', home: 'https://pugjs.org/',
code: 'https://github.com/pugjs/pug' code: 'https://github.com/pugjs/pug'
@ -18,6 +18,10 @@ module Docs
Licensed under the MIT license. Licensed under the MIT license.
HTML HTML
options[:skip_patterns] = [
/support/
]
def get_latest_version(opts) def get_latest_version(opts)
get_npm_version('pug', opts) get_npm_version('pug', opts)
end end

@ -23,22 +23,30 @@ module Docs
Licensed under the PSF License. Licensed under the PSF License.
HTML HTML
# mkdir -p docs/python~3.9 && cd docs/python~3.9 && curl -L https://docs.python.org/3.9/archives/python-3.9.0-docs-html.tar.bz2 | tar xj --strip-components=1
version '3.9' do # docs.python.org/3.9/download.html
self.release = '3.9.0'
self.base_url = 'https://docs.python.org/3.9/'
html_filters.push 'python/entries_v3', 'sphinx/clean_html', 'python/clean_html'
end
version '3.8' do # docs.python.org/3.8/download.html version '3.8' do # docs.python.org/3.8/download.html
self.release = '3.8.1' self.release = '3.8.6'
self.base_url = 'https://docs.python.org/3.8/' self.base_url = 'https://docs.python.org/3.8/'
html_filters.push 'python/entries_v3', 'sphinx/clean_html', 'python/clean_html' html_filters.push 'python/entries_v3', 'sphinx/clean_html', 'python/clean_html'
end end
version '3.7' do # docs.python.org/3.7/download.html version '3.7' do # docs.python.org/3.7/download.html
self.release = '3.7.6' self.release = '3.7.9'
self.base_url = 'https://docs.python.org/3.7/' self.base_url = 'https://docs.python.org/3.7/'
html_filters.push 'python/entries_v3', 'sphinx/clean_html', 'python/clean_html' html_filters.push 'python/entries_v3', 'sphinx/clean_html', 'python/clean_html'
end end
version '3.6' do # docs.python.org/3.6/download.html version '3.6' do # docs.python.org/3.6/download.html
self.release = '3.6.10' self.release = '3.6.12'
self.base_url = 'https://docs.python.org/3.6/' self.base_url = 'https://docs.python.org/3.6/'
html_filters.push 'python/entries_v3', 'sphinx/clean_html', 'python/clean_html' html_filters.push 'python/entries_v3', 'sphinx/clean_html', 'python/clean_html'
@ -60,7 +68,7 @@ module Docs
def get_latest_version(opts) def get_latest_version(opts)
doc = fetch_doc('https://docs.python.org/', opts) doc = fetch_doc('https://docs.python.org/', opts)
doc.at_css('.version_switcher_placeholder').content doc.at_css('title').content.split(' ')[0]
end end
end end
end end

@ -69,6 +69,10 @@ module Docs
Licensed under their own licenses. Licensed under their own licenses.
HTML HTML
version '2.7' do
self.release = '2.7.2'
end
version '2.6' do version '2.6' do
self.release = '2.6.3' self.release = '2.6.3'
end end

@ -2,7 +2,7 @@ module Docs
class React < UrlScraper class React < UrlScraper
self.name = 'React' self.name = 'React'
self.type = 'simple' self.type = 'simple'
self.release = '16.12.0' self.release = '17.0.1'
self.base_url = 'https://reactjs.org/docs/' self.base_url = 'https://reactjs.org/docs/'
self.root_path = 'hello-world.html' self.root_path = 'hello-world.html'
self.links = { self.links = {

@ -32,8 +32,8 @@ module Docs
HTML HTML
def get_latest_version(opts) def get_latest_version(opts)
doc = fetch_doc('https://facebook.github.io/react-native/docs/getting-started.html', opts) doc = fetch_doc('https://reactnative.dev/docs/getting-started', opts)
doc.at_css('header > a > h3').content doc.at_css('meta[name="docsearch:version"]')['content']
end end
end end
end end

@ -26,8 +26,7 @@ module Docs
HTML HTML
def get_latest_version(opts) def get_latest_version(opts)
doc = fetch_doc('https://scikit-learn.org/stable/documentation.html', opts) get_latest_github_release('scikit-learn', 'scikit-learn', opts)
doc.at_css('.body h1').content.scan(/([0-9.]+)/)[0][0]
end end
end end
end end

@ -2,7 +2,7 @@ module Docs
class Sqlite < FileScraper class Sqlite < FileScraper
self.name = 'SQLite' self.name = 'SQLite'
self.type = 'sqlite' self.type = 'sqlite'
self.release = '3.30.1' self.release = '3.33.0'
self.base_url = 'https://sqlite.org/' self.base_url = 'https://sqlite.org/'
self.root_path = 'docs.html' self.root_path = 'docs.html'
self.initial_paths = %w(keyword_index.html) self.initial_paths = %w(keyword_index.html)

@ -22,8 +22,7 @@ module Docs
HTML HTML
def get_latest_version(opts) def get_latest_version(opts)
doc = fetch_doc('http://www.statsmodels.org/stable/', opts) get_latest_github_release('statsmodels', 'statsmodels', opts)
doc.at_css('.sphinxsidebarwrapper h3 + p > b').content[1..-1]
end end
end end
end end

@ -20,8 +20,7 @@ module Docs
HTML HTML
def get_latest_version(opts) def get_latest_version(opts)
contents = get_github_file_contents('hashicorp', 'vagrant', 'website/config.rb', opts) get_github_tags('hashicorp', 'vagrant', opts)[0]['name'][1..-1]
contents.scan(/version\s+=\s+"([0-9.]+)"/)[0][0]
end end
end end
end end

@ -1 +1 @@
http://www.postgresql.org/about/press/presskit93/#logos https://www.postgresql.org/about/press/presskit93/#logos

@ -1 +1,2 @@
http://commons.wikimedia.org/wiki/File:Ruby_logo.svg https://www.ruby-lang.org/en/about/logo/
https://commons.wikimedia.org/wiki/File:Ruby_logo.svg

Loading…
Cancel
Save