Skip to content

Commit 15b8875

Browse files
authored
Merge pull request #2266 from breunigs/ex-1.16-1.17
Update Elixir documentation (1.16 and 1.17)
2 parents 01df1f6 + 59aaafc commit 15b8875

File tree

3 files changed

+52
-54
lines changed

3 files changed

+52
-54
lines changed

lib/docs/filters/elixir/clean_html.rb

Lines changed: 7 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,32 +2,12 @@ module Docs
22
class Elixir
33
class CleanHtmlFilter < Filter
44
def call
5-
if current_url.path.start_with?('/getting-started')
6-
guide
7-
else
8-
api
9-
end
5+
api
106
doc
117
end
128

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-
279
def api
28-
css('.hover-link', 'footer', ':not(.detail-header) > .view-source').remove
29-
30-
css('h1 .settings').remove
10+
css('.top-search').remove
3111

3212
css('.summary').each do |node|
3313
node.name = 'dl'
@@ -65,6 +45,11 @@ def api
6545
end
6646
end
6747

48+
css('h1 a.icon-action[title="View Source"]').each do |node|
49+
node['class'] = 'source'
50+
node.content = "Source"
51+
end
52+
6853
css('pre').each do |node|
6954
node['data-language'] = 'elixir'
7055
node.content = node.content

lib/docs/filters/elixir/entries.rb

Lines changed: 14 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3,45 +3,35 @@ class Elixir
33
class EntriesFilter < Docs::EntriesFilter
44
def get_name
55
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
147
end
158

169
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'
2521
else
2622
case at_css('h1 small').try(:content)
2723
when 'exception'
2824
'Exceptions'
2925
when 'protocol'
3026
'Protocols'
3127
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
3929
end
4030
end
4131
end
4232

4333
def additional_entries
44-
return [] if type == 'Exceptions' || type == 'Guide' || root_page?
34+
return [] if root_page?
4535

4636
css('.detail-header').map do |node|
4737
id = node['id']

lib/docs/scrapers/elixir.rb

Lines changed: 31 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,35 +4,58 @@ class Elixir < UrlScraper
44

55
self.name = 'Elixir'
66
self.type = 'elixir'
7-
self.root_path = 'api-reference.html'
7+
self.root_path = 'introduction.html'
88
self.links = {
99
home: 'https://elixir-lang.org/',
1010
code: 'https://github.com/elixir-lang/elixir'
1111
}
1212

1313
html_filters.push 'elixir/clean_html', 'elixir/entries', 'title'
1414

15-
options[:container] = ->(filter) {
16-
filter.current_url.path.start_with?('/getting-started') ? '#main' : '#content'
17-
}
15+
options[:container] = '#content'
1816
options[:title] = false
1917
options[:root_title] = 'Elixir'
2018

2119
options[:attribution] = <<-HTML
22-
&copy; 2012 Plataformatec<br>
20+
&copy; 2012-2024 The Elixir Team<br>
2321
Licensed under the Apache License, Version 2.0.
2422
HTML
2523

2624
def initial_urls
27-
[ "https://hexdocs.pm/elixir/#{self.class.release}/api-reference.html",
25+
[ "https://hexdocs.pm/elixir/#{self.class.release}/introduction.html",
2826
"https://hexdocs.pm/eex/#{self.class.release}/EEx.html",
2927
"https://hexdocs.pm/ex_unit/#{self.class.release}/ExUnit.html",
3028
"https://hexdocs.pm/iex/#{self.class.release}/IEx.html",
3129
"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+
]
3443
end
3544

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+
3659
version '1.15' do
3760
self.release = '1.15.4'
3861
self.base_urls = [

0 commit comments

Comments
 (0)