diff --git a/assets/images/docs.png b/assets/images/docs.png
index 47f4b548..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 399f5bef..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 ce6d7725..3ac79b10 100644
--- a/assets/javascripts/news.json
+++ b/assets/javascripts/news.json
@@ -1,7 +1,7 @@
[
[
"2016-11-20",
- "New documentations: Yarn and Immutable.js"
+ "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 2290145c..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',
diff --git a/assets/javascripts/views/pages/simple.coffee b/assets/javascripts/views/pages/simple.coffee
index bf8a097b..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 =
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 fb876f5e..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; }
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/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/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/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