diff --git a/assets/images/icons.png b/assets/images/icons.png
index 6ae6b697..e1d524af 100644
Binary files a/assets/images/icons.png and b/assets/images/icons.png differ
diff --git a/assets/images/icons@2x.png b/assets/images/icons@2x.png
index 17f5bd0e..edc05b05 100644
Binary files a/assets/images/icons@2x.png and b/assets/images/icons@2x.png differ
diff --git a/assets/javascripts/templates/pages/about_tmpl.coffee b/assets/javascripts/templates/pages/about_tmpl.coffee
index 2479f574..5828cd57 100644
--- a/assets/javascripts/templates/pages/about_tmpl.coffee
+++ b/assets/javascripts/templates/pages/about_tmpl.coffee
@@ -192,6 +192,11 @@ credits = [
'2009-2014 The Dojo Foundation',
'MIT',
'https://raw.github.com/lodash/lodash/master/LICENSE.txt'
+ ], [
+ 'Marionette.js',
+ '2014 Muted Solutions, LLC',
+ 'MIT',
+ 'http://mutedsolutions.mit-license.org/'
], [
'Markdown',
'2004 John Gruber',
diff --git a/assets/javascripts/templates/pages/news_tmpl.coffee b/assets/javascripts/templates/pages/news_tmpl.coffee
index 3368fd0f..cac5eaf4 100644
--- a/assets/javascripts/templates/pages/news_tmpl.coffee
+++ b/assets/javascripts/templates/pages/news_tmpl.coffee
@@ -34,7 +34,7 @@ newsItem = (date, news) ->
app.news = [
[ 1413676800000, # October 19, 2014
- """ New SVG documentation """,
+ """ New SVG and Marionette.js documentations """,
], [
1413590400000, # October 18, 2014
""" New nginx documentation """,
diff --git a/assets/javascripts/views/pages/marionette.coffee b/assets/javascripts/views/pages/marionette.coffee
new file mode 100644
index 00000000..ea7d3a3f
--- /dev/null
+++ b/assets/javascripts/views/pages/marionette.coffee
@@ -0,0 +1,4 @@
+#= require views/pages/base
+#= require views/pages/underscore
+
+app.views.MarionettePage = app.views.UnderscorePage
diff --git a/assets/stylesheets/application.css.scss b/assets/stylesheets/application.css.scss
index 3eeb2919..9ce677c5 100644
--- a/assets/stylesheets/application.css.scss
+++ b/assets/stylesheets/application.css.scss
@@ -45,6 +45,7 @@
'pages/laravel',
'pages/less',
'pages/lodash',
+ 'pages/marionette',
'pages/markdown',
'pages/maxcdn',
'pages/mdn',
diff --git a/assets/stylesheets/global/_icons.scss b/assets/stylesheets/global/_icons.scss
index 4cf1a85a..34e29200 100644
--- a/assets/stylesheets/global/_icons.scss
+++ b/assets/stylesheets/global/_icons.scss
@@ -67,3 +67,4 @@
._icon-xpath:before { background-position: -3rem -10rem; }
._icon-nginx:before { background-position: -4rem -10rem; }
._icon-svg:before { background-position: 0 -11rem; }
+._icon-marionette:before { background-position: -1rem -11rem; }
diff --git a/assets/stylesheets/pages/_marionette.scss b/assets/stylesheets/pages/_marionette.scss
new file mode 100644
index 00000000..c76c50cd
--- /dev/null
+++ b/assets/stylesheets/pages/_marionette.scss
@@ -0,0 +1,7 @@
+._marionette {
+ padding-left: 1rem;
+
+ > h1, > h2 { margin-left: -1rem; }
+ > h2 { @extend %block-heading; }
+ > h3 { @extend %block-label, %label-blue; }
+}
diff --git a/lib/docs/filters/marionette/clean_html.rb b/lib/docs/filters/marionette/clean_html.rb
new file mode 100644
index 00000000..e1337dd5
--- /dev/null
+++ b/lib/docs/filters/marionette/clean_html.rb
@@ -0,0 +1,30 @@
+module Docs
+ class Marionette
+ class CleanHtmlFilter < Filter
+ def call
+ root_page? ? root : other
+ doc
+ end
+
+ def root
+ at_css('p').remove
+ end
+
+ def other
+ css('#source + h2', '#improve', '#source', '.glyphicon').remove
+
+ css('pre > code').each do |node|
+ node.before(node.children).remove
+ end
+
+ css('h2', 'h3').each do |node|
+ id = node.content.strip
+ id.downcase!
+ id.remove! %r{['"\/\.:]}
+ id.gsub! %r{[\ _]}, '-'
+ node['id'] = id
+ end
+ end
+ end
+ end
+end
diff --git a/lib/docs/filters/marionette/entries.rb b/lib/docs/filters/marionette/entries.rb
new file mode 100644
index 00000000..37cad2e8
--- /dev/null
+++ b/lib/docs/filters/marionette/entries.rb
@@ -0,0 +1,12 @@
+module Docs
+ class Marionette
+ class EntriesFilter < Docs::EntriesFilter
+ def get_name
+ name = at_css('h1').content.strip
+ name.remove!(/Marionette./)
+ name = name[0].upcase + name.from(1)
+ name
+ end
+ end
+ end
+end
diff --git a/lib/docs/scrapers/marionette.rb b/lib/docs/scrapers/marionette.rb
new file mode 100644
index 00000000..e8311cc2
--- /dev/null
+++ b/lib/docs/scrapers/marionette.rb
@@ -0,0 +1,27 @@
+module Docs
+ class Marionette < UrlScraper
+ self.name = 'Marionette.js'
+ self.slug = 'marionette'
+ self.type = 'marionette'
+ self.version = '2.2.1'
+ self.base_url = 'http://marionettejs.com/docs/'
+ self.root_path = 'current'
+
+ html_filters.push 'marionette/clean_html', 'marionette/entries'
+
+ options[:container] = '#content'
+
+ options[:skip] = %w(/readme.html)
+ options[:skip_patterns] = [/\A\/v\d/]
+
+ options[:fix_urls] = ->(url) do
+ url.sub! %r{marionette([^\/#\?]*)\.md}, 'marionette\1'
+ url
+ end
+
+ options[:attribution] = <<-HTML
+ © 2014 Muted Solutions, LLC
+ Licensed under the MIT License.
+ HTML
+ end
+end
diff --git a/public/icons/docs/marionette/16.png b/public/icons/docs/marionette/16.png
new file mode 100644
index 00000000..01df077f
Binary files /dev/null and b/public/icons/docs/marionette/16.png differ
diff --git a/public/icons/docs/marionette/16@2x.png b/public/icons/docs/marionette/16@2x.png
new file mode 100644
index 00000000..c1269e03
Binary files /dev/null and b/public/icons/docs/marionette/16@2x.png differ
diff --git a/public/icons/docs/marionette/SOURCE b/public/icons/docs/marionette/SOURCE
new file mode 100644
index 00000000..a5d77e17
--- /dev/null
+++ b/public/icons/docs/marionette/SOURCE
@@ -0,0 +1 @@
+https://github.com/marionettejs/marionettejs.com