Skip to content

Commit cc32a35

Browse files
committed
update Ember docs to latest version
* fix ember parsing to handle current guides/docs
1 parent 38e0724 commit cc32a35

4 files changed

Lines changed: 60 additions & 59 deletions

File tree

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').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: 24 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -2,60 +2,50 @@ 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.start_with?('@') || name == 'rsvp'
21+
'Packages'
22+
elsif name == 'Function'
23+
'Functions'
3324
else
34-
name.split('.').first
25+
'Classes'
3526
end
3627
else
37-
if node = at_css('li.toc-level-0.selected > a')
38-
"Guide: #{node.content.strip}"
39-
else
40-
'Guide'
41-
end
28+
'Guide'
4229
end
4330
end
4431

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

4841
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')
42+
next unless heading = node.at_css('> h3[data-anchor]')
43+
5144
name = heading.at_css('span').content.strip
5245

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
46+
next if name.start_with?('_') # exclude private methods/properties
5747

58-
name.prepend "#{self.name.remove(/ \(.*/)}."
48+
name.prepend "#{self.name.remove(/ \(.*/)}." unless self.name == 'Function'
5949
name << '()' if node['class'].include?('method')
6050
name << ' (event)' if node['class'].include?('event')
6151

lib/docs/scrapers/ember.rb

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
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/'
10+
self.release = '3.25.0'
11+
self.base_urls = %w[
12+
https://guides.emberjs.com/v3.25.0/
13+
https://api.emberjs.com/ember/3.25/
14+
https://api.emberjs.com/ember-data/3.25/
1315
]
1416
self.links = {
1517
home: 'https://emberjs.com/',
@@ -21,10 +23,10 @@ class Ember < UrlScraper
2123
options[:trailing_slash] = false
2224

2325
options[:container] = ->(filter) do
24-
if filter.base_url.path.start_with?('/api')
25-
'main article'
26-
else
26+
if filter.base_url.host.start_with?('api')
2727
'main'
28+
else
29+
'main article'
2830
end
2931
end
3032

@@ -39,26 +41,29 @@ class Ember < UrlScraper
3941
options[:skip_patterns] = [
4042
/\._/,
4143
/contributing/,
42-
/classes\/String/,
43-
/namespaces\/Ember/,
44-
/namespaces\/DS/
44+
/tutorial/,
45+
/js-primer/,
46+
/in-depth-topics$/,
47+
/managing-dependencies$/
4548
]
4649

4750
options[:attribution] = <<-HTML
48-
&copy; 2017 Yehuda Katz, Tom Dale and Ember.js contributors<br>
51+
&copy; 2020 Yehuda Katz, Tom Dale and Ember.js contributors<br>
4952
Licensed under the MIT License.
5053
HTML
5154

55+
options[:decode_and_clean_paths] = true # handle paths like @ember/application
56+
5257
def initial_urls
5358
%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
59+
https://guides.emberjs.com/v3.25.0/
60+
https://api.emberjs.com/ember/3.25/
61+
https://api.emberjs.com/ember-data/3.25/
5762
)
5863
end
5964

6065
def get_latest_version(opts)
61-
doc = fetch_doc('https://emberjs.com/api/ember/release', opts)
66+
doc = fetch_doc('https://api.emberjs.com/ember/release', opts)
6267
doc.at_css('.sidebar > .select-container .ember-power-select-selected-item').content.strip
6368
end
6469
end

0 commit comments

Comments
 (0)