Add Immutable.js documentation

Closes #513.
pull/537/head
Thibaut Courouble 8 years ago
parent a5b44b4667
commit fd15168ebd

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 133 KiB

After

Width:  |  Height:  |  Size: 133 KiB

@ -1,5 +1,8 @@
[
[
"2016-11-20",
"New documentation: <a href=\"/immutable/\">Immutable.js</a>"
], [
"2016-10-10",
"New documentations: <a href=\"/scikit_learn/\">scikit-learn</a> and <a href=\"/statsmodels/\">Statsmodels</a>"
], [

@ -254,6 +254,11 @@ credits = [
'2005-2016 Haxe Foundation',
'MIT',
'http://haxe.org/foundation/open-source.html'
], [
'Immutable.js',
'2014-2016 Facebook, Inc.',
'BSD',
'https://raw.githubusercontent.com/facebook/immutable-js/master/LICENSE'
], [
'InfluxData',
'2015 InfluxData, Inc.',

@ -22,6 +22,7 @@ app.views.ElixirPage =
app.views.EmberPage =
app.views.ExpressPage =
app.views.GoPage =
app.views.ImmutablePage =
app.views.InfluxdataPage =
app.views.KnockoutPage =
app.views.KotlinPage =

@ -72,6 +72,7 @@
._icon-angularjs:before { background-position: -9rem -1rem; }
._icon-coffeescript:before { background-position: 0 -2rem; @extend %darkIconFix !optional; }
._icon-ember:before { background-position: -1rem -2rem; }
._icon-immutable:before { background-position: -3rem -2rem; @extend %darkIconFix !optional; }
._icon-jqueryui:before { background-position: -4rem -2rem; }
._icon-jquerymobile:before { background-position: -5rem -2rem; }
._icon-lodash:before { background-position: -6rem -2rem; }

@ -25,6 +25,7 @@
._gnu,
._grunt,
._haxe,
._immutable,
._influxdata,
._less,
._lodash,

@ -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
&copy; 2014&ndash;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

Binary file not shown.

After

Width:  |  Height:  |  Size: 435 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 527 B

@ -0,0 +1 @@
https://raw.githubusercontent.com/facebook/immutable-js/master/pages/src/static/favicon.png
Loading…
Cancel
Save