mirror of https://github.com/freeCodeCamp/devdocs
parent
a5b44b4667
commit
fd15168ebd
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 133 KiB After Width: | Height: | Size: 133 KiB |
@ -0,0 +1,48 @@
|
||||
module Docs
|
||||
class Immutable
|
||||
class CleanHtmlFilter < Filter
|
||||
def call
|
||||
css('section', 'span', 'div[data-reactid]').each do |node|
|
||||
node.before(node.children).remove
|
||||
end
|
||||
|
||||
css('.codeBlock').each do |node|
|
||||
node.name = 'pre'
|
||||
node.content = node.content
|
||||
node['data-language'] = 'js'
|
||||
end
|
||||
|
||||
css('*[data-reactid]').remove_attr('data-reactid')
|
||||
css('a[target]').remove_attr('target')
|
||||
|
||||
css('a[href^="#"]').each do |node|
|
||||
node['href'] = node['href'].sub(/\A#\//, '#').gsub('/', '.').downcase
|
||||
end
|
||||
|
||||
type = type_id = nil
|
||||
css('*').each do |node|
|
||||
if node.name == 'h1'
|
||||
node['id'] = type_id = node.content.strip.downcase
|
||||
type = node.content.strip
|
||||
elsif node.name == 'h3'
|
||||
node['id'] = node.content.strip.downcase
|
||||
node['id'] = node['id'].remove('()') unless node['id'] == "#{type_id}()"
|
||||
|
||||
unless node['id'].start_with?(type_id)
|
||||
node.content = "#{type}##{node.content}"
|
||||
node['id'] = "#{type_id}.#{node['id']}" unless node['id'].start_with?("#{type_id}.")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
css('h4.groupTitle').each do |node|
|
||||
node.name = 'h2'
|
||||
end
|
||||
|
||||
css('*[class]').remove_attr('class')
|
||||
|
||||
doc
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
@ -0,0 +1,23 @@
|
||||
module Docs
|
||||
class Immutable
|
||||
class EntriesFilter < Docs::EntriesFilter
|
||||
def additional_entries
|
||||
entries = []
|
||||
type = nil
|
||||
|
||||
css('*').each do |node|
|
||||
if node.name == 'h1'
|
||||
name = node.content
|
||||
type = node.content.split('.').first
|
||||
entries << [name, node['id'], type]
|
||||
elsif node.name == 'h3'
|
||||
name = node.content
|
||||
entries << [name, node['id'], type]
|
||||
end
|
||||
end
|
||||
|
||||
entries
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
@ -0,0 +1,58 @@
|
||||
module Docs
|
||||
class Immutable < UrlScraper
|
||||
self.name = 'Immutable.js'
|
||||
self.slug = 'immutable'
|
||||
self.type = 'immutable'
|
||||
self.release = '3.8.1'
|
||||
self.base_url = 'https://facebook.github.io/immutable-js/docs/'
|
||||
self.links = {
|
||||
home: 'https://facebook.github.io/immutable-js/',
|
||||
code: 'https://github.com/facebook/immutable-js'
|
||||
}
|
||||
|
||||
html_filters.push 'immutable/clean_html', 'immutable/entries', 'title'
|
||||
|
||||
options[:skip_links] = true
|
||||
options[:container] = '.docContents'
|
||||
options[:root_title] = 'Immutable.js'
|
||||
|
||||
options[:attribution] = <<-HTML
|
||||
© 2014–2015 Facebook, Inc.<br>
|
||||
Licensed under the 3-clause BSD License.
|
||||
HTML
|
||||
|
||||
stub '' do
|
||||
capybara = load_capybara_selenium
|
||||
capybara.app_host = 'https://facebook.github.io'
|
||||
capybara.visit(URL.parse(self.base_url).path)
|
||||
capybara.execute_script <<-JS
|
||||
var content, event, links, link;
|
||||
|
||||
event = document.createEvent('Event');
|
||||
event.initEvent('hashchange', false, false);
|
||||
|
||||
content = document.querySelector('.docContents section').cloneNode(true);
|
||||
links = Array.prototype.slice.call(document.querySelectorAll('.sideBar .scrollContent a'));
|
||||
|
||||
while (link = links.shift()) {
|
||||
if (!document.body.contains(link)) {
|
||||
document.body.appendChild(link);
|
||||
}
|
||||
|
||||
link.click();
|
||||
dispatchEvent(event);
|
||||
content.innerHTML += document.querySelector('.docContents').innerHTML;
|
||||
|
||||
document.querySelectorAll('.sideBar .scrollContent .groupTitle').forEach(function(el) {
|
||||
if (el.textContent == 'Types') {
|
||||
Array.prototype.unshift.apply(links, Array.prototype.slice.call(el.parentNode.querySelectorAll('a')));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
document.querySelector('.docContents').innerHTML = content.innerHTML;
|
||||
JS
|
||||
capybara.html
|
||||
end
|
||||
end
|
||||
end
|
After Width: | Height: | Size: 435 B |
After Width: | Height: | Size: 527 B |
@ -0,0 +1 @@
|
||||
https://raw.githubusercontent.com/facebook/immutable-js/master/pages/src/static/favicon.png
|
Loading…
Reference in new issue