diff --git a/assets/images/docs.png b/assets/images/docs.png index d84bec93..e5fcbd0d 100644 Binary files a/assets/images/docs.png and b/assets/images/docs.png differ diff --git a/assets/images/docs@2x.png b/assets/images/docs@2x.png index de70a95a..285a61eb 100644 Binary files a/assets/images/docs@2x.png and b/assets/images/docs@2x.png differ diff --git a/assets/javascripts/news.json b/assets/javascripts/news.json index d67f87eb..3ac79b10 100644 --- a/assets/javascripts/news.json +++ b/assets/javascripts/news.json @@ -1,5 +1,8 @@ [ [ + "2016-11-20", + "New documentations: Yarn, Immutable.js and Async" + ], [ "2016-10-10", "New documentations: scikit-learn and Statsmodels" ], [ diff --git a/assets/javascripts/templates/pages/about_tmpl.coffee b/assets/javascripts/templates/pages/about_tmpl.coffee index 3ac46435..19a3dd2e 100644 --- a/assets/javascripts/templates/pages/about_tmpl.coffee +++ b/assets/javascripts/templates/pages/about_tmpl.coffee @@ -99,6 +99,11 @@ credits = [ '2016 The Apache Software Foundation
Apache and the Apache feather logo are trademarks of The Apache Software Foundation.', 'Apache', 'https://www.apache.org/licenses/LICENSE-2.0' + ], [ + 'Async', + '2010-2016 Caolan McMahon', + 'MIT', + 'https://raw.githubusercontent.com/caolan/async/master/LICENSE' ], [ 'Backbone.js', '2010-2016 Jeremy Ashkenas, DocumentCloud', @@ -254,6 +259,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.', @@ -569,6 +579,11 @@ credits = [ '2012-2016 Tobias Koppers', 'MIT', 'https://raw.githubusercontent.com/webpack/webpack/master/LICENSE' + ], [ + 'Yarn', + '2016 Yarn Contributors', + 'BSD', + 'https://raw.githubusercontent.com/yarnpkg/yarn/master/LICENSE' ], [ 'Yii', '2008-2016 by Yii Software LLC', diff --git a/assets/javascripts/views/pages/simple.coffee b/assets/javascripts/views/pages/simple.coffee index 89e63acc..3a860cd8 100644 --- a/assets/javascripts/views/pages/simple.coffee +++ b/assets/javascripts/views/pages/simple.coffee @@ -8,6 +8,7 @@ class app.views.SimplePage extends app.views.BasePage app.views.AngularPage = app.views.AngularjsPage = +app.views.AsyncPage = app.views.BootstrapPage = app.views.BowerPage = app.views.CPage = @@ -22,6 +23,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 = @@ -59,5 +61,6 @@ app.views.UnderscorePage = app.views.VagrantPage = app.views.VuePage = app.views.WebpackPage = +app.views.YarnPage = app.views.YiiPage = app.views.SimplePage diff --git a/assets/stylesheets/application-dark.css.scss b/assets/stylesheets/application-dark.css.scss index 719f6c53..407d1bc0 100644 --- a/assets/stylesheets/application-dark.css.scss +++ b/assets/stylesheets/application-dark.css.scss @@ -34,6 +34,7 @@ 'pages/angular', 'pages/angularjs', 'pages/apache', + 'pages/async', 'pages/bootstrap', 'pages/c', 'pages/cakephp', diff --git a/assets/stylesheets/application.css.scss b/assets/stylesheets/application.css.scss index 61a340de..1d7798f1 100644 --- a/assets/stylesheets/application.css.scss +++ b/assets/stylesheets/application.css.scss @@ -34,6 +34,7 @@ 'pages/angular', 'pages/angularjs', 'pages/apache', + 'pages/async', 'pages/bootstrap', 'pages/c', 'pages/cakephp', diff --git a/assets/stylesheets/global/_icons.scss b/assets/stylesheets/global/_icons.scss index c481c560..21df3ac3 100644 --- a/assets/stylesheets/global/_icons.scss +++ b/assets/stylesheets/global/_icons.scss @@ -56,6 +56,7 @@ %icon-close-white { background-position: -2rem -5rem; } %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-jquery:before { background-position: -8rem 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-coffeescript:before { background-position: 0 -2rem; @extend %darkIconFix !optional; } ._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-jquerymobile:before { background-position: -5rem -2rem; } ._icon-lodash:before { background-position: -6rem -2rem; } diff --git a/assets/stylesheets/pages/_async.scss b/assets/stylesheets/pages/_async.scss new file mode 100644 index 00000000..09d018f5 --- /dev/null +++ b/assets/stylesheets/pages/_async.scss @@ -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; + } +} diff --git a/assets/stylesheets/pages/_simple.scss b/assets/stylesheets/pages/_simple.scss index 0205a6f6..f86fe1e4 100644 --- a/assets/stylesheets/pages/_simple.scss +++ b/assets/stylesheets/pages/_simple.scss @@ -25,6 +25,7 @@ ._gnu, ._grunt, ._haxe, +._immutable, ._influxdata, ._less, ._lodash, @@ -35,6 +36,7 @@ ._redux, ._sinon, ._typescript, -._webpack { +._webpack, +._yarn { @extend %simple; } diff --git a/lib/docs/filters/async/clean_html.rb b/lib/docs/filters/async/clean_html.rb new file mode 100644 index 00000000..c62c259f --- /dev/null +++ b/lib/docs/filters/async/clean_html.rb @@ -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 diff --git a/lib/docs/filters/async/entries.rb b/lib/docs/filters/async/entries.rb new file mode 100644 index 00000000..9a638be5 --- /dev/null +++ b/lib/docs/filters/async/entries.rb @@ -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 diff --git a/lib/docs/filters/immutable/clean_html.rb b/lib/docs/filters/immutable/clean_html.rb new file mode 100644 index 00000000..b1e29e60 --- /dev/null +++ b/lib/docs/filters/immutable/clean_html.rb @@ -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 diff --git a/lib/docs/filters/immutable/entries.rb b/lib/docs/filters/immutable/entries.rb new file mode 100644 index 00000000..0ef05a75 --- /dev/null +++ b/lib/docs/filters/immutable/entries.rb @@ -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 diff --git a/lib/docs/filters/marionette/clean_html.rb b/lib/docs/filters/marionette/clean_html.rb index 3a23b73f..8eceaf59 100644 --- a/lib/docs/filters/marionette/clean_html.rb +++ b/lib/docs/filters/marionette/clean_html.rb @@ -12,7 +12,11 @@ module Docs end 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| node.parent['data-language'] = node['class'][/lang-(\w+)/, 1] if node['class'] diff --git a/lib/docs/filters/npm/clean_html.rb b/lib/docs/filters/npm/clean_html.rb index c86dcdfd..ad5d0374 100644 --- a/lib/docs/filters/npm/clean_html.rb +++ b/lib/docs/filters/npm/clean_html.rb @@ -17,6 +17,11 @@ module Docs node.inner_html = node.inner_html.gsub(/<\/div>(?!\n|\z)/, "\n") end + css('h1 + h1.subtitle').each do |node| + node.name = 'p' + node.inner_html += '.' + end + css('pre').each do |node| node.content = node.content end diff --git a/lib/docs/filters/react/clean_html.rb b/lib/docs/filters/react/clean_html.rb index ef6ea35f..e903d679 100644 --- a/lib/docs/filters/react/clean_html.rb +++ b/lib/docs/filters/react/clean_html.rb @@ -8,7 +8,7 @@ module Docs at_css('h1').content = context[:root_title] 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| table = node diff --git a/lib/docs/filters/react/entries.rb b/lib/docs/filters/react/entries.rb index c70defe5..9488432b 100644 --- a/lib/docs/filters/react/entries.rb +++ b/lib/docs/filters/react/entries.rb @@ -1,69 +1,33 @@ module Docs class React 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 at_css('h1').children.select(&:text?).map(&:content).join.strip end def get_type link = at_css('.nav-docs-section .active, .toc .active') - return 'Miscellaneous' unless link section = link.ancestors('.nav-docs-section, section').first type = section.at_css('h3').content.strip - type = REPLACE_TYPES[type] || type - type += ": #{name}" if type == 'Components' type end def additional_entries - if API_SLUGS.include?(slug) - css('.inner-content h3, .inner-content h4').map do |node| - name = node.content - name.remove! %r{[#\(\)]} - name.remove! %r{\w+\:} - id = node.at_css('.anchor')['name'] - type = slug.include?('component') ? 'Component' : 'React' - [name, id, type] - end - else - entries = [] - - css('.props > .prop > .propTitle', '.props > .prop > .methodTitle').each do |node| # react-native - 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] + css('.inner-content h3 code, .inner-content h4 code').each_with_object([]) do |node, entries| + name = node.content + name.remove! %r{[#\(\)]} + name.remove! %r{\w+\:} + name.strip! + name = 'createFragmentobject' if name.include?('createFragmentobject') + id = node.parent.at_css('.anchor')['name'] + type = if slug == 'react-component' + 'Reference: Component' + elsif slug == 'react-api' + 'Reference: React' + else + 'Reference' end - - 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 + entries << [name, id, type] end end end diff --git a/lib/docs/filters/yarn/clean_html.rb b/lib/docs/filters/yarn/clean_html.rb new file mode 100644 index 00000000..6aceb70a --- /dev/null +++ b/lib/docs/filters/yarn/clean_html.rb @@ -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 %(
Read more) + 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 diff --git a/lib/docs/filters/yarn/entries.rb b/lib/docs/filters/yarn/entries.rb new file mode 100644 index 00000000..809bb1a6 --- /dev/null +++ b/lib/docs/filters/yarn/entries.rb @@ -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 diff --git a/lib/docs/scrapers/angular.rb b/lib/docs/scrapers/angular.rb index 2f29445f..f7860638 100644 --- a/lib/docs/scrapers/angular.rb +++ b/lib/docs/scrapers/angular.rb @@ -20,7 +20,8 @@ module Docs options[:replace_paths] = { 'testing/index.html' => 'guide/testing.html', 'guide/glossary.html' => 'glossary.html', - 'tutorial' => 'tutorial/' + 'tutorial' => 'tutorial/', + 'api' => 'api/' } options[:fix_urls] = -> (url) do @@ -41,12 +42,12 @@ module Docs end version '2 TypeScript' do - self.release = '2.1.2' + self.release = '2.2.1' self.base_url = 'https://angular.io/docs/ts/latest/' end version '2 Dart' do - self.release = '2.1.2' + self.release = '2.2.1' self.base_url = 'https://angular.io/docs/dart/latest/' options[:skip_patterns] += [/angular2\.compiler/] diff --git a/lib/docs/scrapers/async.rb b/lib/docs/scrapers/async.rb new file mode 100644 index 00000000..150478fa --- /dev/null +++ b/lib/docs/scrapers/async.rb @@ -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 + © 2010–2016 Caolan McMahon
+ Licensed under the MIT License. + HTML + end +end diff --git a/lib/docs/scrapers/immutable.rb b/lib/docs/scrapers/immutable.rb new file mode 100644 index 00000000..3a316ea8 --- /dev/null +++ b/lib/docs/scrapers/immutable.rb @@ -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.
+ 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 diff --git a/lib/docs/scrapers/lodash.rb b/lib/docs/scrapers/lodash.rb index d781f7e0..32ae5b43 100644 --- a/lib/docs/scrapers/lodash.rb +++ b/lib/docs/scrapers/lodash.rb @@ -19,7 +19,7 @@ module Docs HTML version '4' do - self.release = '4.16.2' + self.release = '4.17.2' self.base_url = "https://lodash.com/docs/#{release}" end diff --git a/lib/docs/scrapers/npm.rb b/lib/docs/scrapers/npm.rb index 1a900a4e..d0520ad0 100644 --- a/lib/docs/scrapers/npm.rb +++ b/lib/docs/scrapers/npm.rb @@ -2,7 +2,7 @@ module Docs class Npm < UrlScraper self.name = 'npm' self.type = 'npm' - self.release = '3.10.2' + self.release = '4.0.2' self.base_url = 'https://docs.npmjs.com/' self.force_gzip = true self.links = { diff --git a/lib/docs/scrapers/rdoc/ruby.rb b/lib/docs/scrapers/rdoc/ruby.rb index 34f9f4d1..59f32851 100644 --- a/lib/docs/scrapers/rdoc/ruby.rb +++ b/lib/docs/scrapers/rdoc/ruby.rb @@ -78,12 +78,12 @@ module Docs HTML version '2.3' do - self.release = '2.3.0' + self.release = '2.3.2' self.dir = '/Users/Thibaut/DevDocs/Docs/RDoc/Ruby23' end version '2.2' do - self.release = '2.2.4' + self.release = '2.2.6' self.dir = '/Users/Thibaut/DevDocs/Docs/RDoc/Ruby22' end end diff --git a/lib/docs/scrapers/react.rb b/lib/docs/scrapers/react.rb index 733aa2df..a55a4ced 100644 --- a/lib/docs/scrapers/react.rb +++ b/lib/docs/scrapers/react.rb @@ -2,9 +2,9 @@ module Docs class React < UrlScraper self.name = 'React' self.type = 'react' - self.release = '15.3.0' - self.base_url = 'https://facebook.github.io/react/' - self.root_path = 'docs/getting-started.html' + self.release = '15.4.0' + self.base_url = 'https://facebook.github.io/react/docs/' + self.root_path = 'hello-world.html' self.links = { home: 'https://facebook.github.io/react/', code: 'https://github.com/facebook/react' @@ -14,14 +14,17 @@ module Docs options[:root_title] = 'React Documentation' options[:container] = '.documentationContent' - options[:only_patterns] = [/\Adocs\//, /\Atips\//] - options[:skip] = %w( - docs/ - docs/videos.html - docs/complementary-tools.html - docs/examples.html - docs/conferences.html - tips/introduction.html) + + options[:replace_paths] = { + 'top-level-api.html' => 'react-api.html', + 'working-with-the-browser.html' => 'refs-and-the-dom.html', + 'interactivity-and-dynamic-uis.html' => 'state-and-lifecycle.html', + 'more-about-refs.html' => 'refs-and-the-dom.html', + 'advanced-performance.html' => 'optimizing-performance.html', + 'component-api.html' => 'react-component.html', + 'component-specs.html' => 'react-component.html', + 'multiple-components.html' => 'composition-vs-inheritance.html', + } options[:attribution] = <<-HTML © 2013–2016 Facebook Inc.
diff --git a/lib/docs/scrapers/vue.rb b/lib/docs/scrapers/vue.rb index 06f1b944..bf88c579 100644 --- a/lib/docs/scrapers/vue.rb +++ b/lib/docs/scrapers/vue.rb @@ -18,7 +18,7 @@ module Docs HTML version '2' do - self.release = '2.0.5' + self.release = '2.0.8' self.base_url = 'https://vuejs.org/v2/' self.root_path = 'guide/index.html' self.initial_paths = %w(api/index.html) diff --git a/lib/docs/scrapers/yarn.rb b/lib/docs/scrapers/yarn.rb new file mode 100644 index 00000000..6f726abf --- /dev/null +++ b/lib/docs/scrapers/yarn.rb @@ -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 + © 2016 Yarn Contributors
+ Licensed under the BSD License. + HTML + end +end diff --git a/public/icons/docs/async/16.png b/public/icons/docs/async/16.png new file mode 100644 index 00000000..08eafa95 Binary files /dev/null and b/public/icons/docs/async/16.png differ diff --git a/public/icons/docs/async/16@2x.png b/public/icons/docs/async/16@2x.png new file mode 100644 index 00000000..acb36ba2 Binary files /dev/null and b/public/icons/docs/async/16@2x.png differ diff --git a/public/icons/docs/async/SOURCE b/public/icons/docs/async/SOURCE new file mode 100644 index 00000000..c5d679c8 --- /dev/null +++ b/public/icons/docs/async/SOURCE @@ -0,0 +1 @@ +https://raw.githubusercontent.com/caolan/async/master/logo/favicon.ico diff --git a/public/icons/docs/immutable/16.png b/public/icons/docs/immutable/16.png new file mode 100644 index 00000000..6bdd99d6 Binary files /dev/null and b/public/icons/docs/immutable/16.png differ diff --git a/public/icons/docs/immutable/16@2x.png b/public/icons/docs/immutable/16@2x.png new file mode 100644 index 00000000..2a29e481 Binary files /dev/null and b/public/icons/docs/immutable/16@2x.png differ diff --git a/public/icons/docs/immutable/SOURCE b/public/icons/docs/immutable/SOURCE new file mode 100644 index 00000000..4ab56fe0 --- /dev/null +++ b/public/icons/docs/immutable/SOURCE @@ -0,0 +1 @@ +https://raw.githubusercontent.com/facebook/immutable-js/master/pages/src/static/favicon.png diff --git a/public/icons/docs/yarn/16.png b/public/icons/docs/yarn/16.png new file mode 100644 index 00000000..f34c007b Binary files /dev/null and b/public/icons/docs/yarn/16.png differ diff --git a/public/icons/docs/yarn/16@2x.png b/public/icons/docs/yarn/16@2x.png new file mode 100644 index 00000000..9782016d Binary files /dev/null and b/public/icons/docs/yarn/16@2x.png differ diff --git a/public/icons/docs/yarn/SOURCE b/public/icons/docs/yarn/SOURCE new file mode 100644 index 00000000..05dc98ef --- /dev/null +++ b/public/icons/docs/yarn/SOURCE @@ -0,0 +1 @@ +https://raw.githubusercontent.com/yarnpkg/website/master/favicon.ico