|
|
@@ -2,7 +2,23 @@ module Docs
|
|
|
class Ember
|
|
|
class CleanHtmlFilter < Filter
|
|
|
def call
|
|
|
- root_page? ? root : other
|
|
|
+ css('hr', '.edit-page').remove
|
|
|
+
|
|
|
+ # Remove code highlighting
|
|
|
+ css('.highlight').each do |node|
|
|
|
+ node.before(%(<div class="pre-title"><code>#{node.at_css('thead').content.strip}</code></div>)) if node.at_css('thead')
|
|
|
+ node.content = node.at_css('.code pre').content
|
|
|
+ node.name = 'pre'
|
|
|
+ node['data-language'] = node['class'][/(javascript|js|html|hbs|handlebars)/, 1]
|
|
|
+ node['data-language'] = node['data-language'].sub(/(hbs|handlebars)/, 'html')
|
|
|
+ end
|
|
|
+
|
|
|
+ if base_url.path.start_with?('/api')
|
|
|
+ root_page? ? root : api
|
|
|
+ else
|
|
|
+ guide
|
|
|
+ end
|
|
|
+
|
|
|
doc
|
|
|
end
|
|
|
|
|
|
@@ -28,8 +44,8 @@ module Docs
|
|
|
end
|
|
|
end
|
|
|
|
|
|
- def other
|
|
|
- css(*%w(hr .edit-page #api-options .toc-anchor .inherited .protected .private .deprecated)).remove
|
|
|
+ def api
|
|
|
+ css('#api-options', '.toc-anchor', '.inherited').remove
|
|
|
|
|
|
# Remove tabs and "Index"
|
|
|
css('.tabs').each do |node|
|
|
|
@@ -41,24 +57,45 @@ module Docs
|
|
|
css('.method', '.property', '.event').remove_attr('id')
|
|
|
|
|
|
css('h3[data-id]').each do |node|
|
|
|
- # Put id attributes on headings
|
|
|
- node.name = 'h2'
|
|
|
- node['id'] = node['data-id']
|
|
|
- node.remove_attribute 'data-id'
|
|
|
- node.content = node.content
|
|
|
-
|
|
|
- # Move headings, span.args, etc. into a div.title
|
|
|
- div = Nokogiri::XML::Node.new 'div', doc
|
|
|
- div['class'] = 'title'
|
|
|
- node.before(div).parent = div
|
|
|
- div.add_child(div.next_element) while div.next_element.name == 'span'
|
|
|
+ heading = Nokogiri::XML::Node.new 'h2', doc
|
|
|
+ heading['id'] = node['data-id']
|
|
|
+ node.before(heading).remove
|
|
|
+ heading.content = node.content
|
|
|
+ heading.add_child(heading.next_element) while heading.next_element.name == 'span'
|
|
|
end
|
|
|
|
|
|
- # Remove code highlighting
|
|
|
- css('.highlight').each do |node|
|
|
|
- node.content = node.at_css('.code pre').content
|
|
|
- node.name = 'pre'
|
|
|
- node['data-language'] = node['class'][/(javascript|js|html)/, 1]
|
|
|
+ css('> .class-info').each do |node|
|
|
|
+ node.name = 'blockquote'
|
|
|
+ end
|
|
|
+
|
|
|
+ css('div.meta').each do |node|
|
|
|
+ node.name = 'p'
|
|
|
+ end
|
|
|
+
|
|
|
+ css('span.type').each do |node|
|
|
|
+ node.name = 'code'
|
|
|
+ end
|
|
|
+
|
|
|
+ css('.pane', '.item-entry').each do |node|
|
|
|
+ node.before(node.children).remove
|
|
|
+ end
|
|
|
+ end
|
|
|
+
|
|
|
+ def guide
|
|
|
+ @doc = at_css('article')
|
|
|
+
|
|
|
+ css('.previous-guide', '.next-guide').remove
|
|
|
+
|
|
|
+ css('img').each do |node|
|
|
|
+ node['src'] = node['src'].sub('https://guides.emberjs.com/', base_url.to_s)
|
|
|
+ end
|
|
|
+
|
|
|
+ css('h3, h4, h5').each do |node|
|
|
|
+ node.name = node.name.sub(/\d/) { |i| i.to_i - 1 }
|
|
|
+ end unless at_css('h2')
|
|
|
+
|
|
|
+ css('blockquote > p > em').each do |node|
|
|
|
+ node.before(node.children).remove
|
|
|
end
|
|
|
end
|
|
|
end
|