From 060052beb7e15381997604b4c0492b131c97ada7 Mon Sep 17 00:00:00 2001 From: Thibaut Date: Sun, 25 May 2014 22:18:51 -0400 Subject: [PATCH] Add Laravel documentation --- assets/images/icons.png | Bin 18550 -> 19239 bytes assets/images/icons@2x.png | Bin 47852 -> 49711 bytes .../templates/pages/about_tmpl.coffee | 5 ++ .../templates/pages/news_tmpl.coffee | 5 +- assets/stylesheets/application.css.scss | 1 + assets/stylesheets/global/_icons.scss | 3 +- assets/stylesheets/pages/_laravel.scss | 8 +++ lib/docs/filters/laravel/clean_html.rb | 55 ++++++++++++++++++ lib/docs/filters/laravel/entries.rb | 40 +++++++++++++ lib/docs/scrapers/laravel.rb | 39 +++++++++++++ public/icons/docs/laravel/16.png | Bin 0 -> 683 bytes public/icons/docs/laravel/16@2x.png | Bin 0 -> 1721 bytes public/icons/docs/laravel/SOURCE | 1 + 13 files changed, 155 insertions(+), 2 deletions(-) create mode 100644 assets/stylesheets/pages/_laravel.scss create mode 100644 lib/docs/filters/laravel/clean_html.rb create mode 100644 lib/docs/filters/laravel/entries.rb create mode 100644 lib/docs/scrapers/laravel.rb create mode 100644 public/icons/docs/laravel/16.png create mode 100755 public/icons/docs/laravel/16@2x.png create mode 100644 public/icons/docs/laravel/SOURCE diff --git a/assets/images/icons.png b/assets/images/icons.png index aac50a9a5c7c7c3d43e312294612e95348f815f8..719b11cc7a9b1a0654016ecca82d5018ed6b0380 100644 GIT binary patch delta 9556 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 diff --git a/assets/images/icons@2x.png b/assets/images/icons@2x.png index d3e7cddf666afe36fb0b4ce7668a906c00686458..35b9fa1d5fe1b6c2c1414d28cd4ab65ba49087e5 100644 GIT binary patch delta 8989 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 result app.news = [ - [ 1399161600000, # May 4, 2014 + [ 1400976000000, # May 25, 2014 + """ New Laravel documentation """, + ], [ + 1399161600000, # May 4, 2014 """ New Express, Grunt, and MaxCDN documentations """, ], [ 1396742400000, # April 6, 2014 diff --git a/assets/stylesheets/application.css.scss b/assets/stylesheets/application.css.scss index d6b15b9c..57f3e5cb 100644 --- a/assets/stylesheets/application.css.scss +++ b/assets/stylesheets/application.css.scss @@ -39,6 +39,7 @@ 'pages/knockout', 'pages/git', 'pages/grunt', + 'pages/laravel', 'pages/less', 'pages/lodash', 'pages/maxcdn', diff --git a/assets/stylesheets/global/_icons.scss b/assets/stylesheets/global/_icons.scss index ab85f8a2..c3ff5cb0 100644 --- a/assets/stylesheets/global/_icons.scss +++ b/assets/stylesheets/global/_icons.scss @@ -4,7 +4,7 @@ width: 1rem; height: 1rem; background-image: image-url('icons.png'); - background-size: 5rem 9rem; + background-size: 5rem 10rem; } @media (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 144dpi) { @@ -56,3 +56,4 @@ ._icon-express:before { background-position: -2rem -8rem; } ._icon-grunt:before { background-position: -3rem -8rem; } ._icon-maxcdn:before { background-position: -4rem -8rem; } +._icon-laravel:before { background-position: 0 -9rem; } diff --git a/assets/stylesheets/pages/_laravel.scss b/assets/stylesheets/pages/_laravel.scss new file mode 100644 index 00000000..21604526 --- /dev/null +++ b/assets/stylesheets/pages/_laravel.scss @@ -0,0 +1,8 @@ +._sami { + h2 { @extend %block-heading; } + h3 { @extend %block-label, %label-blue; } + h4 { font-size: 1em; } + + blockquote { @extend %note; } + p > code { @extend %label; } +} diff --git a/lib/docs/filters/laravel/clean_html.rb b/lib/docs/filters/laravel/clean_html.rb new file mode 100644 index 00000000..fca4d644 --- /dev/null +++ b/lib/docs/filters/laravel/clean_html.rb @@ -0,0 +1,55 @@ +module Docs + class Laravel + class CleanHtmlFilter < Filter + def call + if subpath.start_with?('/api') + api + else + other + end + + doc + end + + def api + css('#footer', '.location').remove + + # Replace .header with

+ css('.header > h1').each do |node| + node.parent.before(node).remove + node.content = 'Laravel' if root_page? + end + + # Remove + css('a > abbr').each do |node| + node.parent['title'] = node['title'] + node.before(node.children).remove + end + + # Clean up headings + css('h1 > a', '.content', 'h3 > code', 'h3 strong', 'abbr').each do |node| + node.before(node.children).remove + end + + # Remove empty + css('td').each do |node| + node.remove if node.content =~ /\A\s+\z/ + end + end + + def other + @doc = at_css('#docs-content') + + # Clean up headings + css('h2 > a').each do |node| + node.before(node.children).remove + end + + # Remove code highlighting + css('pre').each do |node| + node.content = node.content + end + end + end + end +end diff --git a/lib/docs/filters/laravel/entries.rb b/lib/docs/filters/laravel/entries.rb new file mode 100644 index 00000000..3a0da2c9 --- /dev/null +++ b/lib/docs/filters/laravel/entries.rb @@ -0,0 +1,40 @@ +module Docs + class Laravel + class EntriesFilter < Docs::EntriesFilter + def get_name + if api_page? + at_css('h1').content.strip.split('\\').last + else + at_css('h1').content.strip + end + end + + def get_type + if api_page? + type = at_css('h1').content.strip.remove('Illuminate\\').remove(/\\\w+?\z/) + type.end_with?('Console') ? type.split('\\').first : type + else + 'Guides' + end + end + + def additional_entries + return [] unless api_page? + + css('h3[id^="method_"]').each_with_object [] do |node, entries| + next if node.at_css('.location').content.start_with?('in') + + name = node['id'].remove('method_') + name.prepend "#{self.name}::" + name << '()' + + entries << [name, node['id']] + end + end + + def api_page? + subpath.start_with?('/api') + end + end + end +end diff --git a/lib/docs/scrapers/laravel.rb b/lib/docs/scrapers/laravel.rb new file mode 100644 index 00000000..9d7dce4d --- /dev/null +++ b/lib/docs/scrapers/laravel.rb @@ -0,0 +1,39 @@ +module Docs + class Laravel < UrlScraper + self.name = 'Laravel' + self.slug = 'laravel' + self.type = 'laravel' + self.version = '4.1.29' + self.base_url = 'http://laravel.com' + self.root_path = '/docs/introduction' + self.initial_paths = %w(/api/4.1/namespaces.html) + + html_filters.push 'laravel/entries', 'laravel/clean_html' + + options[:container] = ->(filter) { + filter.subpath.start_with?('/api') ? nil : '#documentation > article' + } + + options[:only_patterns] = [ + /\A\/api\/4\.1\//, + /\A\/docs\//] + + options[:skip] = %w( + /docs/quick + /docs/releases + /docs/upgrade + /docs/artisan + /docs/commands + /api/4.1/panel.html + /api/4.1/classes.html + /api/4.1/interfaces.html + /api/4.1/traits.html + /api/4.1/doc-index.html + /api/4.1/Illuminate.html) + + options[:attribution] = <<-HTML + © Taylor Otwell
+ Licensed under the MIT License. + HTML + end +end diff --git a/public/icons/docs/laravel/16.png b/public/icons/docs/laravel/16.png new file mode 100644 index 0000000000000000000000000000000000000000..1ecf19caea50b31466a9adc8b1c27a830c752989 GIT binary patch literal 683 zcmV;c0#yBpP)RnM#&~WvCVUkXTDtsVPY+NEhe=8kn`Eq*M~- zsB4;-8ss*Y^X<%UN*{82I55nd?|0^W&Kyr&Z{90U<&Vj5c1)J%h=fs^DP-`dkcAwf zw3rO%jGMmBJ)W#8it-^iDRG<#K-E`3McSYr4Z^${fqC~DBxZ*_{ovjbJOAGxlmb22 z3&i74_wPb=Ty=(xwI4i+$Azq~ge*!+Y)}?}4Clg3O+dF@hRiwyS$YhzBy-L)(J?{q z-|{V~U=E2*j`MlL8BlBis;->H8N8n>JXKR7@M9A?(h3<&*dFP-xgpx=w-uSkLqL2Bs;bD= z>_i30ZYG-QV7Obfvbtdh>Uj`4#@y>N_0*fS}nKLGqWsHq(=W2T91vU`z&6qq^zb{@*<<17{U= R`#%5x002ovPDHLkV1moILRA0& literal 0 HcmV?d00001 diff --git a/public/icons/docs/laravel/16@2x.png b/public/icons/docs/laravel/16@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..bbb548f70d54b5e9a8f59d73bdf4cb75f9ac71d2 GIT binary patch literal 1721 zcmV;q21fabP)6O24ej2J{4ES>kZwWN@CJ3BMG+cp@)qWrJ{Q3Fwf{evbDMG}cI znxOIZOMC^9n5Yqhk7$TgtfKgcBoZJ{d3JYZ?(sW!E|uD*h|4A?J3Br1Jihatb8a>M z9QX7qDepW&q4kN#nJ1zagUT(sfY1dHQEI74B2Q0Z&p1YT`vWRCE2+huB%M>yxRwh1 z(j^K^iY|~tma-I`M9v`cEus+8mLY1dC2GxVrFM6UMxnC~5m7m-M^KI{%~*H_Ai+z!Ifw#m)sFro=Oj!10?@be@QPa|wm6 zNiF&eYM4DiQ=bEPCX_ubLBZ+}p&dtF3ReXZGsMC--=eCji=^$v?l{U-PoaW7mkOD? zQ0gav#1`oE;Q4o;l-Foc!vqmp+xT!rCCJt=0sgsB;Us4yWl#U#NR+ZQ2?anQuzRRzPbI(lMmXAocN}0O$(fZBk#8hG z{(FsCqRo)dgXStoinv45^S1*ybs?hHb~b<)btu`L5`YD7xL6>R*Oy zD>XHZCrulH+3*zlRMzbLS`qcUNav2ThVt%5NnosxL%W#+AZ|Sb zP@-i_m~Oy!BAPv1tA3vRd%waFm@?DXUlJ7cL2}3@cahOK1fB=Jsq0YQ{zlH z9QdI^?F?E}KVKU#MDlFNew-DUI574;g%X7_>rhTPgkCy!t)tM{iL775@B1OnUt!JV zgPe7Cj-}SR*>T=p5(jQE-NJ4m37ucHvs(ucCJ5k9Zk;rUjDs?qRt`^LMjSu@J1|l= zGNfhStj4mrdXU35b8@-Oor4wM0lnuD-Ey?htH`ih zV9QbPPlho&WJgMr^P%U1SHnXn0kSK!Au|l?FQZnw7Hjpk^tXEnAp4lh1C$`CL)9TM z%lQl~4p5?$ce*tmJiQCe$?Ocqmq9iotItu(ULdoR=BKO%Yzy$Wlj#4blsXlq3U-BB zMtk^1v_Y^#v=mq_PzuhFvlFNj6!n#9DcsTc{Sw!&;=AL(Wi*&HtiX4~BnKtm{Fx^s z2T}6$Tk!k`xr|7m4&>nTJTVYIvyoIS+LFV0&_wR6G+0}6##Nb4G@ zP{<4HiO3rgIk})1A?_5(sgT7w4B3XPJMn!7UxsDNC7xc6z2Q-aKu8=qMuFZS18{E` zmu@&)26#4i;{Hq>9!dwn^beu;D9C<0PuGF%9*)t#{=FC^$vNPR)x_LR?bVmc!+xe3 zs2qVqfsX0liXiO?DnKuE9;SjZk2)KN+=NMBt^zt67|ukBq