Skip to content

Commit e5fc6c2

Browse files
committed
Update Elixir documentation (1.16 and 1.17)
The guides have moved from a separate page into the same documentation system. This required shuffling of the cleanup functions, which is subtly incompatible with the docs of the older versions, or would have required if/else in various places. For legibility, I thus opted to remove old versions.
1 parent 313a055 commit e5fc6c2

File tree

3 files changed

+32
-205
lines changed

3 files changed

+32
-205
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: 11 additions & 159 deletions
Original file line numberDiff line numberDiff line change
@@ -4,201 +4,53 @@ 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" ]
34-
end
35-
36-
version '1.15' do
37-
self.release = '1.15.4'
38-
self.base_urls = [
39-
"https://hexdocs.pm/elixir/#{release}/",
40-
"https://hexdocs.pm/eex/#{release}/",
41-
"https://hexdocs.pm/ex_unit/#{release}/",
42-
"https://hexdocs.pm/iex/#{release}/",
43-
"https://hexdocs.pm/logger/#{release}/",
44-
"https://hexdocs.pm/mix/#{release}/",
45-
'https://elixir-lang.org/getting-started/'
46-
]
47-
end
48-
49-
version '1.14' do
50-
self.release = '1.14.1'
51-
self.base_urls = [
52-
"https://hexdocs.pm/elixir/#{release}/",
53-
"https://hexdocs.pm/eex/#{release}/",
54-
"https://hexdocs.pm/ex_unit/#{release}/",
55-
"https://hexdocs.pm/iex/#{release}/",
56-
"https://hexdocs.pm/logger/#{release}/",
57-
"https://hexdocs.pm/mix/#{release}/",
58-
'https://elixir-lang.org/getting-started/'
59-
]
60-
end
61-
62-
version '1.13' do
63-
self.release = '1.13.4'
64-
self.base_urls = [
65-
"https://hexdocs.pm/elixir/#{release}/",
66-
"https://hexdocs.pm/eex/#{release}/",
67-
"https://hexdocs.pm/ex_unit/#{release}/",
68-
"https://hexdocs.pm/iex/#{release}/",
69-
"https://hexdocs.pm/logger/#{release}/",
70-
"https://hexdocs.pm/mix/#{release}/",
71-
'https://elixir-lang.org/getting-started/'
72-
]
73-
end
74-
75-
version '1.12' do
76-
self.release = '1.12.0'
77-
self.base_urls = [
78-
"https://hexdocs.pm/elixir/#{release}/",
79-
"https://hexdocs.pm/eex/#{release}/",
80-
"https://hexdocs.pm/ex_unit/#{release}/",
81-
"https://hexdocs.pm/iex/#{release}/",
82-
"https://hexdocs.pm/logger/#{release}/",
83-
"https://hexdocs.pm/mix/#{release}/",
84-
'https://elixir-lang.org/getting-started/'
85-
]
86-
end
87-
88-
version '1.11' do
89-
self.release = '1.11.2'
90-
self.base_urls = [
91-
"https://hexdocs.pm/elixir/#{release}/",
92-
"https://hexdocs.pm/eex/#{release}/",
93-
"https://hexdocs.pm/ex_unit/#{release}/",
94-
"https://hexdocs.pm/iex/#{release}/",
95-
"https://hexdocs.pm/logger/#{release}/",
96-
"https://hexdocs.pm/mix/#{release}/",
97-
'https://elixir-lang.org/getting-started/'
98-
]
99-
end
100-
101-
version '1.10' do
102-
self.release = '1.10.4'
103-
self.base_urls = [
104-
"https://hexdocs.pm/elixir/#{release}/",
105-
"https://hexdocs.pm/eex/#{release}/",
106-
"https://hexdocs.pm/ex_unit/#{release}/",
107-
"https://hexdocs.pm/iex/#{release}/",
108-
"https://hexdocs.pm/logger/#{release}/",
109-
"https://hexdocs.pm/mix/#{release}/",
110-
'https://elixir-lang.org/getting-started/'
111-
]
112-
end
113-
114-
version '1.9' do
115-
self.release = '1.9.4'
116-
self.base_urls = [
117-
"https://hexdocs.pm/elixir/#{release}/",
118-
"https://hexdocs.pm/eex/#{release}/",
119-
"https://hexdocs.pm/ex_unit/#{release}/",
120-
"https://hexdocs.pm/iex/#{release}/",
121-
"https://hexdocs.pm/logger/#{release}/",
122-
"https://hexdocs.pm/mix/#{release}/",
123-
'https://elixir-lang.org/getting-started/'
124-
]
125-
end
126-
127-
version '1.8' do
128-
self.release = '1.8.2'
129-
self.base_urls = [
130-
"https://hexdocs.pm/elixir/#{release}/",
131-
"https://hexdocs.pm/eex/#{release}/",
132-
"https://hexdocs.pm/ex_unit/#{release}/",
133-
"https://hexdocs.pm/iex/#{release}/",
134-
"https://hexdocs.pm/logger/#{release}/",
135-
"https://hexdocs.pm/mix/#{release}/",
136-
'https://elixir-lang.org/getting-started/'
137-
]
138-
end
139-
140-
version '1.7' do
141-
self.release = '1.7.4'
142-
self.base_urls = [
143-
"https://hexdocs.pm/elixir/#{release}/",
144-
"https://hexdocs.pm/eex/#{release}/",
145-
"https://hexdocs.pm/ex_unit/#{release}/",
146-
"https://hexdocs.pm/iex/#{release}/",
147-
"https://hexdocs.pm/logger/#{release}/",
148-
"https://hexdocs.pm/mix/#{release}/",
149-
'https://elixir-lang.org/getting-started/'
150-
]
151-
end
152-
153-
version '1.6' do
154-
self.release = '1.6.6'
155-
self.base_urls = [
156-
"https://hexdocs.pm/elixir/#{release}/",
157-
"https://hexdocs.pm/eex/#{release}/",
158-
"https://hexdocs.pm/ex_unit/#{release}/",
159-
"https://hexdocs.pm/iex/#{release}/",
160-
"https://hexdocs.pm/logger/#{release}/",
161-
"https://hexdocs.pm/mix/#{release}/",
162-
'https://elixir-lang.org/getting-started/'
163-
]
164-
end
165-
166-
version '1.5' do
167-
self.release = '1.5.3'
168-
self.base_urls = [
169-
"https://hexdocs.pm/elixir/#{release}/",
170-
"https://hexdocs.pm/eex/#{release}/",
171-
"https://hexdocs.pm/ex_unit/#{release}/",
172-
"https://hexdocs.pm/iex/#{release}/",
173-
"https://hexdocs.pm/logger/#{release}/",
174-
"https://hexdocs.pm/mix/#{release}/",
175-
'https://elixir-lang.org/getting-started/'
176-
]
30+
"https://hexdocs.pm/mix/#{self.class.release}/Mix.html" ]
17731
end
17832

