Merge pull request #1 from Thibaut/master

Merged from Thibaut/devdocs into master.
pull/546/head
Caleb Kleveter 8 years ago committed by GitHub
commit 956ff4ff71

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 133 KiB

After

Width:  |  Height:  |  Size: 135 KiB

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

@ -99,6 +99,11 @@ credits = [
'2016 The Apache Software Foundation<br>Apache and the Apache feather logo are trademarks of The Apache Software Foundation.', '2016 The Apache Software Foundation<br>Apache and the Apache feather logo are trademarks of The Apache Software Foundation.',
'Apache', 'Apache',
'https://www.apache.org/licenses/LICENSE-2.0' 'https://www.apache.org/licenses/LICENSE-2.0'
], [
'Async',
'2010-2016 Caolan McMahon',
'MIT',
'https://raw.githubusercontent.com/caolan/async/master/LICENSE'
], [ ], [
'Backbone.js', 'Backbone.js',
'2010-2016 Jeremy Ashkenas, DocumentCloud', '2010-2016 Jeremy Ashkenas, DocumentCloud',
@ -254,6 +259,11 @@ credits = [
'2005-2016 Haxe Foundation', '2005-2016 Haxe Foundation',
'MIT', 'MIT',
'http://haxe.org/foundation/open-source.html' 'http://haxe.org/foundation/open-source.html'
], [
'Immutable.js',
'2014-2016 Facebook, Inc.',
'BSD',
'https://raw.githubusercontent.com/facebook/immutable-js/master/LICENSE'
], [ ], [
'InfluxData', 'InfluxData',
'2015 InfluxData, Inc.', '2015 InfluxData, Inc.',
@ -569,6 +579,11 @@ credits = [
'2012-2016 Tobias Koppers', '2012-2016 Tobias Koppers',
'MIT', 'MIT',
'https://raw.githubusercontent.com/webpack/webpack/master/LICENSE' 'https://raw.githubusercontent.com/webpack/webpack/master/LICENSE'
], [
'Yarn',
'2016 Yarn Contributors',
'BSD',
'https://raw.githubusercontent.com/yarnpkg/yarn/master/LICENSE'
], [ ], [
'Yii', 'Yii',
'2008-2016 by Yii Software LLC', '2008-2016 by Yii Software LLC',

@ -8,6 +8,7 @@ class app.views.SimplePage extends app.views.BasePage
app.views.AngularPage = app.views.AngularPage =
app.views.AngularjsPage = app.views.AngularjsPage =
app.views.AsyncPage =
app.views.BootstrapPage = app.views.BootstrapPage =
app.views.BowerPage = app.views.BowerPage =
app.views.CPage = app.views.CPage =
@ -22,6 +23,7 @@ app.views.ElixirPage =
app.views.EmberPage = app.views.EmberPage =
app.views.ExpressPage = app.views.ExpressPage =
app.views.GoPage = app.views.GoPage =
app.views.ImmutablePage =
app.views.InfluxdataPage = app.views.InfluxdataPage =
app.views.KnockoutPage = app.views.KnockoutPage =
app.views.KotlinPage = app.views.KotlinPage =
@ -59,5 +61,6 @@ app.views.UnderscorePage =
app.views.VagrantPage = app.views.VagrantPage =
app.views.VuePage = app.views.VuePage =
app.views.WebpackPage = app.views.WebpackPage =
app.views.YarnPage =
app.views.YiiPage = app.views.YiiPage =
app.views.SimplePage app.views.SimplePage

@ -34,6 +34,7 @@
'pages/angular', 'pages/angular',
'pages/angularjs', 'pages/angularjs',
'pages/apache', 'pages/apache',
'pages/async',
'pages/bootstrap', 'pages/bootstrap',
'pages/c', 'pages/c',
'pages/cakephp', 'pages/cakephp',

@ -34,6 +34,7 @@
'pages/angular', 'pages/angular',
'pages/angularjs', 'pages/angularjs',
'pages/apache', 'pages/apache',
'pages/async',
'pages/bootstrap', 'pages/bootstrap',
'pages/c', 'pages/c',
'pages/cakephp', 'pages/cakephp',

@ -56,6 +56,7 @@
%icon-close-white { background-position: -2rem -5rem; } %icon-close-white { background-position: -2rem -5rem; }
%icon-back { background-position: -3rem -5rem; @extend %darkIconFix !optional; } %icon-back { background-position: -3rem -5rem; @extend %darkIconFix !optional; }
._icon-async:before { background-position: -6rem 0; @extend %darkIconFix !optional; }
._icon-http:before { background-position: -7rem 0; @extend %darkIconFix !optional; } ._icon-http:before { background-position: -7rem 0; @extend %darkIconFix !optional; }
._icon-jquery:before { background-position: -8rem 0; @extend %darkIconFix !optional; } ._icon-jquery:before { background-position: -8rem 0; @extend %darkIconFix !optional; }
._icon-underscore:before { background-position: -9rem 0; @extend %darkIconFix !optional; } ._icon-underscore:before { background-position: -9rem 0; @extend %darkIconFix !optional; }
@ -72,6 +73,8 @@
._icon-angularjs:before { background-position: -9rem -1rem; } ._icon-angularjs:before { background-position: -9rem -1rem; }
._icon-coffeescript:before { background-position: 0 -2rem; @extend %darkIconFix !optional; } ._icon-coffeescript:before { background-position: 0 -2rem; @extend %darkIconFix !optional; }
._icon-ember:before { background-position: -1rem -2rem; } ._icon-ember:before { background-position: -1rem -2rem; }
._icon-yarn:before { background-position: -2rem -2rem; }
._icon-immutable:before { background-position: -3rem -2rem; @extend %darkIconFix !optional; }
._icon-jqueryui:before { background-position: -4rem -2rem; } ._icon-jqueryui:before { background-position: -4rem -2rem; }
._icon-jquerymobile:before { background-position: -5rem -2rem; } ._icon-jquerymobile:before { background-position: -5rem -2rem; }
._icon-lodash:before { background-position: -6rem -2rem; } ._icon-lodash:before { background-position: -6rem -2rem; }

@ -0,0 +1,15 @@
._async {
@extend %simple;
h3 > .type-signature {
float: right;
color: $textColorLight;
}
h3 > .signature-attributes {
font-size: .75rem;
font-weight: normal;
font-style: italic;
color: $textColorLighter;
}
}

@ -25,6 +25,7 @@
._gnu, ._gnu,
._grunt, ._grunt,
._haxe, ._haxe,
._immutable,
._influxdata, ._influxdata,
._less, ._less,
._lodash, ._lodash,
@ -35,6 +36,7 @@
._redux, ._redux,
._sinon, ._sinon,
._typescript, ._typescript,
._webpack { ._webpack,
._yarn {
@extend %simple; @extend %simple;
} }

@ -0,0 +1,30 @@
module Docs
class Async
class CleanHtmlFilter < Filter
def call
@doc = at_css('#main-container')
at_css('footer').remove
css('section', 'header', 'article', '.container-overview', 'span.signature', 'div.description').each do |node|
node.before(node.children).remove
end
css('h3', 'h4', 'h5').each do |node|
node.name = node.name.sub(/\d/) { |i| i.to_i - 1 }
end
css('dd ul').each do |node|
node.replace(node.css('li').map(&:inner_html).join(' '))
end
css('pre').each do |node|
node['data-language'] = 'javascript'
node.content = node.content
end
doc
end
end
end
end

@ -0,0 +1,22 @@
module Docs
class Async
class EntriesFilter < Docs::EntriesFilter
def additional_entries
type = nil
entries = []
css('.nav.methods li').each do |node|
if node['class'] == 'toc-header'
type = node.content
else
name = node.content
id = node.at_css('a')['href'].remove('#')
entries << [name, id, type]
end
end
entries
end
end
end
end

@ -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

@ -12,7 +12,11 @@ module Docs
end end
def other def other
css('#source + h2', '#improve', '#source', '.glyphicon', 'p > br').remove css('#source + h2', '#improve', '#source', '.glyphicon').remove
css('p > br').each do |node|
node.replace(' ')
end
css('pre > code').each do |node| css('pre > code').each do |node|
node.parent['data-language'] = node['class'][/lang-(\w+)/, 1] if node['class'] node.parent['data-language'] = node['class'][/lang-(\w+)/, 1] if node['class']

@ -17,6 +17,11 @@ module Docs
node.inner_html = node.inner_html.gsub(/<\/div>(?!\n|\z)/, "</div>\n") node.inner_html = node.inner_html.gsub(/<\/div>(?!\n|\z)/, "</div>\n")
end end
css('h1 + h1.subtitle').each do |node|
node.name = 'p'
node.inner_html += '.'
end
css('pre').each do |node| css('pre').each do |node|
node.content = node.content node.content = node.content
end end

@ -8,7 +8,7 @@ module Docs
at_css('h1').content = context[:root_title] at_css('h1').content = context[:root_title]
end end
css('.docs-prevnext', '.hash-link', '.edit-page-link', '.edit-github', 'a.hash', '.edit-page-block', 'a.show', 'a.hide').remove css('.docs-prevnext', '.hash-link', '.edit-page-link', '.edit-github', 'a.hash', '.edit-page-block', 'a.show', 'a.hide', 'hr').remove
css('table h1', 'table h2', 'table h3').each do |node| css('table h1', 'table h2', 'table h3').each do |node|
table = node table = node

@ -1,69 +1,33 @@
module Docs module Docs
class React class React
class EntriesFilter < Docs::EntriesFilter class EntriesFilter < Docs::EntriesFilter
API_SLUGS = %w(
docs/top-level-api
docs/component-api
docs/component-specs
)
REPLACE_TYPES = {
'Quick Start' => 'Guides',
'User Guide' => 'Guides',
'The Basics' => 'Getting Started',
'apis' => 'APIs',
'components' => 'Components'
}
def get_name def get_name
at_css('h1').children.select(&:text?).map(&:content).join.strip at_css('h1').children.select(&:text?).map(&:content).join.strip
end end
def get_type def get_type
link = at_css('.nav-docs-section .active, .toc .active') link = at_css('.nav-docs-section .active, .toc .active')
return 'Miscellaneous' unless link
section = link.ancestors('.nav-docs-section, section').first section = link.ancestors('.nav-docs-section, section').first
type = section.at_css('h3').content.strip type = section.at_css('h3').content.strip
type = REPLACE_TYPES[type] || type
type += ": #{name}" if type == 'Components'
type type
end end
def additional_entries def additional_entries
if API_SLUGS.include?(slug) css('.inner-content h3 code, .inner-content h4 code').each_with_object([]) do |node, entries|
css('.inner-content h3, .inner-content h4').map do |node| name = node.content
name = node.content name.remove! %r{[#\(\)]}
name.remove! %r{[#\(\)]} name.remove! %r{\w+\:}
name.remove! %r{\w+\:} name.strip!
id = node.at_css('.anchor')['name'] name = 'createFragmentobject' if name.include?('createFragmentobject')
type = slug.include?('component') ? 'Component' : 'React' id = node.parent.at_css('.anchor')['name']
[name, id, type] type = if slug == 'react-component'
end 'Reference: Component'
else elsif slug == 'react-api'
entries = [] 'Reference: React'
else
css('.props > .prop > .propTitle', '.props > .prop > .methodTitle').each do |node| # react-native 'Reference'
name = node.children.find(&:text?).try(:content)
next if name.blank?
sep = node.content.include?('static') ? '.' : '#'
name.prepend(self.name + sep)
name << '()' if node['class'].include?('methodTitle')
id = node.at_css('.anchor')['name']
entries << [name, id]
end end
entries << [name, id, type]
css('.apiIndex a pre').each do |node| # relay
next unless node.parent['href'].start_with?('#')
id = node.parent['href'].remove('#')
name = node.content.strip
sep = name.start_with?('static') ? '.' : '#'
name.remove! %r{(abstract|static) }
name.sub! %r{\(.*\)}, '()'
name.prepend(self.name + sep)
entries << [name, id]
end
entries
end end
end end
end end

@ -0,0 +1,56 @@
module Docs
class Yarn
class CleanHtmlFilter < Filter
def call
root_page? ? root : other
doc
end
def root
@doc = at_css('.hero + .container')
at_css('.row').remove
css('> .container', 'hr').remove
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('.float-right').replace %(<br><a href="#{node['href']}">Read more</a>)
node.before(node.children).remove
end
end
def other
@doc = at_css('.guide')
css('a.toc', '.nav-tabs', '#select-platform', '.guide-controls + .list-group', '.guide-controls').remove
css('.guide-content', '.tabs', '.tab-content').each do |node|
node.before(node.children).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('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,21 @@
module Docs
class Yarn
class EntriesFilter < Docs::EntriesFilter
def get_name
name = at_css('h1').content
unless type == 'CLI'
name.prepend "#{css('.guide-nav a').to_a.index(at_css('.guide-nav a.active')) + 1}. "
end
name
end
def get_type
type = at_css('.guide-nav a').content.strip
type.remove! ' Introduction'
type
end
end
end
end

@ -20,7 +20,8 @@ module Docs
options[:replace_paths] = { options[:replace_paths] = {
'testing/index.html' => 'guide/testing.html', 'testing/index.html' => 'guide/testing.html',
'guide/glossary.html' => 'glossary.html', 'guide/glossary.html' => 'glossary.html',
'tutorial' => 'tutorial/' 'tutorial' => 'tutorial/',
'api' => 'api/'
} }
options[:fix_urls] = -> (url) do options[:fix_urls] = -> (url) do
@ -41,12 +42,12 @@ module Docs
end end
version '2 TypeScript' do version '2 TypeScript' do
self.release = '2.1.2' self.release = '2.2.1'
self.base_url = 'https://angular.io/docs/ts/latest/' self.base_url = 'https://angular.io/docs/ts/latest/'
end end
version '2 Dart' do version '2 Dart' do
self.release = '2.1.2' self.release = '2.2.1'
self.base_url = 'https://angular.io/docs/dart/latest/' self.base_url = 'https://angular.io/docs/dart/latest/'
options[:skip_patterns] += [/angular2\.compiler/] options[:skip_patterns] += [/angular2\.compiler/]

@ -0,0 +1,21 @@
module Docs
class Async < UrlScraper
self.type = 'async'
self.release = '2.1.2'
self.base_url = 'https://caolan.github.io/async/'
self.root_path = 'docs.html'
self.links = {
home: 'https://caolan.github.io/async/',
code: 'https://github.com/caolan/async'
}
html_filters.push 'async/entries', 'async/clean_html'
options[:skip_links] = true
options[:attribution] = <<-HTML
&copy; 2010&ndash;2016 Caolan McMahon<br>
Licensed under the MIT License.
HTML
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

@ -19,7 +19,7 @@ module Docs
HTML HTML
version '4' do version '4' do
self.release = '4.16.2' self.release = '4.17.2'
self.base_url = "https://lodash.com/docs/#{release}" self.base_url = "https://lodash.com/docs/#{release}"
end end

@ -2,7 +2,7 @@ module Docs
class Npm < UrlScraper class Npm < UrlScraper
self.name = 'npm' self.name = 'npm'
self.type = 'npm' self.type = 'npm'
self.release = '3.10.2' self.release = '4.0.2'
self.base_url = 'https://docs.npmjs.com/' self.base_url = 'https://docs.npmjs.com/'
self.force_gzip = true self.force_gzip = true
self.links = { self.links = {

@ -78,12 +78,12 @@ module Docs
HTML HTML
version '2.3' do version '2.3' do
self.release = '2.3.0' self.release = '2.3.2'
self.dir = '/Users/Thibaut/DevDocs/Docs/RDoc/Ruby23' self.dir = '/Users/Thibaut/DevDocs/Docs/RDoc/Ruby23'
end end
version '2.2' do version '2.2' do
self.release = '2.2.4' self.release = '2.2.6'
self.dir = '/Users/Thibaut/DevDocs/Docs/RDoc/Ruby22' self.dir = '/Users/Thibaut/DevDocs/Docs/RDoc/Ruby22'
end end
end end

@ -2,9 +2,9 @@ module Docs
class React < UrlScraper class React < UrlScraper
self.name = 'React' self.name = 'React'
self.type = 'react' self.type = 'react'
self.release = '15.3.0' self.release = '15.4.0'
self.base_url = 'https://facebook.github.io/react/' self.base_url = 'https://facebook.github.io/react/docs/'
self.root_path = 'docs/getting-started.html' self.root_path = 'hello-world.html'
self.links = { self.links = {
home: 'https://facebook.github.io/react/', home: 'https://facebook.github.io/react/',
code: 'https://github.com/facebook/react' code: 'https://github.com/facebook/react'
@ -14,14 +14,17 @@ module Docs
options[:root_title] = 'React Documentation' options[:root_title] = 'React Documentation'
options[:container] = '.documentationContent' options[:container] = '.documentationContent'
options[:only_patterns] = [/\Adocs\//, /\Atips\//]
options[:skip] = %w( options[:replace_paths] = {
docs/ 'top-level-api.html' => 'react-api.html',
docs/videos.html 'working-with-the-browser.html' => 'refs-and-the-dom.html',
docs/complementary-tools.html 'interactivity-and-dynamic-uis.html' => 'state-and-lifecycle.html',
docs/examples.html 'more-about-refs.html' => 'refs-and-the-dom.html',
docs/conferences.html 'advanced-performance.html' => 'optimizing-performance.html',
tips/introduction.html) 'component-api.html' => 'react-component.html',
'component-specs.html' => 'react-component.html',
'multiple-components.html' => 'composition-vs-inheritance.html',
}
options[:attribution] = <<-HTML options[:attribution] = <<-HTML
&copy; 2013&ndash;2016 Facebook Inc.<br> &copy; 2013&ndash;2016 Facebook Inc.<br>

@ -18,7 +18,7 @@ module Docs
HTML HTML
version '2' do version '2' do
self.release = '2.0.5' self.release = '2.0.8'
self.base_url = 'https://vuejs.org/v2/' self.base_url = 'https://vuejs.org/v2/'
self.root_path = 'guide/index.html' self.root_path = 'guide/index.html'
self.initial_paths = %w(api/index.html) self.initial_paths = %w(api/index.html)

@ -0,0 +1,24 @@
module Docs
class Yarn < UrlScraper
self.type = 'yarn'
self.release = '0.17.6'
self.base_url = 'https://yarnpkg.com/en/docs/'
self.links = {
home: 'https://yarnpkg.com/',
code: 'https://github.com/yarnpkg/yarn'
}
html_filters.push 'yarn/entries', 'yarn/clean_html', 'title'
options[:root_title] = 'Yarn'
options[:trailing_slash] = false
options[:skip] = %w(nightly)
options[:skip_patterns] = [/\Aorg\//]
options[:attribution] = <<-HTML
&copy; 2016 Yarn Contributors<br>
Licensed under the BSD License.
HTML
end
end

Binary file not shown.

After

Width:  |  Height:  |  Size: 659 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 798 B

@ -0,0 +1 @@
https://raw.githubusercontent.com/caolan/async/master/logo/favicon.ico

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 358 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 611 B

@ -0,0 +1 @@
https://raw.githubusercontent.com/yarnpkg/website/master/favicon.ico
Loading…
Cancel
Save