From b94113b80e5cc0d19c8b0018e7b51d6239722a4b Mon Sep 17 00:00:00 2001 From: Thibaut Date: Sun, 21 Dec 2014 14:16:38 -0500 Subject: [PATCH] Add Modernizr documentation --- assets/images/icons.png | Bin 25222 -> 25243 bytes assets/images/icons@2x.png | Bin 64285 -> 64303 bytes assets/javascripts/news.json | 2 +- .../templates/pages/about_tmpl.coffee | 5 +++ .../javascripts/views/pages/modernizr.coffee | 4 ++ assets/stylesheets/application.css.scss | 1 + assets/stylesheets/global/_base.scss | 2 + assets/stylesheets/global/_icons.scss | 1 + assets/stylesheets/pages/_modernizr.scss | 8 ++++ lib/docs/filters/modernizr/clean_html.rb | 21 ++++++++++ lib/docs/filters/modernizr/entries.rb | 36 ++++++++++++++++++ lib/docs/scrapers/modernizr.rb | 19 +++++++++ public/icons/docs/modernizr/16.png | Bin 0 -> 100 bytes public/icons/docs/modernizr/16@2x.png | Bin 0 -> 118 bytes public/icons/docs/modernizr/SOURCE | 1 + 15 files changed, 99 insertions(+), 1 deletion(-) create mode 100644 assets/javascripts/views/pages/modernizr.coffee create mode 100644 assets/stylesheets/pages/_modernizr.scss create mode 100644 lib/docs/filters/modernizr/clean_html.rb create mode 100644 lib/docs/filters/modernizr/entries.rb create mode 100644 lib/docs/scrapers/modernizr.rb create mode 100644 public/icons/docs/modernizr/16.png create mode 100644 public/icons/docs/modernizr/16@2x.png create mode 100644 public/icons/docs/modernizr/SOURCE diff --git a/assets/images/icons.png b/assets/images/icons.png index e22109c3f2ddf8ca8bb3044acf7935aaebea40ff..c3c1203bd7e18887f3ae9ba8a24b33cab731f786 100644 GIT binary patch delta 6583 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%0AZ^rA+?q6nD)w?5` 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 diff --git a/assets/javascripts/news.json b/assets/javascripts/news.json index 4151b13c..3fd33883 100644 --- a/assets/javascripts/news.json +++ b/assets/javascripts/news.json @@ -1,6 +1,6 @@ [ [ "2014-12-21", - "New React, RethinkDB and Socket.IO documentations" + "New React, RethinkDB, Socket.IO and Modernizr documentations" ], [ "2014-11-30", "New PHPUnit and Nokogiri documentations" diff --git a/assets/javascripts/templates/pages/about_tmpl.coffee b/assets/javascripts/templates/pages/about_tmpl.coffee index e9a0e2f8..f7b57839 100644 --- a/assets/javascripts/templates/pages/about_tmpl.coffee +++ b/assets/javascripts/templates/pages/about_tmpl.coffee @@ -208,6 +208,11 @@ credits = [ '2014 MaxCDN', 'MIT', 'https://raw.githubusercontent.com/MaxCDN/api-docs/master/LICENSE' + ], [ + 'Modernizr', + '2009-2014 Modernizr', + 'MIT', + 'http://modernizr.com/license/' ], [ 'Moment.js', '2011-2014 Tim Wood, Iskren Chernev, Moment.js contributors', diff --git a/assets/javascripts/views/pages/modernizr.coffee b/assets/javascripts/views/pages/modernizr.coffee new file mode 100644 index 00000000..63ba5658 --- /dev/null +++ b/assets/javascripts/views/pages/modernizr.coffee @@ -0,0 +1,4 @@ +#= require views/pages/base +#= require views/pages/requirejs + +app.views.ModernizrPage = app.views.RequirejsPage diff --git a/assets/stylesheets/application.css.scss b/assets/stylesheets/application.css.scss index c7d26cd8..efce2ff9 100644 --- a/assets/stylesheets/application.css.scss +++ b/assets/stylesheets/application.css.scss @@ -49,6 +49,7 @@ 'pages/markdown', 'pages/maxcdn', 'pages/mdn', + 'pages/modernizr', 'pages/moment', 'pages/mongoose', 'pages/nginx', diff --git a/assets/stylesheets/global/_base.scss b/assets/stylesheets/global/_base.scss index 51cd083d..b69f1694 100644 --- a/assets/stylesheets/global/_base.scss +++ b/assets/stylesheets/global/_base.scss @@ -147,6 +147,8 @@ td { + td { border-left: 1px solid $boxBorderLight; } tr:last-child > & { border-bottom: 0; } + + > pre:last-child, > p:last-child, > ul:last-child, > ol:last-child { margin-bottom: 0; } } input { diff --git a/assets/stylesheets/global/_icons.scss b/assets/stylesheets/global/_icons.scss index 0e684114..e5558653 100644 --- a/assets/stylesheets/global/_icons.scss +++ b/assets/stylesheets/global/_icons.scss @@ -75,3 +75,4 @@ ._icon-rethinkdb:before { background-position: 0 -12rem; } ._icon-react:before { background-position: -1rem -12rem; } ._icon-socketio:before { background-position: -2rem -12rem; } +._icon-modernizr:before { background-position: -3rem -12rem; } diff --git a/assets/stylesheets/pages/_modernizr.scss b/assets/stylesheets/pages/_modernizr.scss new file mode 100644 index 00000000..eb34fe37 --- /dev/null +++ b/assets/stylesheets/pages/_modernizr.scss @@ -0,0 +1,8 @@ +._modernizr { + h2 { @extend %block-heading; } + h3 { @extend %block-label, %label-blue; } + h4 { font-size: 1em; } + + code { @extend %label; } + blockquote { @extend %note; } +} diff --git a/lib/docs/filters/modernizr/clean_html.rb b/lib/docs/filters/modernizr/clean_html.rb new file mode 100644 index 00000000..c37f0efa --- /dev/null +++ b/lib/docs/filters/modernizr/clean_html.rb @@ -0,0 +1,21 @@ +module Docs + class Modernizr + class CleanHtmlFilter < Filter + def call + css('pre').each do |node| + node.content = node.content + end + + css('> div', '> section').each do |node| + node.before(node.children).remove + end + + css('h3, h4').each do |node| + node.name = node.name.sub(/\d/) { |i| i.to_i - 1 } + end + + doc + end + end + end +end diff --git a/lib/docs/filters/modernizr/entries.rb b/lib/docs/filters/modernizr/entries.rb new file mode 100644 index 00000000..d2cb377a --- /dev/null +++ b/lib/docs/filters/modernizr/entries.rb @@ -0,0 +1,36 @@ +module Docs + class Modernizr + class EntriesFilter < Docs::EntriesFilter + def additional_entries + entries = [] + + css('h3[id]').each do |node| + next unless name = node.content.strip[/\AModernizr\.\w+\(\)/] + entries << [name, node['id'], 'Modernizr'] + end + + css('section[id]').each do |node| + next unless heading = node.at_css('h3') + next unless name = heading.content.strip[/\A(Modernizr\.)?\w+\(\)/] + + heading['id'] = node['id'] + node.remove_attribute('id') + + name.prepend('Modernizr.') unless name.start_with?('Modernizr') + entries << [name, heading['id'], 'Modernizr'] + end + + css('h4[id^="features-"] + table').each do |table| + type = table.previous_element.content.strip + type << ' features' unless type.end_with?('features') + + table.css('tbody th[id]').each do |node| + entries << [node.content, node['id'], type] + end + end + + entries + end + end + end +end diff --git a/lib/docs/scrapers/modernizr.rb b/lib/docs/scrapers/modernizr.rb new file mode 100644 index 00000000..9299ed91 --- /dev/null +++ b/lib/docs/scrapers/modernizr.rb @@ -0,0 +1,19 @@ +module Docs + class Modernizr < UrlScraper + self.name = 'Modernizr' + self.type = 'modernizr' + self.version = '2.8.3' + self.base_url = 'http://modernizr.com/docs/' + + html_filters.push 'modernizr/entries', 'modernizr/clean_html', 'title' + + options[:title] = 'Modernizr' + options[:container] = '#documentation' + options[:skip_links] = true + + options[:attribution] = <<-HTML + © 2009–2014 Modernizr
+ Licensed under the MIT License. + HTML + end +end diff --git a/public/icons/docs/modernizr/16.png b/public/icons/docs/modernizr/16.png new file mode 100644 index 0000000000000000000000000000000000000000..305a2916c17dad376a7571403c77813c292c8e05 GIT binary patch literal 100 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`+MX_sAr_~TQx*sqTsqq@yD0Vl y#GkMFcS*GGW_%%a;b4JD!-Tep2?rXUx-sNg7znP5ZGHpP#^CAd=d#Wzp$PzuQX!cD literal 0 HcmV?d00001 diff --git a/public/icons/docs/modernizr/16@2x.png b/public/icons/docs/modernizr/16@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..a1c720d56aa000ea4a56ed9071d41b6a811afd35 GIT binary patch literal 118 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnL3?x0byx0z;*aCb)T!HjWxiT+_m}Ni~V@Z%- zFoVOh8)-m}oTrOpNCjhZ3Imf*(|^T4mjCVjM+E-JOLQo1*vZPUSxjxA@Y|KnK$Q%h Lu6{1-oD!M<2tywH literal 0 HcmV?d00001 diff --git a/public/icons/docs/modernizr/SOURCE b/public/icons/docs/modernizr/SOURCE new file mode 100644 index 00000000..0a668b4b --- /dev/null +++ b/public/icons/docs/modernizr/SOURCE @@ -0,0 +1 @@ +https://github.com/Modernizr/Modernizr/tree/master/media