179-
version '1.4' do
180-
self.release = '1.4.5'
33+
version '1.17' do
34+
self.release = '1.17.0'
18135
self.base_urls = [
18236
"https://hexdocs.pm/elixir/#{release}/",
18337
"https://hexdocs.pm/eex/#{release}/",
18438
"https://hexdocs.pm/ex_unit/#{release}/",
18539
"https://hexdocs.pm/iex/#{release}/",
18640
"https://hexdocs.pm/logger/#{release}/",
187-
"https://hexdocs.pm/mix/#{release}/",
188-
'https://elixir-lang.org/getting-started/'
41+
"https://hexdocs.pm/mix/#{release}/"
18942
]
19043
end
19144

192-
version '1.3' do
193-
self.release = '1.3.4'
45+
version '1.16' do
46+
self.release = '1.16.3'
19447
self.base_urls = [
19548
"https://hexdocs.pm/elixir/#{release}/",
19649
"https://hexdocs.pm/eex/#{release}/",
19750
"https://hexdocs.pm/ex_unit/#{release}/",
19851
"https://hexdocs.pm/iex/#{release}/",
19952
"https://hexdocs.pm/logger/#{release}/",
200-
"https://hexdocs.pm/mix/#{release}/",
201-
'https://elixir-lang.org/getting-started/'
53+
"https://hexdocs.pm/mix/#{release}/"
20254
]
20355
end
20456

0 commit comments

Comments
 (0)