Skip to content

Commit eca9970

Browse files
authored
Merge pull request #1483 from yads/fix-ember-docs
update Ember docs to latest version
2 parents 4c6c270 + 5c99f2c commit eca9970

File tree

4 files changed

+71
-63
lines changed

4 files changed

+71
-63
lines changed

assets/javascripts/templates/pages/about_tmpl.coffee

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,7 @@ credits = [
273273
'https://www.gnu.org/licenses/gpl-3.0.html'
274274
], [
275275
'Ember.js',
276-
'2017 Yehuda Katz, Tom Dale and Ember.js contributors',
276+
'2020 Yehuda Katz, Tom Dale and Ember.js contributors',
277277
'MIT',
278278
'https://raw.githubusercontent.com/emberjs/ember.js/master/LICENSE'
279279
], [

lib/docs/filters/ember/clean_html.rb

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,14 @@ module Docs
22
class Ember
33
class CleanHtmlFilter < Filter
44
def call
5-
css('hr', '.edit-page').remove
5+
css('hr', '.edit-page', '.heading__link__edit', 'aside', '.old-version-warning').remove
66

7+
base_url.host.start_with?('api') ? api : guide
8+
9+
doc
10+
end
11+
12+
def api
713
# Remove code highlighting
814
css('.highlight').each do |node|
915
node.before(%(<div class="pre-title"><code>#{node.at_css('thead').content.strip}</code></div>)) if node.at_css('thead')
@@ -13,12 +19,6 @@ def call
1319
node['data-language'] = node['data-language'].sub(/(hbs|handlebars)/, 'html')
1420
end
1521

16-
base_url.path.start_with?('/api') ? api : guide
17-
18-
doc
19-
end
20-
21-
def api
2222
css('h1 .access').each do |node|
2323
node.replace(" (#{node.content})")
2424
end
@@ -72,7 +72,13 @@ def api
7272
end
7373

7474
def guide
75-
@doc = at_css('article')
75+
# Remove code highlighting
76+
css('.filename').each do |node|
77+
node.content = node.at_css('pre code').content
78+
node.name = 'pre'
79+
node['data-language'] = node['class'][/(javascript|js|html|hbs|handlebars)/, 1]
80+
node['data-language'] = node['data-language'].sub(/(hbs|handlebars)/, 'html')
81+
end
7682

7783
if root_page?
7884
at_css('h1').content = 'Ember.js'

lib/docs/filters/ember/entries.rb

Lines changed: 26 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -2,60 +2,52 @@ module Docs
22
class Ember
33
class EntriesFilter < Docs::EntriesFilter
44
def get_name
5-
if base_url.path.start_with?('/api')
6-
name = at_css('h1').child.content.strip
7-
# Remove "Ember." prefix if the next character is uppercase
8-
name.sub! %r{\AEmber\.([A-Z])(?!EATURES)}, '\1'
5+
name = at_css('h1').content
6+
if base_url.host.start_with?('api')
7+
name.gsub!('Package', '')
8+
name.gsub!('Class', '')
9+
name.strip!
910
name << ' (methods)' if subpath.end_with?('/methods')
1011
name << ' (properties)' if subpath.end_with?('/properties')
1112
name << ' (events)' if subpath.end_with?('/events')
12-
name
13-
else
14-
name = at_css('article h1').content.remove('Edit Page').strip
15-
name = at_css('li.toc-level-0.selected > a').content if name == 'Introduction'
16-
name
1713
end
14+
name
1815
end
1916

2017
def get_type
21-
if base_url.path.start_with?('/api')
18+
if base_url.host.start_with?('api')
2219
name = self.name.remove(/ \(.*/)
23-
if name =~ /\A[a-z\-]+\z/
24-
'Modules'
25-
elsif name.start_with?('DS')
26-
'Data'
27-
elsif name.start_with?('RSVP')
28-
'RSVP'
29-
elsif name.start_with?('Test')
30-
'Test'
31-
elsif name.start_with?('Ember')
32-
name.split('.')[0..1].join('.')
20+
if name == 'Function'
21+
'3. Functions'
22+
elsif at_css('h1').content.start_with?('Package')
23+
'2. Packages'
3324
else
34-
name.split('.').first
25+
name = name.remove(' (methods)').remove(' (properties)').remove(' (events)')
26+
# Reference gets sorted to the top by default, need to have it with other classes so add a zero width space
27+
name == 'Reference' ? 'Reference​' : name
3528
end
3629
else
37-
if node = at_css('li.toc-level-0.selected > a')
38-
"Guide: #{node.content.strip}"
39-
else
40-
'Guide'
41-
end
30+
'1. Guide'
4231
end
4332
end
4433

34+
def include_default_entry?
35+
return false if name == 'Function' # these should be included in the corresponding Package page
36+
37+
super
38+
end
39+
4540
def additional_entries
46-
return [] unless base_url.path.start_with?('/api')
41+
return [] unless base_url.host.start_with?('api')
4742

4843
css('section').each_with_object [] do |node, entries|
49-
next unless heading = node.at_css('h3[data-anchor]')
50-
next if node.at_css('.github-link').content.include?('Inherited')
44+
next unless heading = node.at_css('> h3[data-anchor]')
45+
5146
name = heading.at_css('span').content.strip
5247

53-
# Give their own type to "Ember.platform", "Ember.run", etc.
54-
if self.type != 'Data' && name.include?('.')
55-
type = "#{self.name.remove(/ \(.*/)}.#{name.split('.').first}"
56-
end
48+
next if name.start_with?('_') # exclude private methods/properties
5749

58-
name.prepend "#{self.name.remove(/ \(.*/)}."
50+
name.prepend "#{self.name.remove(/ \(.*/)}." unless self.name == 'Function'
5951
name << '()' if node['class'].include?('method')
6052
name << ' (event)' if node['class'].include?('event')
6153

lib/docs/scrapers/ember.rb

Lines changed: 30 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,12 @@
1+
# frozen_string_literal: true
2+
13
module Docs
24
class Ember < UrlScraper
35
include MultipleBaseUrls
46

57
self.name = 'Ember.js'
68
self.slug = 'ember'
79
self.type = 'ember'
8-
self.release = '2.15.0'
9-
self.base_urls = [
10-
'https://guides.emberjs.com/v2.15.0/',
11-
'https://emberjs.com/api/ember/2.15/',
12-
'https://emberjs.com/api/ember-data/2.14/'
13-
]
1410
self.links = {
1511
home: 'https://emberjs.com/',
1612
code: 'https://github.com/emberjs/ember.js'
@@ -21,10 +17,10 @@ class Ember < UrlScraper
2117
options[:trailing_slash] = false
2218

2319
options[:container] = ->(filter) do
24-
if filter.base_url.path.start_with?('/api')
25-
'main article'
26-
else
20+
if filter.base_url.host.start_with?('api')
2721
'main'
22+
else
23+
'main article'
2824
end
2925
end
3026

@@ -39,26 +35,40 @@ class Ember < UrlScraper
3935
options[:skip_patterns] = [
4036
/\._/,
4137
/contributing/,
42-
/classes\/String/,
43-
/namespaces\/Ember/,
44-
/namespaces\/DS/
38+
/tutorial/,
39+
/js-primer/,
40+
/in-depth-topics$/,
41+
/managing-dependencies$/
4542
]
4643

4744
options[:attribution] = <<-HTML
48-
&copy; 2017 Yehuda Katz, Tom Dale and Ember.js contributors<br>
45+
&copy; 2020 Yehuda Katz, Tom Dale and Ember.js contributors<br>
4946
Licensed under the MIT License.
5047
HTML
5148

52-
def initial_urls
53-
%w(
54-
https://guides.emberjs.com/v2.15.0/
55-
https://emberjs.com/api/ember/2.15/classes/Ember
56-
https://emberjs.com/api/ember-data/2.14/classes/DS
57-
)
49+
options[:decode_and_clean_paths] = true # handle paths like @ember/application
50+
51+
version '3' do
52+
self.release = '3.25.0'
53+
self.base_urls = %w[
54+
https://guides.emberjs.com/v3.25.0/
55+
https://api.emberjs.com/ember/3.25/
56+
https://api.emberjs.com/ember-data/3.25/
57+
]
58+
end
59+
60+
version '2' do
61+
self.release = '2.18.0'
62+
self.base_urls = %w[
63+
https://guides.emberjs.com/v2.18.0/
64+
https://api.emberjs.com/ember/2.18/
65+
https://api.emberjs.com/ember-data/2.18/
66+
]
67+
options[:skip_patterns].push(/handlebars-basics$/)
5868
end
5969

6070
def get_latest_version(opts)
61-
doc = fetch_doc('https://emberjs.com/api/ember/release', opts)
71+
doc = fetch_doc('https://api.emberjs.com/ember/release', opts)
6272
doc.at_css('.sidebar > .select-container .ember-power-select-selected-item').content.strip
6373
end
6474
end

0 commit comments

Comments
 (0)