Unified · Split
| @@ -0,0 +1,4 @@ | |||
| 1 | # This controls who gets notified for review and allows branches to be protected. | ||
| 2 | # Protected branches can only be merged into after being approved by a codeowner. | ||
| 3 | |||
| 4 | * @freeCodeCamp/devdocs | ||
| @@ -26,7 +26,7 @@ GEM · 25 unmodified lines | |||
| 26 | eventmachine (1.2.7) | 26 | eventmachine (1.2.7) |
| 27 | execjs (2.7.0) | 27 | execjs (2.7.0) |
| 28 | exifr (1.3.6) | 28 | exifr (1.3.6) |
| 29 | ffi (1.11.1) | 29 | ffi (1.12.2) |
| 30 | fspath (3.1.2) | 30 | fspath (3.1.2) |
| 31 | highline (2.0.3) | 31 | highline (2.0.3) |
| 32 | html-pipeline (2.12.0) | 32 | html-pipeline (2.12.0) |
| @@ -4,6 +4,10 @@ DevDocs combines multiple developer documentations in a clean and organized web · 3 unmodified lines | |||
| 4 | 4 | ||
| 5 | DevDocs was created by [Thibaut Courouble](https://thibaut.me) and is operated by [freeCodeCamp](https://www.freecodecamp.org). | 5 | DevDocs was created by [Thibaut Courouble](https://thibaut.me) and is operated by [freeCodeCamp](https://www.freecodecamp.org). |
| 6 | 6 | ||
| 7 | ## We are currently searching for maintainers | ||
| 8 | |||
| 9 | Please reach out to the community on [Gitter](https://gitter.im/FreeCodeCamp/DevDocs) if you would like to join the team! | ||
| 10 | |||
| 7 | Keep track of development news: | 11 | Keep track of development news: |
| 8 | 12 | ||
| 9 | * Join the contributor chat room on [Gitter](https://gitter.im/FreeCodeCamp/DevDocs) | 13 | * Join the contributor chat room on [Gitter](https://gitter.im/FreeCodeCamp/DevDocs) |
| @@ -22,7 +22,7 @@ app.templates.aboutPage = -> """ · 21 unmodified lines | |||
| 22 | 22 | ||
| 23 | <h2 class="_block-heading" id="copyright">Copyright and License</h2> | 23 | <h2 class="_block-heading" id="copyright">Copyright and License</h2> |
| 24 | <p class="_note"> | 24 | <p class="_note"> |
| 25 | <strong>Copyright 2013–2019 Thibaut Courouble and <a href="https://github.com/freeCodeCamp/devdocs/graphs/contributors">other contributors</a></strong><br> | 25 | <strong>Copyright 2013–2020 Thibaut Courouble and <a href="https://github.com/freeCodeCamp/devdocs/graphs/contributors">other contributors</a></strong><br> |
| 26 | This software is licensed under the terms of the Mozilla Public License v2.0.<br> | 26 | This software is licensed under the terms of the Mozilla Public License v2.0.<br> |
| 27 | You may obtain a copy of the source code at <a href="https://github.com/freeCodeCamp/devdocs">github.com/freeCodeCamp/devdocs</a>.<br> | 27 | You may obtain a copy of the source code at <a href="https://github.com/freeCodeCamp/devdocs">github.com/freeCodeCamp/devdocs</a>.<br> |
| 28 | For more information, see the <a href="https://github.com/freeCodeCamp/devdocs/blob/master/COPYRIGHT">COPYRIGHT</a> | 28 | For more information, see the <a href="https://github.com/freeCodeCamp/devdocs/blob/master/COPYRIGHT">COPYRIGHT</a> |
| @@ -82,8 +82,13 @@ app.templates.aboutPage = -> """ · 53 unmodified lines | |||
| 82 | """ | 82 | """ |
| 83 | 83 | ||
| 84 | credits = [ | 84 | credits = [ |
| 85 | [ 'Angular<br>Angular.js', | 85 | [ 'Angular.js', |
| 86 | '2010-2019 Google, Inc.', | 86 | '2010-2020 Google, Inc.', |
| 87 | 'CC BY 3.0', | ||
| 88 | 'https://creativecommons.org/licenses/by/3.0/' | ||
| 89 | ], [ | ||
| 90 | 'Angular', | ||
| 91 | '2010-2020 Google, Inc.', | ||
| 87 | 'CC BY', | 92 | 'CC BY', |
| 88 | 'https://creativecommons.org/licenses/by/4.0/' | 93 | 'https://creativecommons.org/licenses/by/4.0/' |
| 89 | ], [ | 94 | ], [ |
| @@ -378,7 +383,7 @@ credits = [ · 288 unmodified lines | |||
| 378 | 'https://raw.githubusercontent.com/jekyll/jekyll/master/LICENSE' | 383 | 'https://raw.githubusercontent.com/jekyll/jekyll/master/LICENSE' |
| 379 | ], [ | 384 | ], [ |
| 380 | 'Jest', | 385 | 'Jest', |
| 381 | 'Facebook, Inc. and its affiliates.', | 386 | '2020 Facebook, Inc.', |
| 382 | 'MIT', | 387 | 'MIT', |
| 383 | 'https://raw.githubusercontent.com/facebook/jest/master/LICENSE' | 388 | 'https://raw.githubusercontent.com/facebook/jest/master/LICENSE' |
| 384 | ], [ | 389 | ], [ |
| @@ -448,7 +453,7 @@ credits = [ · 63 unmodified lines | |||
| 448 | 'https://raw.githubusercontent.com/lodash/lodash/master/LICENSE' | 453 | 'https://raw.githubusercontent.com/lodash/lodash/master/LICENSE' |
| 449 | ], [ | 454 | ], [ |
| 450 | 'Lua', | 455 | 'Lua', |
| 451 | '1994–2017 Lua.org, PUC-Rio', | 456 | '1994–2020 Lua.org, PUC-Rio', |
| 452 | 'MIT', | 457 | 'MIT', |
| 453 | 'http://www.lua.org/license.html' | 458 | 'http://www.lua.org/license.html' |
| 454 | ], [ | 459 | ], [ |
| @@ -508,7 +513,7 @@ credits = [ · 53 unmodified lines | |||
| 508 | 'https://github.com/LearnBoost/mongoose/blob/master/README.md#license' | 513 | 'https://github.com/LearnBoost/mongoose/blob/master/README.md#license' |
| 509 | ], [ | 514 | ], [ |
| 510 | 'nginx', | 515 | 'nginx', |
| 511 | '2002-2019 Igor Sysoev<br>© 2011-2019 Nginx, Inc.', | 516 | '2002-2020 Igor Sysoev<br>© 2011-2020 Nginx, Inc.', |
| 512 | 'BSD', | 517 | 'BSD', |
| 513 | 'http://nginx.org/LICENSE' | 518 | 'http://nginx.org/LICENSE' |
| 514 | ], [ | 519 | ], [ |
| @@ -548,7 +553,7 @@ credits = [ · 33 unmodified lines | |||
| 548 | 'https://octave.org/doc/interpreter/' | 553 | 'https://octave.org/doc/interpreter/' |
| 549 | ], [ | 554 | ], [ |
| 550 | 'OpenJDK', | 555 | 'OpenJDK', |
| 551 | '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.', | 556 | '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.', |
| 552 | 'GPLv2', | 557 | 'GPLv2', |
| 553 | 'http://openjdk.java.net/legal/gplv2+ce.html' | 558 | 'http://openjdk.java.net/legal/gplv2+ce.html' |
| 554 | ], [ | 559 | ], [ |
| @@ -603,7 +608,7 @@ credits = [ · 48 unmodified lines | |||
| 603 | 'https://raw.githubusercontent.com/ponylang/ponyc/master/LICENSE' | 608 | 'https://raw.githubusercontent.com/ponylang/ponyc/master/LICENSE' |
| 604 | ], [ | 609 | ], [ |
| 605 | 'PostgreSQL', | 610 | 'PostgreSQL', |
| 606 | '1996-2019 The PostgreSQL Global Development Group<br>© 1994 The Regents of the University of California', | 611 | '1996-2020 The PostgreSQL Global Development Group<br>© 1994 The Regents of the University of California', |
| 607 | 'PostgreSQL', | 612 | 'PostgreSQL', |
| 608 | 'https://www.postgresql.org/about/licence/' | 613 | 'https://www.postgresql.org/about/licence/' |
| 609 | ], [ | 614 | ], [ |
| @@ -3,7 +3,7 @@ · 2 unmodified lines | |||
| 3 | //= depend_on sprites/docs.json | 3 | //= depend_on sprites/docs.json |
| 4 | 4 | ||
| 5 | /*! | 5 | /*! |
| 6 | * Copyright 2013-2019 Thibaut Courouble and other contributors | 6 | * Copyright 2013-2020 Thibaut Courouble and other contributors |
| 7 | * | 7 | * |
| 8 | * This source code is licensed under the terms of the Mozilla | 8 | * This source code is licensed under the terms of the Mozilla |
| 9 | * Public License, v. 2.0, a copy of which may be obtained at: | 9 | * 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 · 79 unmodified lines | |||
| 80 | 80 | ||
| 81 | ## OpenJDK | 81 | ## OpenJDK |
| 82 | 82 | ||
| 83 | https://packages.debian.org/sid/openjdk-11-doc | ||
| 84 | |||
| 85 | ```sh | ||
| 86 | mkdir docs/openjdk~11 | ||
| 87 | curl --remote-name http://ftp.debian.org/debian/pool/main/o/openjdk-11/openjdk-11-doc_11.0.9.1+1-1_all.deb | ||
| 88 | bsdtar --extract --to-stdout --file openjdk-11-doc_11.0.9.1+1-1_all.deb data.tar.xz | \ | ||
| 89 | bsdtar --extract --xz --file - --strip-components=6 --directory=docs/openjdk\~11/ ./usr/share/doc/openjdk-11-jre-headless/api/ | ||
| 90 | ``` | ||
| 91 | |||
| 92 | https://packages.debian.org/sid/openjdk-8-doc | ||
| 93 | |||
| 94 | ```sh | ||
| 95 | mkdir docs/openjdk~8 | ||
| 96 | curl --remote-name http://ftp.debian.org/debian/pool/main/o/openjdk-8/openjdk-8-doc_8u272-b10-1_all.deb | ||
| 97 | bsdtar --extract --to-stdout --file openjdk-8-doc_8u272-b10-1_all.deb data.tar.xz | \ | ||
| 98 | bsdtar --extract --xz --file - --strip-components=6 --directory=docs/openjdk\~8/ ./usr/share/doc/openjdk-8-jre-headless/api/ | ||
| 99 | ``` | ||
| 100 | |||
| 83 | ## Perl | 101 | ## Perl |
| 84 | 102 | ||
| 85 | ## PHP | 103 | ## PHP |
| @@ -220,6 +220,8 @@ module Docs · 219 unmodified lines | |||
| 220 | 220 | ||
| 221 | if opts.key?(:github_token) and url.start_with?('https://api.github.com/') | 221 | if opts.key?(:github_token) and url.start_with?('https://api.github.com/') |
| 222 | headers['Authorization'] = "token #{opts[:github_token]}" | 222 | headers['Authorization'] = "token #{opts[:github_token]}" |
| 223 | elsif ENV['GITHUB_TOKEN'] and url.start_with?('https://api.github.com/') | ||
| 224 | headers['Authorization'] = "token #{ENV['GITHUB_TOKEN']}" | ||
| 223 | end | 225 | end |
| 224 | 226 | ||
| 225 | opts[:logger].debug("Fetching #{url}") | 227 | opts[:logger].debug("Fetching #{url}") |
| @@ -7,6 +7,13 @@ module Docs · 6 unmodified lines | |||
| 7 | name.remove! %r{ \- .*} | 7 | name.remove! %r{ \- .*} |
| 8 | name.remove! 'Introduction To ' | 8 | name.remove! 'Introduction To ' |
| 9 | name.remove! %r{ Guide\z} | 9 | name.remove! %r{ Guide\z} |
| 10 | |||
| 11 | if version == "2.10" | ||
| 12 | if slug =~ /\Acollections\// and slug !~ /index$/ | ||
| 13 | name = name.split('.')[2] | ||
| 14 | end | ||
| 15 | end | ||
| 16 | |||
| 10 | name | 17 | name |
| 11 | end | 18 | end |
| 12 | 19 | ||
| @@ -21,6 +28,12 @@ module Docs · 8 unmodified lines | |||
| 21 | end | 28 | end |
| 22 | end | 29 | end |
| 23 | 30 | ||
| 31 | if version == "2.10" | ||
| 32 | if slug =~ /\Acollections\// | ||
| 33 | return "Collection #{slug.split('/')[1..-2].join(".")}" | ||
| 34 | end | ||
| 35 | end | ||
| 36 | |||
| 24 | if slug =~ /\Acli\// | 37 | if slug =~ /\Acli\// |
| 25 | 'CLI Reference' | 38 | 'CLI Reference' |
| 26 | elsif slug =~ /\Anetwork\// | 39 | elsif slug =~ /\Anetwork\// |
| @@ -2,7 +2,7 @@ module Docs · 1 unmodified line | |||
| 2 | class Haxe | 2 | class Haxe |
| 3 | class CleanHtmlFilter < Filter | 3 | class CleanHtmlFilter < Filter |
| 4 | def call | 4 | def call |
| 5 | css('.viewsource', 'hr', 'h1 > small', '.inherited-fields').remove | 5 | css('.viewsource', 'hr', 'h1 > small', '.inherited-fields', '.label-meta').remove |
| 6 | 6 | ||
| 7 | css('h4 + h1').each do |node| | 7 | css('h4 + h1').each do |node| |
| 8 | node.after(node.previous_element) | 8 | node.after(node.previous_element) |
| @@ -28,8 +28,10 @@ module Docs · 19 unmodified lines | |||
| 28 | end | 28 | end |
| 29 | 29 | ||
| 30 | css('.field').each do |node| | 30 | css('.field').each do |node| |
| 31 | h3 = node.at_css('h3:not(:empty)') | ||
| 32 | next unless h3.present? | ||
| 31 | link = node.at_css('a[name]') | 33 | link = node.at_css('a[name]') |
| 32 | node.at_css('h3:not(:empty)')['id'] = link['name'] | 34 | h3['id'] = link['name'] |
| 33 | link.before(link.children).remove | 35 | link.before(link.children).remove |
| 34 | node.before(node.children).remove | 36 | node.before(node.children).remove |
| 35 | end | 37 | end |
| @@ -19,6 +19,7 @@ module Docs · 18 unmodified lines | |||
| 19 | 19 | ||
| 20 | def additional_entries | 20 | def additional_entries |
| 21 | return [] unless !root_page? && self.type == self.name # api page | 21 | return [] unless !root_page? && self.type == self.name # api page |
| 22 | return [] if self.slug == 'environment-variables' | ||
| 22 | 23 | ||
| 23 | entries = [] | 24 | entries = [] |
| 24 | 25 | ||
| @@ -8,25 +8,25 @@ module Docs · 7 unmodified lines | |||
| 8 | node.name = 'h2' | 8 | node.name = 'h2' |
| 9 | end | 9 | end |
| 10 | 10 | ||
| 11 | at_css('> h2:first-child').name = 'h1' | 11 | # remove "This reference reflects Leaflet" |
| 12 | 12 | css('p:contains("This reference reflects Leaflet")').each do |node| | |
| 13 | # remove "This reference reflects Leaflet 1.2.0." | ||
| 14 | css('h1 ~ p').each do |node| | ||
| 15 | node.remove | 13 | node.remove |
| 16 | break | 14 | break |
| 17 | end | 15 | end |
| 18 | 16 | ||
| 17 | at_css('> h2:first-child').name = 'h1' | ||
| 18 | |||
| 19 | css('section', 'code b', '.accordion', '.accordion-overflow', '.accordion-content').each do |node| | 19 | css('section', 'code b', '.accordion', '.accordion-overflow', '.accordion-content').each do |node| |
| 20 | node.before(node.children).remove | 20 | node.before(node.children).remove |
| 21 | end | 21 | end |
| 22 | 22 | ||
| 23 | css('pre > code').each do |node| | 23 | css('pre > code').each do |node| |
| 24 | node['class'] ||= '' | 24 | node['class'] ||= '' |
| 25 | lang = if node['class'].include?('lang-html') || node.content =~ /\A</ | 25 | lang = if node['class'].include?('lang-html') || node['class'].include?('language-html') || node.content =~ /\A</ |
| 26 | 'html' | 26 | 'html' |
| 27 | elsif node['class'].include?('lang-css') | 27 | elsif node['class'].include?('lang-css') || node['class'].include?('language-css') |
| 28 | 'css' | 28 | 'css' |
| 29 | elsif node['class'].include?('lang-js') || node['class'].include?('lang-javascript') | 29 | elsif node['class'].include?('lang-js') || node['class'].include?('language-js') || node['class'].include?('lang-javascript') |
| 30 | 'javascript' | 30 | 'javascript' |
| 31 | end | 31 | end |
| 32 | node.parent['data-language'] = lang if lang | 32 | node.parent['data-language'] = lang if lang |
| @@ -33,7 +33,7 @@ module Docs · 32 unmodified lines | |||
| 33 | node.content = node.content.remove(' Summary').remove(' Detail').pluralize | 33 | node.content = node.content.remove(' Summary').remove(' Detail').pluralize |
| 34 | end | 34 | end |
| 35 | 35 | ||
| 36 | if root_page? | 36 | if root_page? && version == '8' |
| 37 | css('.header')[1].remove | 37 | css('.header')[1].remove |
| 38 | css('.contentContainer')[0].remove | 38 | css('.contentContainer')[0].remove |
| 39 | css('.contentContainer')[-1].remove | 39 | css('.contentContainer')[-1].remove |
| @@ -45,7 +45,10 @@ module Docs · 5 unmodified lines | |||
| 45 | end | 45 | end |
| 46 | end | 46 | end |
| 47 | 47 | ||
| 48 | at_css('h1').content = "OpenJDK #{release} Documentation" + (version != release ? " (#{version.split(' ').last})" : '') | 48 | end |
| 49 | |||
| 50 | if root_page? | ||
| 51 | at_css('h1').content = "OpenJDK #{release} Documentation" | ||
| 49 | end | 52 | end |
| 50 | 53 | ||
| 51 | css('table').each do |node| | 54 | css('table').each do |node| |
| @@ -11,7 +11,7 @@ module Docs · 10 unmodified lines | |||
| 11 | options[:max_image_size] = 256_000 | 11 | options[:max_image_size] = 256_000 |
| 12 | 12 | ||
| 13 | options[:attribution] = <<-HTML | 13 | options[:attribution] = <<-HTML |
| 14 | © 2010–2019 Google, Inc.<br> | 14 | © 2010–2020 Google, Inc.<br> |
| 15 | Licensed under the Creative Commons Attribution License 4.0. | 15 | Licensed under the Creative Commons Attribution License 4.0. |
| 16 | HTML | 16 | HTML |
| 17 | 17 | ||
| @@ -59,7 +59,7 @@ module Docs · 41 unmodified lines | |||
| 59 | end | 59 | end |
| 60 | 60 | ||
| 61 | version do | 61 | version do |
| 62 | self.release = '8.2.14' | 62 | self.release = '11.0.0' |
| 63 | self.base_url = 'https://angular.io/' | 63 | self.base_url = 'https://angular.io/' |
| 64 | self.root_path = 'docs' | 64 | self.root_path = 'docs' |
| 65 | 65 | ||
| @@ -78,6 +78,66 @@ module Docs · 12 unmodified lines | |||
| 78 | include Docs::Angular::Common | 78 | include Docs::Angular::Common |
| 79 | end | 79 | end |
| 80 | 80 | ||
| 81 | version '10' do | ||
| 82 | self.release = '10.2.3' | ||
| 83 | self.base_url = 'https://v10.angular.io/' | ||
| 84 | self.root_path = 'docs' | ||
| 85 | |||
| 86 | html_filters.push 'angular/clean_html', 'angular/entries' | ||
| 87 | |||
| 88 | options[:follow_links] = false | ||
| 89 | options[:only_patterns] = [/\Aguide/, /\Atutorial/, /\Aapi/] | ||
| 90 | options[:fix_urls_before_parse] = ->(url) do | ||
| 91 | url.sub! %r{\Aguide/}, '/guide/' | ||
| 92 | url.sub! %r{\Atutorial/}, '/tutorial/' | ||
| 93 | url.sub! %r{\Aapi/}, '/api/' | ||
| 94 | url.sub! %r{\Agenerated/}, '/generated/' | ||
| 95 | url | ||
| 96 | end | ||
| 97 | |||
| 98 | include Docs::Angular::Common | ||
| 99 | end | ||
| 100 | |||
| 101 | version '9' do | ||
| 102 | self.release = '9.1.12' | ||
| 103 | self.base_url = 'https://v9.angular.io/' | ||
| 104 | self.root_path = 'docs' | ||
| 105 | |||
| 106 | html_filters.push 'angular/clean_html', 'angular/entries' | ||
| 107 | |||
| 108 | options[:follow_links] = false | ||
| 109 | options[:only_patterns] = [/\Aguide/, /\Atutorial/, /\Aapi/] | ||
| 110 | options[:fix_urls_before_parse] = ->(url) do | ||
| 111 | url.sub! %r{\Aguide/}, '/guide/' | ||
| 112 | url.sub! %r{\Atutorial/}, '/tutorial/' | ||
| 113 | url.sub! %r{\Aapi/}, '/api/' | ||
| 114 | url.sub! %r{\Agenerated/}, '/generated/' | ||
| 115 | url | ||
| 116 | end | ||
| 117 | |||
| 118 | include Docs::Angular::Common | ||
| 119 | end | ||
| 120 | |||
| 121 | version '8' do | ||
| 122 | self.release = '8.2.14' | ||
| 123 | self.base_url = 'https://v8.angular.io/' | ||
| 124 | self.root_path = 'docs' | ||
| 125 | |||
| 126 | html_filters.push 'angular/clean_html', 'angular/entries' | ||
| 127 | |||
| 128 | options[:follow_links] = false | ||
| 129 | options[:only_patterns] = [/\Aguide/, /\Atutorial/, /\Aapi/] | ||
| 130 | options[:fix_urls_before_parse] = ->(url) do | ||
| 131 | url.sub! %r{\Aguide/}, '/guide/' | ||
| 132 | url.sub! %r{\Atutorial/}, '/tutorial/' | ||
| 133 | url.sub! %r{\Aapi/}, '/api/' | ||
| 134 | url.sub! %r{\Agenerated/}, '/generated/' | ||
| 135 | url | ||
| 136 | end | ||
| 137 | |||
| 138 | include Docs::Angular::Common | ||
| 139 | end | ||
| 140 | |||
| 81 | version '7' do | 141 | version '7' do |
| 82 | self.release = '7.2.15' | 142 | self.release = '7.2.15' |
| 83 | self.base_url = 'https://v7.angular.io/' | 143 | self.base_url = 'https://v7.angular.io/' |
| @@ -38,8 +38,8 @@ module Docs · 37 unmodified lines | |||
| 38 | ] | 38 | ] |
| 39 | 39 | ||
| 40 | options[:attribution] = <<-HTML | 40 | options[:attribution] = <<-HTML |
| 41 | © 2010–2018 Google, Inc.<br> | 41 | © 2010–2020 Google, Inc.<br> |
| 42 | Licensed under the Creative Commons Attribution License 4.0. | 42 | Licensed under the Creative Commons Attribution License 3.0. |
| 43 | HTML | 43 | HTML |
| 44 | 44 | ||
| 45 | stub '' do | 45 | stub '' do |
| @@ -49,6 +49,11 @@ module Docs · 3 unmodified lines | |||
| 49 | capybara.execute_script("return document.querySelector('.side-navigation').innerHTML") | 49 | capybara.execute_script("return document.querySelector('.side-navigation').innerHTML") |
| 50 | end | 50 | end |
| 51 | 51 | ||
| 52 | version '1.8' do | ||
| 53 | self.release = '1.8.2' | ||
| 54 | self.base_url = "https://code.angularjs.org/#{release}/docs/partials/" | ||
| 55 | end | ||
| 56 | |||
| 52 | version '1.7' do | 57 | version '1.7' do |
| 53 | self.release = '1.7.8' | 58 | self.release = '1.7.8' |
| 54 | self.base_url = "https://code.angularjs.org/#{release}/docs/partials/" | 59 | self.base_url = "https://code.angularjs.org/#{release}/docs/partials/" |
| @@ -30,18 +30,23 @@ module Docs · 29 unmodified lines | |||
| 30 | /\Aroadmap.*/i, | 30 | /\Aroadmap.*/i, |
| 31 | ] | 31 | ] |
| 32 | 32 | ||
| 33 | version '2.10' do | ||
| 34 | self.release = '2.10.3' | ||
| 35 | self.base_url = "https://docs.ansible.com/ansible/#{version}/" | ||
| 36 | end | ||
| 37 | |||
| 33 | version '2.9' do | 38 | version '2.9' do |
| 34 | self.release = '2.9.1' | 39 | self.release = '2.9.15' |
| 35 | self.base_url = "https://docs.ansible.com/ansible/#{version}/" | 40 | self.base_url = "https://docs.ansible.com/ansible/#{version}/" |
| 36 | end | 41 | end |
| 37 | 42 | ||
| 38 | version '2.8' do | 43 | version '2.8' do |
| 39 | self.release = '2.8.7' | 44 | self.release = '2.8.16' |
| 40 | self.base_url = "https://docs.ansible.com/ansible/#{version}/" | 45 | self.base_url = "https://docs.ansible.com/ansible/#{version}/" |
| 41 | end | 46 | end |
| 42 | 47 | ||
| 43 | version '2.7' do | 48 | version '2.7' do |
| 44 | self.release = '2.7.15' | 49 | self.release = '2.7.17' |
| 45 | self.base_url = "https://docs.ansible.com/ansible/#{version}/" | 50 | self.base_url = "https://docs.ansible.com/ansible/#{version}/" |
| 46 | end | 51 | end |
| 47 | 52 | ||
| @@ -71,7 +76,7 @@ module Docs · 23 unmodified lines | |||
| 71 | 76 | ||
| 72 | def get_latest_version(opts) | 77 | def get_latest_version(opts) |
| 73 | doc = fetch_doc('https://docs.ansible.com/ansible/latest/index.html', opts) | 78 | doc = fetch_doc('https://docs.ansible.com/ansible/latest/index.html', opts) |
| 74 | doc.at_css('.DocSiteProduct-CurrentVersion').content.strip | 79 | doc.at_css('.version').content.strip |
| 75 | end | 80 | end |
| 76 | end | 81 | end |
| 77 | end | 82 | end |
| @@ -24,8 +24,7 @@ module Docs · 23 unmodified lines | |||
| 24 | end | 24 | end |
| 25 | 25 | ||
| 26 | def get_latest_version(opts) | 26 | def get_latest_version(opts) |
| 27 | doc = fetch_doc('https://babeljs.io/docs/en/', opts) | 27 | get_latest_github_release('babel', 'babel', opts) |
| 28 | doc.at_css('a[href="/versions"] > h3').content | ||
| 29 | end | 28 | end |
| 30 | end | 29 | end |
| 31 | end | 30 | end |
| @@ -49,8 +49,8 @@ module Docs · 48 unmodified lines | |||
| 49 | end | 49 | end |
| 50 | 50 | ||
| 51 | def get_latest_version(opts) | 51 | def get_latest_version(opts) |
| 52 | doc = fetch_doc('https://downloads.chef.io/chef', opts) | 52 | doc = fetch_doc('https://downloads.chef.io/products/infra', opts) |
| 53 | doc.at_css('h1.product-heading > span').content.strip | 53 | doc.at_css('#versions > option').content.strip |
| 54 | end | 54 | end |
| 55 | end | 55 | end |
| 56 | end | 56 | end |
| @@ -40,9 +40,8 @@ module Docs · 39 unmodified lines | |||
| 40 | end | 40 | end |
| 41 | 41 | ||
| 42 | def get_latest_version(opts) | 42 | def get_latest_version(opts) |
| 43 | doc = fetch_doc('https://codeigniter.com/userguide3/changelog.html', opts) | 43 | tags = get_github_tags('codeigniter4', 'codeigniter4', opts) |
| 44 | header = doc.at_css('#change-log h2') | 44 | tags[0]['name'][1..-1] |
| 45 | header.content.scan(/([0-9.]+)/)[0][0] | ||
| 46 | end | 45 | end |
| 47 | end | 46 | end |
| 48 | end | 47 | end |
| @@ -33,7 +33,7 @@ module Docs · 32 unmodified lines | |||
| 33 | def get_latest_version(opts) | 33 | def get_latest_version(opts) |
| 34 | doc = fetch_doc('https://api.dartlang.org/', opts) | 34 | doc = fetch_doc('https://api.dartlang.org/', opts) |
| 35 | label = doc.at_css('footer > span').content.strip | 35 | label = doc.at_css('footer > span').content.strip |
| 36 | label.sub(/Dart /, '') | 36 | label.sub(/Dart\s*/, '') |
| 37 | end | 37 | end |
| 38 | end | 38 | end |
| 39 | end | 39 | end |
| @@ -260,9 +260,9 @@ module Docs · 259 unmodified lines | |||
| 260 | end | 260 | end |
| 261 | 261 | ||
| 262 | def get_latest_version(opts) | 262 | def get_latest_version(opts) |
| 263 | doc = fetch_doc('https://docs.docker.com/', opts) | 263 | doc = fetch_doc('https://docs.docker.com/engine/release-notes/', opts) |
| 264 | label = doc.at_css('.nav-container button.dropdown-toggle').content.strip | 264 | latest_version = doc.at_css('.content > section > h1[id^="version-"]').content.strip |
| 265 | label.scan(/([0-9.]+)/)[0][0] | 265 | latest_version.rpartition(' ')[-1] |
| 266 | end | 266 | end |
| 267 | end | 267 | end |
| 268 | end | 268 | end |
| @@ -126,7 +126,7 @@ module Docs · 125 unmodified lines | |||
| 126 | 126 | ||
| 127 | def get_latest_version(opts) | 127 | def get_latest_version(opts) |
| 128 | doc = fetch_doc('https://hexdocs.pm/elixir/api-reference.html', opts) | 128 | doc = fetch_doc('https://hexdocs.pm/elixir/api-reference.html', opts) |
| 129 | doc.at_css('h2.sidebar-projectVersion').content.strip[1..-1] | 129 | doc.at_css('.sidebar-projectVersion').content.strip[1..-1] |
| 130 | end | 130 | end |
| 131 | end | 131 | end |
| 132 | end | 132 | end |
| @@ -57,8 +57,7 @@ module Docs · 56 unmodified lines | |||
| 57 | end | 57 | end |
| 58 | 58 | ||
| 59 | def get_latest_version(opts) | 59 | def get_latest_version(opts) |
| 60 | doc = fetch_doc('https://www.erlang.org/downloads', opts) | 60 | get_latest_github_release('erlang', 'otp', opts)[4..-1] |
| 61 | doc.at_css('.col-lg-3 > ul > li').content.strip.sub(/OTP /, '') | ||
| 62 | end | 61 | end |
| 63 | end | 62 | end |
| 64 | end | 63 | end |
| @@ -54,8 +54,7 @@ module Docs · 53 unmodified lines | |||
| 54 | end | 54 | end |
| 55 | 55 | ||
| 56 | def get_latest_version(opts) | 56 | def get_latest_version(opts) |
| 57 | doc = fetch_doc('http://fishshell.com/docs/current/index.html', opts) | 57 | get_latest_github_release('fish-shell', 'fish-shell', opts) |
| 58 | doc.at_css('#toc-index').content.scan(/([0-9.]+)/)[0][0] | ||
| 59 | end | 58 | end |
| 60 | end | 59 | end |
| 61 | end | 60 | end |
| @@ -18,9 +18,11 @@ module Docs · 17 unmodified lines | |||
| 18 | HTML | 18 | HTML |
| 19 | 19 | ||
| 20 | def get_latest_version(opts) | 20 | def get_latest_version(opts) |
| 21 | doc = fetch_doc('https://open-cobol.sourceforge.io/HTML/gnucobpg.html', opts) | 21 | fetch_doc('https://sourceforge.net/projects/gnucobol/files/gnucobol/', opts) |
| 22 | title = doc.at_css('h1').content | 22 | .css('#files_list > tbody > tr') |
| 23 | title.scan(/([0-9.]+)/)[0][0] | 23 | .map { |file| file['title'] } |
| 24 | .sort_by { |version| version.to_f } | ||
| 25 | .last | ||
| 24 | end | 26 | end |
| 25 | end | 27 | end |
| 26 | end | 28 | end |
| @@ -37,5 +37,10 @@ module Docs · 36 unmodified lines | |||
| 37 | 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). | 37 | 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). |
| 38 | HTML | 38 | HTML |
| 39 | 39 | ||
| 40 | def get_latest_version(opts) | ||
| 41 | doc = fetch_doc('http://www.gnuplot.info/download.html', opts) | ||
| 42 | label = doc.at_css('h2').content.strip | ||
| 43 | label.sub(/[^0-9.]*/, '') | ||
| 44 | end | ||
| 40 | end | 45 | end |
| 41 | end | 46 | end |
| @@ -1,7 +1,7 @@ | |||
| 1 | module Docs | 1 | module Docs |
| 2 | class Go < UrlScraper | 2 | class Go < UrlScraper |
| 3 | self.type = 'go' | 3 | self.type = 'go' |
| 4 | self.release = '1.13' | 4 | self.release = '1.15' |
| 5 | self.base_url = 'https://golang.org/pkg/' | 5 | self.base_url = 'https://golang.org/pkg/' |
| 6 | self.links = { | 6 | self.links = { |
| 7 | home: 'https://golang.org/', | 7 | home: 'https://golang.org/', |
| @@ -44,8 +44,7 @@ module Docs · 43 unmodified lines | |||
| 44 | end | 44 | end |
| 45 | 45 | ||
| 46 | def get_latest_version(opts) | 46 | def get_latest_version(opts) |
| 47 | doc = fetch_doc('https://docs.godotengine.org/', opts) | 47 | get_latest_github_release('godotengine', 'godot', opts).split('-')[0] |
| 48 | doc.at_css('.version').content.strip | ||
| 49 | end | 48 | end |
| 50 | end | 49 | end |
| 51 | end | 50 | end |
| @@ -2,7 +2,7 @@ module Docs · 1 unmodified line | |||
| 2 | class Haxe < UrlScraper | 2 | class Haxe < UrlScraper |
| 3 | self.name = 'Haxe' | 3 | self.name = 'Haxe' |
| 4 | self.type = 'simple' | 4 | self.type = 'simple' |
| 5 | self.release = '3.4.7' | 5 | self.release = '4.1.3' |
| 6 | self.base_url = 'https://api.haxe.org/' | 6 | self.base_url = 'https://api.haxe.org/' |
| 7 | 7 | ||
| 8 | html_filters.push 'haxe/clean_html', 'haxe/entries' | 8 | html_filters.push 'haxe/clean_html', 'haxe/entries' |
| @@ -10,7 +10,7 @@ module Docs · 1 unmodified line | |||
| 10 | options[:container] = '.span9' | 10 | options[:container] = '.span9' |
| 11 | 11 | ||
| 12 | options[:attribution] = <<-HTML | 12 | options[:attribution] = <<-HTML |
| 13 | © 2005–2018 Haxe Foundation<br> | 13 | © 2005–2020 Haxe Foundation<br> |
| 14 | Licensed under a MIT license. | 14 | Licensed under a MIT license. |
| 15 | HTML | 15 | HTML |
| 16 | 16 | ||
| @@ -20,7 +20,7 @@ module Docs · 3 unmodified lines | |||
| 20 | code: 'https://github.com/HaxeFoundation/haxe' | 20 | code: 'https://github.com/HaxeFoundation/haxe' |
| 21 | } | 21 | } |
| 22 | 22 | ||
| 23 | options[:skip_patterns] = [/\A(?:cpp|cs|flash|java|js|neko|php|python|lua|hl|sys)/i] | 23 | options[:skip_patterns] = [/\A(?:cpp|cs|flash|java|js|neko|php|python|lua|hl|sys|eval)/i] |
| 24 | end | 24 | end |
| 25 | 25 | ||
| 26 | version 'C++' do | 26 | version 'C++' do |
| @@ -67,6 +67,10 @@ module Docs · 40 unmodified lines | |||
| 67 | self.base_url = 'https://api.haxe.org/python/' | 67 | self.base_url = 'https://api.haxe.org/python/' |
| 68 | end | 68 | end |
| 69 | 69 | ||
| 70 | version 'Eval' do | ||
| 71 | self.base_url = 'https://api.haxe.org/eval/' | ||
| 72 | end | ||
| 73 | |||
| 70 | def get_latest_version(opts) | 74 | def get_latest_version(opts) |
| 71 | doc = fetch_doc('https://api.haxe.org/', opts) | 75 | doc = fetch_doc('https://api.haxe.org/', opts) |
| 72 | label = doc.at_css('.container.main-content h1 > small').content | 76 | label = doc.at_css('.container.main-content h1 > small').content |
| @@ -48,9 +48,7 @@ module Docs · 47 unmodified lines | |||
| 48 | HTML | 48 | HTML |
| 49 | 49 | ||
| 50 | def get_latest_version(opts) | 50 | def get_latest_version(opts) |
| 51 | doc = fetch_doc('https://docs.influxdata.com/influxdb/', opts) | 51 | get_latest_github_release('influxdata', 'influxdb', opts) |
| 52 | label = doc.at_css('.navbar--current-product').content.strip | ||
| 53 | label.scan(/([0-9.]+)/)[0][0] | ||
| 54 | end | 52 | end |
| 55 | end | 53 | end |
| 56 | end | 54 | end |
| @@ -1,7 +1,7 @@ | |||
| 1 | module Docs | 1 | module Docs |
| 2 | class Jest < UrlScraper | 2 | class Jest < UrlScraper |
| 3 | self.type = 'simple' | 3 | self.type = 'simple' |
| 4 | self.release = '24.9' | 4 | self.release = '26.6' |
| 5 | self.base_url = 'https://jestjs.io/docs/en/' | 5 | self.base_url = 'https://jestjs.io/docs/en/' |
| 6 | self.root_path = 'getting-started' | 6 | self.root_path = 'getting-started' |
| 7 | self.links = { | 7 | self.links = { |
| @@ -14,7 +14,7 @@ module Docs · 6 unmodified lines | |||
| 14 | options[:container] = '.docMainWrapper' | 14 | options[:container] = '.docMainWrapper' |
| 15 | 15 | ||
| 16 | options[:attribution] = <<-HTML | 16 | options[:attribution] = <<-HTML |
| 17 | © 2019 Facebook, Inc. and its affiliates.<br> | 17 | © 2020 Facebook, Inc.<br> |
| 18 | Licensed under the MIT License. | 18 | Licensed under the MIT License. |
| 19 | HTML | 19 | HTML |
| 20 | 20 | ||
| @@ -19,6 +19,11 @@ module Docs · 18 unmodified lines | |||
| 19 | Maps © OpenStreetMap contributors. | 19 | Maps © OpenStreetMap contributors. |
| 20 | HTML | 20 | HTML |
| 21 | 21 | ||
| 22 | version '1.7' do | ||
| 23 | self.release = '1.7.1' | ||
| 24 | self.base_url = "https://leafletjs.com/reference-#{release}.html" | ||
| 25 | end | ||
| 26 | |||
| 22 | version '1.6' do | 27 | version '1.6' do |
| 23 | self.release = '1.6.0' | 28 | self.release = '1.6.0' |
| 24 | self.base_url = "https://leafletjs.com/reference-#{release}.html" | 29 | self.base_url = "https://leafletjs.com/reference-#{release}.html" |
| @@ -8,12 +8,17 @@ module Docs · 7 unmodified lines | |||
| 8 | options[:skip_links] = true | 8 | options[:skip_links] = true |
| 9 | 9 | ||
| 10 | options[:attribution] = <<-HTML | 10 | options[:attribution] = <<-HTML |
| 11 | © 1994–2017 Lua.org, PUC-Rio.<br> | 11 | © 1994–2020 Lua.org, PUC-Rio.<br> |
| 12 | Licensed under the MIT License. | 12 | Licensed under the MIT License. |
| 13 | HTML | 13 | HTML |
| 14 | 14 | ||
| 15 | version '5.4' do | ||
| 16 | self.release = '5.4.1' | ||
| 17 | self.base_url = 'https://www.lua.org/manual/5.4/' | ||
| 18 | end | ||
| 19 | |||
| 15 | version '5.3' do | 20 | version '5.3' do |
| 16 | self.release = '5.3.4' | 21 | self.release = '5.3.6' |
| 17 | self.base_url = 'https://www.lua.org/manual/5.3/' | 22 | self.base_url = 'https://www.lua.org/manual/5.3/' |
| 18 | end | 23 | end |
| 19 | 24 | ||
| @@ -24,8 +24,7 @@ module Docs · 23 unmodified lines | |||
| 24 | HTML | 24 | HTML |
| 25 | 25 | ||
| 26 | def get_latest_version(opts) | 26 | def get_latest_version(opts) |
| 27 | doc = fetch_doc('http://momentjs.com/', opts) | 27 | get_github_tags('moment', 'moment', opts)[0]['name'] |
| 28 | doc.at_css('.hero-title > h1 > span').content | ||
| 29 | end | 28 | end |
| 30 | end | 29 | end |
| 31 | end | 30 | end |
| @@ -2,7 +2,7 @@ module Docs · 1 unmodified line | |||
| 2 | class Nginx < UrlScraper | 2 | class Nginx < UrlScraper |
| 3 | self.name = 'nginx' | 3 | self.name = 'nginx' |
| 4 | self.type = 'nginx' | 4 | self.type = 'nginx' |
| 5 | self.release = '1.17.2' | 5 | self.release = '1.19.3' |
| 6 | self.base_url = 'https://nginx.org/en/docs/' | 6 | self.base_url = 'https://nginx.org/en/docs/' |
| 7 | self.links = { | 7 | self.links = { |
| 8 | home: 'https://nginx.org/', | 8 | home: 'https://nginx.org/', |
| @@ -20,9 +20,10 @@ module Docs · 11 unmodified lines | |||
| 20 | 20 | ||
| 21 | options[:skip_patterns] = [/\/faq\//] | 21 | options[:skip_patterns] = [/\/faq\//] |
| 22 | 22 | ||
| 23 | # http://nginx.org/LICENSE | ||
| 23 | options[:attribution] = <<-HTML | 24 | options[:attribution] = <<-HTML |
| 24 | © 2002-2019 Igor Sysoev<br> | 25 | © 2002-2020 Igor Sysoev<br> |
| 25 | © 2011-2019 Nginx, Inc.<br> | 26 | © 2011-2020 Nginx, Inc.<br> |
| 26 | Licensed under the BSD License. | 27 | Licensed under the BSD License. |
| 27 | HTML | 28 | HTML |
| 28 | 29 | ||
| @@ -23,7 +23,12 @@ module Docs · 22 unmodified lines | |||
| 23 | HTML | 23 | HTML |
| 24 | 24 | ||
| 25 | version do | 25 | version do |
| 26 | self.release = '12.9.1' | 26 | self.release = '14.15.0' |
| 27 | self.base_url = 'https://nodejs.org/dist/latest-v14.x/docs/api/' | ||
| 28 | end | ||
| 29 | |||
| 30 | version '12 LTS' do | ||
| 31 | self.release = '12.19.0' | ||
| 27 | self.base_url = 'https://nodejs.org/dist/latest-v12.x/docs/api/' | 32 | self.base_url = 'https://nodejs.org/dist/latest-v12.x/docs/api/' |
| 28 | end | 33 | end |
| 29 | 34 | ||
| @@ -18,13 +18,20 @@ module Docs · 17 unmodified lines | |||
| 18 | /doc-files\//] | 18 | /doc-files\//] |
| 19 | 19 | ||
| 20 | options[:attribution] = <<-HTML | 20 | options[:attribution] = <<-HTML |
| 21 | © 1993–2017, Oracle and/or its affiliates. All rights reserved.<br> | 21 | © 1993, 2020, Oracle and/or its affiliates. All rights reserved.<br> |
| 22 | Documentation extracted from Debian's OpenJDK Development Kit package.<br> | 22 | Documentation extracted from Debian's OpenJDK Development Kit package.<br> |
| 23 | Licensed under the GNU General Public License, version 2, with the Classpath Exception.<br> | 23 | Licensed under the GNU General Public License, version 2, with the Classpath Exception.<br> |
| 24 | Various third party code in OpenJDK is licensed under different licenses (see Debian package).<br> | 24 | Various third party code in OpenJDK is licensed under different licenses (see Debian package).<br> |
| 25 | Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates. | 25 | Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates. |
| 26 | HTML | 26 | HTML |
| 27 | 27 | ||
| 28 | version '11' do | ||
| 29 | self.release = '11.0.9' | ||
| 30 | self.root_path = 'index.html' | ||
| 31 | self.base_url = 'https://docs.oracle.com/en/java/javase/11/docs/api/' | ||
| 32 | options[:only_patterns] = [/\Ajava\./] | ||
| 33 | end | ||
| 34 | |||
| 28 | version '8' do | 35 | version '8' do |
| 29 | self.release = '8' | 36 | self.release = '8' |
| 30 | 37 | ||
| @@ -62,9 +62,7 @@ module Docs · 61 unmodified lines | |||
| 62 | end | 62 | end |
| 63 | 63 | ||
| 64 | def get_latest_version(opts) | 64 | def get_latest_version(opts) |
| 65 | doc = fetch_doc('http://pandas.pydata.org/pandas-docs/stable/', opts) | 65 | get_latest_github_release('pandas-dev', 'pandas', opts) |
| 66 | label = doc.at_css('.body > .section > p').content | ||
| 67 | label.scan(/Version: ([0-9.]+)/)[0][0] | ||
| 68 | end | 66 | end |
| 69 | end | 67 | end |
| 70 | end | 68 | end |
| @@ -46,8 +46,7 @@ module Docs · 45 unmodified lines | |||
| 46 | 46 | ||
| 47 | def get_latest_version(opts) | 47 | def get_latest_version(opts) |
| 48 | doc = fetch_doc('https://perldoc.perl.org/', opts) | 48 | doc = fetch_doc('https://perldoc.perl.org/', opts) |
| 49 | header = doc.at_css('h2.h1').content | 49 | doc.at_css('#dropdownlink-stable').content |
| 50 | header.scan(/Perl ([0-9.]+)/)[0][0] | ||
| 51 | end | 50 | end |
| 52 | end | 51 | end |
| 53 | end | 52 | end |
| @@ -68,9 +68,8 @@ module Docs · 67 unmodified lines | |||
| 68 | HTML | 68 | HTML |
| 69 | 69 | ||
| 70 | def get_latest_version(opts) | 70 | def get_latest_version(opts) |
| 71 | doc = fetch_doc('https://secure.php.net/manual/en/doc.changelog.php', opts) | 71 | doc = fetch_doc('https://www.php.net/supported-versions.php', opts) |
| 72 | label = doc.at_css('tbody.gen-changelog > tr > td').content | 72 | doc.at_css('table > tbody > .stable:last-of-type > td > a').content.strip |
| 73 | label.split(',').last.strip | ||
| 74 | end | 73 | end |
| 75 | end | 74 | end |
| 76 | end | 75 | end |
| @@ -51,10 +51,15 @@ module Docs · 50 unmodified lines | |||
| 51 | /\Aunsupported-features/ ] | 51 | /\Aunsupported-features/ ] |
| 52 | 52 | ||
| 53 | options[:attribution] = <<-HTML | 53 | options[:attribution] = <<-HTML |
| 54 | © 1996–2019 The PostgreSQL Global Development Group<br> | 54 | © 1996–2020 The PostgreSQL Global Development Group<br> |
| 55 | Licensed under the PostgreSQL License. | 55 | Licensed under the PostgreSQL License. |
| 56 | HTML | 56 | HTML |
| 57 | 57 | ||
| 58 | version '13' do | ||
| 59 | self.release = '13.1' | ||
| 60 | self.base_url = "https://www.postgresql.org/docs/#{version}/" | ||
| 61 | end | ||
| 62 | |||
| 58 | version '12' do | 63 | version '12' do |
| 59 | self.release = '12.1' | 64 | self.release = '12.1' |
| 60 | self.base_url = "https://www.postgresql.org/docs/#{version}/" | 65 | self.base_url = "https://www.postgresql.org/docs/#{version}/" |
| @@ -3,7 +3,7 @@ module Docs · 2 unmodified lines | |||
| 3 | self.type = 'pug' | 3 | self.type = 'pug' |
| 4 | self.base_url = 'https://pugjs.org/' | 4 | self.base_url = 'https://pugjs.org/' |
| 5 | self.root_path = 'api/getting-started.html' | 5 | self.root_path = 'api/getting-started.html' |
| 6 | self.release = '2.0.3' | 6 | self.release = '3.0.0' |
| 7 | self.links = { | 7 | self.links = { |
| 8 | home: 'https://pugjs.org/', | 8 | home: 'https://pugjs.org/', |
| 9 | code: 'https://github.com/pugjs/pug' | 9 | code: 'https://github.com/pugjs/pug' |
| @@ -18,6 +18,10 @@ module Docs · 8 unmodified lines | |||
| 18 | Licensed under the MIT license. | 18 | Licensed under the MIT license. |
| 19 | HTML | 19 | HTML |
| 20 | 20 | ||
| 21 | options[:skip_patterns] = [ | ||
| 22 | /support/ | ||
| 23 | ] | ||
| 24 | |||
| 21 | def get_latest_version(opts) | 25 | def get_latest_version(opts) |
| 22 | get_npm_version('pug', opts) | 26 | get_npm_version('pug', opts) |
| 23 | end | 27 | end |
| @@ -23,22 +23,30 @@ module Docs · 22 unmodified lines | |||
| 23 | Licensed under the PSF License. | 23 | Licensed under the PSF License. |
| 24 | HTML | 24 | HTML |
| 25 | 25 | ||
| 26 | # 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 | ||
| 27 | version '3.9' do # docs.python.org/3.9/download.html | ||
| 28 | self.release = '3.9.0' | ||
| 29 | self.base_url = 'https://docs.python.org/3.9/' | ||
| 30 | |||
| 31 | html_filters.push 'python/entries_v3', 'sphinx/clean_html', 'python/clean_html' | ||
| 32 | end | ||
| 33 | |||
| 26 | version '3.8' do # docs.python.org/3.8/download.html | 34 | version '3.8' do # docs.python.org/3.8/download.html |
| 27 | self.release = '3.8.1' | 35 | self.release = '3.8.6' |
| 28 | self.base_url = 'https://docs.python.org/3.8/' | 36 | self.base_url = 'https://docs.python.org/3.8/' |
| 29 | 37 | ||
| 30 | html_filters.push 'python/entries_v3', 'sphinx/clean_html', 'python/clean_html' | 38 | html_filters.push 'python/entries_v3', 'sphinx/clean_html', 'python/clean_html' |
| 31 | end | 39 | end |
| 32 | 40 | ||
| 33 | version '3.7' do # docs.python.org/3.7/download.html | 41 | version '3.7' do # docs.python.org/3.7/download.html |
| 34 | self.release = '3.7.6' | 42 | self.release = '3.7.9' |
| 35 | self.base_url = 'https://docs.python.org/3.7/' | 43 | self.base_url = 'https://docs.python.org/3.7/' |
| 36 | 44 | ||
| 37 | html_filters.push 'python/entries_v3', 'sphinx/clean_html', 'python/clean_html' | 45 | html_filters.push 'python/entries_v3', 'sphinx/clean_html', 'python/clean_html' |
| 38 | end | 46 | end |
| 39 | 47 | ||
| 40 | version '3.6' do # docs.python.org/3.6/download.html | 48 | version '3.6' do # docs.python.org/3.6/download.html |
| 41 | self.release = '3.6.10' | 49 | self.release = '3.6.12' |
| 42 | self.base_url = 'https://docs.python.org/3.6/' | 50 | self.base_url = 'https://docs.python.org/3.6/' |
| 43 | 51 | ||
| 44 | html_filters.push 'python/entries_v3', 'sphinx/clean_html', 'python/clean_html' | 52 | html_filters.push 'python/entries_v3', 'sphinx/clean_html', 'python/clean_html' |
| @@ -60,7 +68,7 @@ module Docs · 15 unmodified lines | |||
| 60 | 68 | ||
| 61 | def get_latest_version(opts) | 69 | def get_latest_version(opts) |
| 62 | doc = fetch_doc('https://docs.python.org/', opts) | 70 | doc = fetch_doc('https://docs.python.org/', opts) |
| 63 | doc.at_css('.version_switcher_placeholder').content | 71 | doc.at_css('title').content.split(' ')[0] |
| 64 | end | 72 | end |
| 65 | end | 73 | end |
| 66 | end | 74 | end |
| @@ -69,6 +69,10 @@ module Docs · 68 unmodified lines | |||
| 69 | Licensed under their own licenses. | 69 | Licensed under their own licenses. |
| 70 | HTML | 70 | HTML |
| 71 | 71 | ||
| 72 | version '2.7' do | ||
| 73 | self.release = '2.7.2' | ||
| 74 | end | ||
| 75 | |||
| 72 | version '2.6' do | 76 | version '2.6' do |
| 73 | self.release = '2.6.3' | 77 | self.release = '2.6.3' |
| 74 | end | 78 | end |
| @@ -2,7 +2,7 @@ module Docs · 1 unmodified line | |||
| 2 | class React < UrlScraper | 2 | class React < UrlScraper |
| 3 | self.name = 'React' | 3 | self.name = 'React' |
| 4 | self.type = 'simple' | 4 | self.type = 'simple' |
| 5 | self.release = '16.12.0' | 5 | self.release = '17.0.1' |
| 6 | self.base_url = 'https://reactjs.org/docs/' | 6 | self.base_url = 'https://reactjs.org/docs/' |
| 7 | self.root_path = 'hello-world.html' | 7 | self.root_path = 'hello-world.html' |
| 8 | self.links = { | 8 | self.links = { |
| @@ -32,8 +32,8 @@ module Docs · 31 unmodified lines | |||
| 32 | HTML | 32 | HTML |
| 33 | 33 | ||
| 34 | def get_latest_version(opts) | 34 | def get_latest_version(opts) |
| 35 | doc = fetch_doc('https://facebook.github.io/react-native/docs/getting-started.html', opts) | 35 | doc = fetch_doc('https://reactnative.dev/docs/getting-started', opts) |
| 36 | doc.at_css('header > a > h3').content | 36 | doc.at_css('meta[name="docsearch:version"]')['content'] |
| 37 | end | 37 | end |
| 38 | end | 38 | end |
| 39 | end | 39 | end |
| @@ -26,8 +26,7 @@ module Docs · 25 unmodified lines | |||
| 26 | HTML | 26 | HTML |
| 27 | 27 | ||
| 28 | def get_latest_version(opts) | 28 | def get_latest_version(opts) |
| 29 | doc = fetch_doc('https://scikit-learn.org/stable/documentation.html', opts) | 29 | get_latest_github_release('scikit-learn', 'scikit-learn', opts) |
| 30 | doc.at_css('.body h1').content.scan(/([0-9.]+)/)[0][0] | ||
| 31 | end | 30 | end |
| 32 | end | 31 | end |
| 33 | end | 32 | end |
| @@ -2,7 +2,7 @@ module Docs · 1 unmodified line | |||
| 2 | class Sqlite < FileScraper | 2 | class Sqlite < FileScraper |
| 3 | self.name = 'SQLite' | 3 | self.name = 'SQLite' |
| 4 | self.type = 'sqlite' | 4 | self.type = 'sqlite' |
| 5 | self.release = '3.30.1' | 5 | self.release = '3.33.0' |
| 6 | self.base_url = 'https://sqlite.org/' | 6 | self.base_url = 'https://sqlite.org/' |
| 7 | self.root_path = 'docs.html' | 7 | self.root_path = 'docs.html' |
| 8 | self.initial_paths = %w(keyword_index.html) | 8 | self.initial_paths = %w(keyword_index.html) |
| @@ -22,8 +22,7 @@ module Docs · 21 unmodified lines | |||
| 22 | HTML | 22 | HTML |
| 23 | 23 | ||
| 24 | def get_latest_version(opts) | 24 | def get_latest_version(opts) |
| 25 | doc = fetch_doc('http://www.statsmodels.org/stable/', opts) | 25 | get_latest_github_release('statsmodels', 'statsmodels', opts) |
| 26 | doc.at_css('.sphinxsidebarwrapper h3 + p > b').content[1..-1] | ||
| 27 | end | 26 | end |
| 28 | end | 27 | end |
| 29 | end | 28 | end |
| @@ -20,8 +20,7 @@ module Docs · 19 unmodified lines | |||
| 20 | HTML | 20 | HTML |
| 21 | 21 | ||
| 22 | def get_latest_version(opts) | 22 | def get_latest_version(opts) |
| 23 | contents = get_github_file_contents('hashicorp', 'vagrant', 'website/config.rb', opts) | 23 | get_github_tags('hashicorp', 'vagrant', opts)[0]['name'][1..-1] |
| 24 | contents.scan(/version\s+=\s+"([0-9.]+)"/)[0][0] | ||
| 25 | end | 24 | end |
| 26 | end | 25 | end |
| 27 | end | 26 | end |
| @@ -1 +1 @@ | |||
| 1 | http://www.postgresql.org/about/press/presskit93/#logos | 1 | https://www.postgresql.org/about/press/presskit93/#logos |
| @@ -1 +1,2 @@ | |||
| 1 | http://commons.wikimedia.org/wiki/File:Ruby_logo.svg | 1 | https://www.ruby-lang.org/en/about/logo/ |
| 2 | https://commons.wikimedia.org/wiki/File:Ruby_logo.svg | ||