mirror of https://github.com/freeCodeCamp/devdocs
parent
f62a859d93
commit
4fabd8bc64
@ -0,0 +1,69 @@
|
||||
module Docs
|
||||
class Flow
|
||||
class CleanHtmlFilter < Filter
|
||||
def call
|
||||
root_page? ? root : other
|
||||
doc
|
||||
end
|
||||
|
||||
def root
|
||||
@doc = at_css('.bg-faded + .container')
|
||||
|
||||
css('.row', '.col-lg-4', '.card-block').each do |node|
|
||||
node.before(node.children).remove
|
||||
end
|
||||
|
||||
css('a.card').each do |node|
|
||||
node.at_css('.text-primary').replace %(<br><a href="#{node['href']}">Read more</a>)
|
||||
node.before(node.children).remove
|
||||
end
|
||||
end
|
||||
|
||||
def other
|
||||
@doc = at_css('.article')
|
||||
|
||||
css('.nav-tabs', '#select-platform', '.guide-controls + .list-group', '.guide-controls', 'hr').remove
|
||||
|
||||
css('.guide-content', '.tabs', '.tab-content').each do |node|
|
||||
node.before(node.children).remove
|
||||
end
|
||||
|
||||
css('a[id].toc').each do |node|
|
||||
node.parent['id'] = node['id']
|
||||
node.remove
|
||||
end
|
||||
|
||||
unless at_css('h2')
|
||||
css('h3', 'h4', 'h5').each do |node|
|
||||
node.name = node.name.sub(/\d/) { |i| i.to_i - 1 }
|
||||
end
|
||||
end
|
||||
|
||||
unless at_css('h3')
|
||||
css('h4', 'h5').each do |node|
|
||||
node.name = node.name.sub(/\d/) { |i| i.to_i - 1 }
|
||||
end
|
||||
end
|
||||
|
||||
css('.__cf_email__').each do |node|
|
||||
node.replace(decode_cloudflare_email(node['data-cfemail']))
|
||||
end
|
||||
|
||||
css('.editor').each do |node|
|
||||
pre = node.at_css('.editor-code > pre')
|
||||
pre['data-language'] = 'javascript'
|
||||
pre.content = pre.content
|
||||
node.replace(pre)
|
||||
end
|
||||
|
||||
css('div.highlighter-rouge').each do |node|
|
||||
node['data-language'] = node['class'][/language-(\w+)/, 1] if node['class']
|
||||
node.content = node.content.strip
|
||||
node.name = 'pre'
|
||||
end
|
||||
|
||||
css('.highlighter-rouge').remove_attr('class')
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
@ -0,0 +1,15 @@
|
||||
module Docs
|
||||
class Flow
|
||||
class EntriesFilter < Docs::EntriesFilter
|
||||
def get_name
|
||||
at_css('h1').content
|
||||
end
|
||||
|
||||
def get_type
|
||||
type = at_css('.guide-nav .nav-item').content.strip
|
||||
type.remove! %r{ \(.*}
|
||||
type
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in new issue