History

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.

Stefan Breunig committed 2 years ago

Commit e5fc6c21 parent 313a0553 files · +32 −205Browse files

Unified · Split

3 files
  1. lib/docs/filters/elixir/clean_html.rb +7 −22
  2. lib/docs/filters/elixir/entries.rb +14 −24
  3. lib/docs/scrapers/elixir.rb +11 −159
lib/docs/filters/elixir/clean_html.rb+7−22
@@ -2,32 +2,12 @@ module Docs · 1 unmodified line
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 @@ module Docs · 31 unmodified lines
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+14−24
@@ -3,25 +3,21 @@ module Docs · 2 unmodified lines
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'
@@ -29,19 +25,13 @@ module Docs · 1 unmodified line
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+11−159
@@ -4,7 +4,7 @@ module Docs · 3 unmodified lines
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'
@@ -12,193 +12,45 @@ module Docs · 1 unmodified line
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