Showing the changes to lib/docs (12 of 21 files). Show all
Unified · Split
| @@ -2,32 +2,12 @@ module Docs · 1 unmodified line | ||
| 2 | 2 | class Elixir |
| 3 | 3 | class CleanHtmlFilter < Filter |
| 4 | 4 | def call |
| 5 | − if current_url.path.start_with?('/getting-started') | |
| 6 | − guide | |
| 7 | − else | |
| 8 | − api | |
| 9 | − end | |
| 5 | + api | |
| 10 | 6 | doc |
| 11 | 7 | end |
| 12 | 8 | |
| 13 | − def guide | |
| 14 | − @doc = at_css('#content article') | |
| 15 | − | |
| 16 | − css('pre > code').each do |node| | |
| 17 | − node.parent.content = node.content | |
| 18 | − end | |
| 19 | − | |
| 20 | − css('div > pre.highlight').each do |node| | |
| 21 | − node.content = node.content | |
| 22 | − node['data-language'] = node.parent['class'][/language-(\w+)/, 1] | |
| 23 | − node.parent.before(node).remove | |
| 24 | − end | |
| 25 | − end | |
| 26 | − | |
| 27 | 9 | def api |
| 28 | − css('.hover-link', 'footer', ':not(.detail-header) > .view-source').remove | |
| 29 | − | |
| 30 | − css('h1 .settings').remove | |
| 10 | + css('.top-search').remove | |
| 31 | 11 | |
| 32 | 12 | css('.summary').each do |node| |
| 33 | 13 | node.name = 'dl' |
| @@ -65,6 +45,11 @@ module Docs · 31 unmodified lines | ||
| 65 | 45 | end |
| 66 | 46 | end |
| 67 | 47 | |
| 48 | + css('h1 a.icon-action[title="View Source"]').each do |node| | |
| 49 | + node['class'] = 'source' | |
| 50 | + node.content = "Source" | |
| 51 | + end | |
| 52 | + | |
| 68 | 53 | css('pre').each do |node| |
| 69 | 54 | node['data-language'] = 'elixir' |
| 70 | 55 | node.content = node.content |
| @@ -3,25 +3,21 @@ module Docs · 2 unmodified lines | ||
| 3 | 3 | class EntriesFilter < Docs::EntriesFilter |
| 4 | 4 | def get_name |
| 5 | 5 | css('h1 .app-vsn').remove |
| 6 | − name = (at_css('h1 > span') or at_css('h1')).content.strip | |
| 7 | − | |
| 8 | − if current_url.path.start_with?('/getting-started') | |
| 9 | − name.remove(/\.\z/) | |
| 10 | − else | |
| 11 | − name = name.split(' ').first unless name.start_with?('mix ') # ecto | |
| 12 | − name | |
| 13 | − end | |
| 6 | + (at_css('h1 > span') or at_css('h1')).content.strip | |
| 14 | 7 | end |
| 15 | 8 | |
| 16 | 9 | def get_type |
| 17 | − if current_url.path.start_with?('/getting-started') | |
| 18 | − if subpath.start_with?('mix-otp') | |
| 19 | − 'Guide: Mix & OTP' | |
| 20 | − elsif subpath.start_with?('meta') | |
| 21 | − 'Guide: Metaprogramming' | |
| 22 | − else | |
| 23 | − 'Guide' | |
| 24 | − end | |
| 10 | + section = at_css('h1 a.source').attr('href').match('elixir/pages/([^/]+)/')&.captures&.first | |
| 11 | + if section == "mix-and-otp" | |
| 12 | + return "Mix & OTP" | |
| 13 | + elsif section | |
| 14 | + return section.gsub("-", " ").capitalize | |
| 15 | + end | |
| 16 | + | |
| 17 | + name = at_css('h1 span').text | |
| 18 | + case name.split(' ').first | |
| 19 | + when 'mix' then 'Mix Tasks' | |
| 20 | + when 'Changelog' then 'References' | |
| 25 | 21 | else |
| 26 | 22 | case at_css('h1 small').try(:content) |
| 27 | 23 | when 'exception' |
| @@ -29,19 +25,13 @@ module Docs · 1 unmodified line | ||
| 29 | 25 | when 'protocol' |
| 30 | 26 | 'Protocols' |
| 31 | 27 | else |
| 32 | − if name.start_with?('Phoenix') | |
| 33 | − name.split('.')[0..2].join('.') | |
| 34 | − elsif name.start_with?('mix ') | |
| 35 | − 'Mix Tasks' | |
| 36 | − else | |
| 37 | − name.split('.').first | |
| 38 | − end | |
| 28 | + name | |
| 39 | 29 | end |
| 40 | 30 | end |
| 41 | 31 | end |
| 42 | 32 | |
| 43 | 33 | def additional_entries |
| 44 | − return [] if type == 'Exceptions' || type == 'Guide' || root_page? | |
| 34 | + return [] if root_page? | |
| 45 | 35 | |
| 46 | 36 | css('.detail-header').map do |node| |
| 47 | 37 | id = node['id'] |
| @@ -4,7 +4,7 @@ module Docs · 3 unmodified lines | ||
| 4 | 4 | class Qunit |
| 5 | 5 | class CleanHtmlFilter < Filter |
| 6 | 6 | def call |
| 7 | − @doc = at_css('.content[role="main"]') | |
| 7 | + @doc = at_css('.content[role="main"] > article') | |
| 8 | 8 | css('.sidebar').remove |
| 9 | 9 | css('pre').each do |node| |
| 10 | 10 | node['data-language'] = 'javascript' |
| @@ -4,7 +4,7 @@ module Docs · 3 unmodified lines | ||
| 4 | 4 | |
| 5 | 5 | self.name = 'Elixir' |
| 6 | 6 | self.type = 'elixir' |
| 7 | − self.root_path = 'api-reference.html' | |
| 7 | + self.root_path = 'introduction.html' | |
| 8 | 8 | self.links = { |
| 9 | 9 | home: 'https://elixir-lang.org/', |
| 10 | 10 | code: 'https://github.com/elixir-lang/elixir' |
| @@ -12,27 +12,50 @@ module Docs · 1 unmodified line | ||
| 12 | 12 | |
| 13 | 13 | html_filters.push 'elixir/clean_html', 'elixir/entries', 'title' |
| 14 | 14 | |
| 15 | − options[:container] = ->(filter) { | |
| 16 | − filter.current_url.path.start_with?('/getting-started') ? '#main' : '#content' | |
| 17 | − } | |
| 15 | + options[:container] = '#content' | |
| 18 | 16 | options[:title] = false |
| 19 | 17 | options[:root_title] = 'Elixir' |
| 20 | 18 | |
| 21 | 19 | options[:attribution] = <<-HTML |
| 22 | − © 2012 Plataformatec<br> | |
| 20 | + © 2012-2024 The Elixir Team<br> | |
| 23 | 21 | Licensed under the Apache License, Version 2.0. |
| 24 | 22 | HTML |
| 25 | 23 | |
| 26 | 24 | def initial_urls |
| 27 | − [ "https://hexdocs.pm/elixir/#{self.class.release}/api-reference.html", | |
| 25 | + [ "https://hexdocs.pm/elixir/#{self.class.release}/introduction.html", | |
| 28 | 26 | "https://hexdocs.pm/eex/#{self.class.release}/EEx.html", |
| 29 | 27 | "https://hexdocs.pm/ex_unit/#{self.class.release}/ExUnit.html", |
| 30 | 28 | "https://hexdocs.pm/iex/#{self.class.release}/IEx.html", |
| 31 | 29 | "https://hexdocs.pm/logger/#{self.class.release}/Logger.html", |
| 32 | − "https://hexdocs.pm/mix/#{self.class.release}/Mix.html", | |
| 33 | − "https://elixir-lang.org/getting-started/introduction.html" ] | |
| 30 | + "https://hexdocs.pm/mix/#{self.class.release}/Mix.html" ] | |
| 31 | + end | |
| 32 | + | |
| 33 | + version '1.17' do | |
| 34 | + self.release = '1.17.2' | |
| 35 | + self.base_urls = [ | |
| 36 | + "https://hexdocs.pm/elixir/#{release}/", | |
| 37 | + "https://hexdocs.pm/eex/#{release}/", | |
| 38 | + "https://hexdocs.pm/ex_unit/#{release}/", | |
| 39 | + "https://hexdocs.pm/iex/#{release}/", | |
| 40 | + "https://hexdocs.pm/logger/#{release}/", | |
| 41 | + "https://hexdocs.pm/mix/#{release}/" | |
| 42 | + ] | |
| 34 | 43 | end |
| 35 | 44 | |
| 45 | + version '1.16' do | |
| 46 | + self.release = '1.16.3' | |
| 47 | + self.base_urls = [ | |
| 48 | + "https://hexdocs.pm/elixir/#{release}/", | |
| 49 | + "https://hexdocs.pm/eex/#{release}/", | |
| 50 | + "https://hexdocs.pm/ex_unit/#{release}/", | |
| 51 | + "https://hexdocs.pm/iex/#{release}/", | |
| 52 | + "https://hexdocs.pm/logger/#{release}/", | |
| 53 | + "https://hexdocs.pm/mix/#{release}/" | |
| 54 | + ] | |
| 55 | + end | |
| 56 | + | |
| 57 | + # scraping of older versions is no longer supported! | |
| 58 | + | |
| 36 | 59 | version '1.15' do |
| 37 | 60 | self.release = '1.15.4' |
| 38 | 61 | self.base_urls = [ |
| @@ -2,7 +2,7 @@ module Docs · 1 unmodified line | ||
| 2 | 2 | class Fastapi < UrlScraper |
| 3 | 3 | self.name = 'FastAPI' |
| 4 | 4 | self.type = 'fastapi' |
| 5 | − self.release = '0.100.1' | |
| 5 | + self.release = '0.111.1' | |
| 6 | 6 | self.base_url = 'https://fastapi.tiangolo.com/' |
| 7 | 7 | self.root_path = '/' |
| 8 | 8 | self.links = { |
| @@ -29,8 +29,22 @@ module Docs · 28 unmodified lines | ||
| 29 | 29 | Laravel is a trademark of Taylor Otwell. |
| 30 | 30 | HTML |
| 31 | 31 | |
| 32 | + version '11' do | |
| 33 | + self.release = '11.11.1' | |
| 34 | + self.root_path = '/api/11.x/index.html' | |
| 35 | + self.initial_paths = %w(/docs/11.x/installation /api/11.x/classes.html) | |
| 36 | + | |
| 37 | + options[:only_patterns] = [%r{\A/api/11\.x/}, %r{\A/docs/11\.x/}] | |
| 38 | + | |
| 39 | + options[:fix_urls] = ->(url) do | |
| 40 | + url.sub! %r{11.x/+}, "11.x/" | |
| 41 | + url.sub! %r{#{Regexp.escape(Laravel.base_url)}/docs\/(?![1-9]?\d)}, "#{Laravel.base_url}/docs/11.x/" | |
| 42 | + url | |
| 43 | + end | |
| 44 | + end | |
| 45 | + | |
| 32 | 46 | version '10' do |
| 33 | − self.release = '10.13.0' | |
| 47 | + self.release = '10.48.14' | |
| 34 | 48 | self.root_path = '/api/10.x/index.html' |
| 35 | 49 | self.initial_paths = %w(/docs/10.x/installation /api/10.x/classes.html) |
| 36 | 50 | |
| @@ -44,7 +58,7 @@ module Docs · 7 unmodified lines | ||
| 44 | 58 | end |
| 45 | 59 | |
| 46 | 60 | version '9' do |
| 47 | − self.release = '9.52.8' | |
| 61 | + self.release = '9.52.16' | |
| 48 | 62 | self.root_path = '/api/9.x/index.html' |
| 49 | 63 | self.initial_paths = %w(/docs/9.x/installation /api/9.x/classes.html) |
| 50 | 64 | |
| @@ -16,6 +16,29 @@ module Docs · 15 unmodified lines | ||
| 16 | 16 | Licensed under the 3-clause BSD License. |
| 17 | 17 | HTML |
| 18 | 18 | |
| 19 | + version '2' do | |
| 20 | + self.release = '2.2.2' | |
| 21 | + self.base_url = "https://pandas.pydata.org/pandas-docs/version/#{self.release}/" | |
| 22 | + | |
| 23 | + html_filters.push 'pandas/clean_html', 'pandas/entries' | |
| 24 | + | |
| 25 | + options[:container] = 'main section' | |
| 26 | + | |
| 27 | + options[:skip_patterns] = [ | |
| 28 | + /development/, | |
| 29 | + /getting_started/, | |
| 30 | + /whatsnew/ | |
| 31 | + ] | |
| 32 | + | |
| 33 | + options[:skip] = [ | |
| 34 | + 'panel.html', | |
| 35 | + 'pandas.pdf', | |
| 36 | + 'pandas.zip', | |
| 37 | + 'ecosystem.html' | |
| 38 | + ] | |
| 39 | + | |
| 40 | + end | |
| 41 | + | |
| 19 | 42 | version '1' do |
| 20 | 43 | self.release = '1.5.0' |
| 21 | 44 | self.base_url = "https://pandas.pydata.org/pandas-docs/version/#{self.release}/" |
| @@ -1,5 +1,5 @@ | ||
| 1 | 1 | module Docs |
| 2 | − class Python < FileScraper | |
| 2 | + class Python < UrlScraper | |
| 3 | 3 | self.type = 'python' |
| 4 | 4 | self.root_path = 'index.html' |
| 5 | 5 | self.links = { |
| @@ -23,12 +23,12 @@ module Docs · 17 unmodified lines | ||
| 23 | 23 | library/sunau.html) |
| 24 | 24 | |
| 25 | 25 | options[:attribution] = <<-HTML |
| 26 | − © 2001–2023 Python Software Foundation<br> | |
| 26 | + © 2001–2024 Python Software Foundation<br> | |
| 27 | 27 | Licensed under the PSF License. |
| 28 | 28 | HTML |
| 29 | 29 | |
| 30 | 30 | version '3.12' do |
| 31 | − self.release = '3.12.1' | |
| 31 | + self.release = '3.12.4' | |
| 32 | 32 | self.base_url = "https://docs.python.org/#{self.version}/" |
| 33 | 33 | |
| 34 | 34 | html_filters.push 'python/entries_v3', 'sphinx/clean_html', 'python/clean_html' |
| @@ -4,8 +4,8 @@ module Docs · 3 unmodified lines | ||
| 4 | 4 | class Qunit < UrlScraper |
| 5 | 5 | self.name = 'QUnit' |
| 6 | 6 | self.type = 'qunit' |
| 7 | − self.release = '2.19.3' | |
| 8 | − self.base_url = 'https://api.qunitjs.com/' | |
| 7 | + self.release = '2.21.0' | |
| 8 | + self.base_url = 'https://qunitjs.com/api/' | |
| 9 | 9 | self.root_path = '/' |
| 10 | 10 | self.links = { |
| 11 | 11 | home: 'https://qunitjs.com/', |
| @@ -18,13 +18,14 @@ module Docs · 6 unmodified lines | ||
| 18 | 18 | |
| 19 | 19 | options[:container] = '.main' |
| 20 | 20 | options[:skip_patterns] = [ |
| 21 | − /deprecated/, | |
| 22 | 21 | /^QUnit$/, |
| 23 | 22 | /^assert$/, |
| 24 | 23 | /^callbacks$/, |
| 25 | 24 | /^async$/, |
| 26 | 25 | /^config$/, |
| 27 | 26 | /^extension$/, |
| 27 | + /^deprecated$/, | |
| 28 | + /^removed$/, | |
| 28 | 29 | ] |
| 29 | 30 | |
| 30 | 31 | options[:attribution] = <<-HTML |
| @@ -3,7 +3,7 @@ · 2 unmodified lines | ||
| 3 | 3 | module Docs |
| 4 | 4 | class Rust < UrlScraper |
| 5 | 5 | self.type = 'rust' |
| 6 | − self.release = '1.75.0' | |
| 6 | + self.release = '1.79.0' | |
| 7 | 7 | self.base_url = 'https://doc.rust-lang.org/' |
| 8 | 8 | self.root_path = 'book/index.html' |
| 9 | 9 | self.initial_paths = %w( |
| @@ -7,7 +7,7 @@ module Docs · 6 unmodified lines | ||
| 7 | 7 | self.name = 'Support Tables' |
| 8 | 8 | self.slug = 'browser_support_tables' |
| 9 | 9 | self.type = 'support_tables' |
| 10 | − self.release = '1.0.30001574' | |
| 10 | + self.release = '1.0.30001642' | |
| 11 | 11 | self.base_url = 'https://github.com/Fyrd/caniuse/raw/main/' |
| 12 | 12 | |
| 13 | 13 | # https://github.com/Fyrd/caniuse/blob/main/LICENSE |
| @@ -17,7 +17,7 @@ module Docs · 16 unmodified lines | ||
| 17 | 17 | Licensed under the MIT License. |
| 18 | 18 | HTML |
| 19 | 19 | |
| 20 | − self.release = '1.2.2' | |
| 20 | + self.release = '2.0.3' | |
| 21 | 21 | self.base_url = 'https://vitest.dev/' |
| 22 | 22 | self.initial_paths = %w(guide/) |
| 23 | 23 | html_filters.push 'vitest/entries', 'vite/clean_html' |