From 34934b27cb914cea219288609ea38fa9f5010889 Mon Sep 17 00:00:00 2001 From: Thibaut Date: Sun, 21 Dec 2014 12:23:38 -0500 Subject: [PATCH] Add Socket.IO documentation --- assets/images/icons.png | Bin 24855 -> 25222 bytes assets/images/icons@2x.png | Bin 63322 -> 64285 bytes assets/javascripts/news.json | 2 +- .../templates/pages/about_tmpl.coffee | 5 ++++ .../javascripts/views/pages/socketio.coffee | 4 +++ assets/stylesheets/application.css.scss | 1 + assets/stylesheets/global/_icons.scss | 1 + assets/stylesheets/pages/_socketio.scss | 24 ++++++++++++++++ lib/docs/filters/socketio/clean_html.rb | 25 ++++++++++++++++ lib/docs/filters/socketio/entries.rb | 27 ++++++++++++++++++ lib/docs/scrapers/socketio.rb | 20 +++++++++++++ public/icons/docs/socketio/16.png | Bin 0 -> 323 bytes public/icons/docs/socketio/16@2x.png | Bin 0 -> 739 bytes public/icons/docs/socketio/SOURCE | 1 + 14 files changed, 109 insertions(+), 1 deletion(-) create mode 100644 assets/javascripts/views/pages/socketio.coffee create mode 100644 assets/stylesheets/pages/_socketio.scss create mode 100644 lib/docs/filters/socketio/clean_html.rb create mode 100644 lib/docs/filters/socketio/entries.rb create mode 100644 lib/docs/scrapers/socketio.rb create mode 100644 public/icons/docs/socketio/16.png create mode 100644 public/icons/docs/socketio/16@2x.png create mode 100644 public/icons/docs/socketio/SOURCE diff --git a/assets/images/icons.png b/assets/images/icons.png index 4dd556a4fb9736e110452b9d14a1b56b14f5ac94..e22109c3f2ddf8ca8bb3044acf7935aaebea40ff 100644 GIT binary patch delta 6607 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 N002ovPDHLkV1hVx-!T9H delta 6237 zcmV-j7^3Hf#Q~SX0gxjCVBWDM)kuHsod;A@*Ve~xjL(AgnLLe%(uZE`223<+BDNs* z=!=PoUGt1JPh-~@YZS4g*cDMhEF@?|MZgv;AV^n70v138q)pl1e;+TiCiB3EnJ;TS z^Y&W*b^40=xzE}Ap1CvT(dCV6wd4DzisyguTwcR# zCC$}KO6|>S@UkI*^m*kF$6&Z2VK`M1ui>@0 z3!A8DtZcQoXm>`}938zgK_PN&)iN#MM#1 z@j_EcGTH0XH$h8kDt=Y~ν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 Hu0mjfOLSrM diff --git a/assets/images/icons@2x.png b/assets/images/icons@2x.png index 0eb476f3025bce41ea7219f6c72f662a4bce3e8f..1ab985f4c783061877cc97f28b67fdf321c8bc9c 100644 GIT binary patch delta 13277 zcmV<3Ga}5|?gO3n1CS#E`sA@Cd&hskMR9F^eA3jEzbV!LQg)YRVQF?mQ0zUimn6?< ziW<#}n#5S55skf~fGA*>*n4l$sIk+*0*D$*B1W-`u)F8~yVu!y<7SuLMKJhY&gb*X z3{&nH{Cdv4=bk%r#0-Q}*?FN5V}$`GaPR_xj4qv?8a|X|SuaLt9H<-zC{BOvSq+e` z8hCgGFbtYU%+tYp{q!lST^NMkDh}cL@4uq-pI6eAr0tY-XbtTQA49Vm)TH#?i|Emf zM0$8Vi5~u$igs9Ar`af(x1F?cQRyp2FdZ~7K-d})ea9eHVxPrkMg-WS4uRg-zl71U z;b}^?Sla+lhqh8|u7<%BoSA=7?+JM|3}9@-La(_{Y^@U7Tsc;oMcI_ou4$3syM}Ts zv|+X!%YRLtyHugvr^}mw;{1j$da{&Cfg$fVLmnH|-Z+c!iYc`_r|Cx4ep=eCCHI7J zP&5<;F&L*p%RcEqIcIhe-A$&4*N%ufO80+1OnKK&pv2~^;nwBE{EdGDda-h>vo-Nd z8GzTtaxCe4cqJjUEicEqE-))>(7=w1fQ|>RFNna71UOV+zZW#{85Fe1)*U0nvvkin zYxRIE^x9evD0;%F5Si!*J_M^z^qVD1!$PJ zLozyt_Yv_2zTdItyC}I&w54PV({++Zg@%PqQif%=B6@%@ z%Une?p9w+V&kTf<8K8xhtjxaHO7d%NCMlOH2cc)r4y+_Ub^;D<7}%38 z#jn>J?j-38ZpH(`!}JKAOm`~*9_=_i1Ymi89;f`=cw}o5DKF<32kwFB_403=B*Wcg z!>U$sZ2gDz1`z+-q8re~UjuUXpJ$Tmm4`3oa$`&8BQM zn*sC0;z~M$**78JJ{_Mc=7kAR@So6jc)fpPTZb)%5@43rgg^_#g!4Enp;t01q4*{X z#ZS8^3F#DRQBpzEnq1iD$8fG#7A1XG*S{GS5*?i>2(*7cGL&v#{6%NDlWfS#IZpQh zB4FbX;%9g}fCsM!kH@{=BOC{`hC7!I=nlq=qwvSzB@eHqeb2^4Nfn?Ori+sB6?mJ$ z!vZFAi;`xrwgpqucL>babtv2m7GOXEXzozwz~%ysLR`!73KxK791%-1Dw3ybNB}hl zBi-G&?t6a>c51NMl_x`HmojWsoH+6wB?(DruYI zjp`VeWsc|)+W(CrF3VgB=^?s$^{P$FGI5RRvdn*_g)htO6r6!XvffHK)rm7EJL$u^ za+3kAa9kWh zTSZ-%{#B=D?(l~5`NDMc`OfZJX2`#JQirfB0m%0AZ^rA+?q6nD)w?5`YSZJMr9;~_ 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 b4|Dhz^8VvPC`|*(00000NkvXXu0mjfIbfe~ delta 12330 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 QQUCw|07*qoM6N<$f|h-DVE_OC diff --git a/assets/javascripts/news.json b/assets/javascripts/news.json index 422c46e0..4151b13c 100644 --- a/assets/javascripts/news.json +++ b/assets/javascripts/news.json @@ -1,6 +1,6 @@ [ [ "2014-12-21", - "New React and RethinkDB documentations" + "New React, RethinkDB and Socket.IO 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 a0e5557a..e9a0e2f8 100644 --- a/assets/javascripts/templates/pages/about_tmpl.coffee +++ b/assets/javascripts/templates/pages/about_tmpl.coffee @@ -293,6 +293,11 @@ credits = [ '2010-2014 Christian Johansen', 'BSD', 'https://raw.githubusercontent.com/cjohansen/Sinon.JS/master/LICENSE' + ], [ + 'Socket.io', + '2014 Automattic', + 'MIT', + 'https://raw.githubusercontent.com/Automattic/socket.io/master/LICENSE' ], [ 'Underscore.js', '2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors', diff --git a/assets/javascripts/views/pages/socketio.coffee b/assets/javascripts/views/pages/socketio.coffee new file mode 100644 index 00000000..62dc26dc --- /dev/null +++ b/assets/javascripts/views/pages/socketio.coffee @@ -0,0 +1,4 @@ +#= require views/pages/base +#= require views/pages/requirejs + +app.views.SocketioPage = app.views.RequirejsPage diff --git a/assets/stylesheets/application.css.scss b/assets/stylesheets/application.css.scss index a1a09878..c7d26cd8 100644 --- a/assets/stylesheets/application.css.scss +++ b/assets/stylesheets/application.css.scss @@ -63,6 +63,7 @@ 'pages/rethinkdb', 'pages/rfc', 'pages/sinon', + 'pages/socketio', 'pages/sphinx', 'pages/underscore', 'pages/yard', diff --git a/assets/stylesheets/global/_icons.scss b/assets/stylesheets/global/_icons.scss index ace3022f..0e684114 100644 --- a/assets/stylesheets/global/_icons.scss +++ b/assets/stylesheets/global/_icons.scss @@ -74,3 +74,4 @@ ._icon-nokogiri:before { background-position: -4rem -11rem; } ._icon-rethinkdb:before { background-position: 0 -12rem; } ._icon-react:before { background-position: -1rem -12rem; } +._icon-socketio:before { background-position: -2rem -12rem; } diff --git a/assets/stylesheets/pages/_socketio.scss b/assets/stylesheets/pages/_socketio.scss new file mode 100644 index 00000000..633dcbb2 --- /dev/null +++ b/assets/stylesheets/pages/_socketio.scss @@ -0,0 +1,24 @@ +._socketio { + > h2 { @extend %block-heading; } + > h3 { @extend %block-label, %label-blue; } + > h2, > h3 { clear: both; } + h4 { font-size: 1em; } + + .ezcol-one-half { + margin: .5em 0 1.5em; + float: left; + width: 50%; + padding-right: .5em; + @extend %border-box; + + &.ezcol-last { + float: right; + padding: 0 0 0 .5em; + } + + > h4 { margin: 0 0 1em; } + > pre { margin: 1em 0 0; } + } + + code { @extend %label; } +} diff --git a/lib/docs/filters/socketio/clean_html.rb b/lib/docs/filters/socketio/clean_html.rb new file mode 100644 index 00000000..40f02024 --- /dev/null +++ b/lib/docs/filters/socketio/clean_html.rb @@ -0,0 +1,25 @@ +module Docs + class Socketio + class CleanHtmlFilter < Filter + def call + @doc = at_css('.entry-content') + + css('p > br').each do |node| + node.remove unless node.next.content =~ /\s*\-/ + end + + css('h1, h2, h3').each do |node| + next if node == doc.first_element_child + node.name = node.name.sub(/\d/) { |i| i.to_i + 1 } + node['id'] = node.content.strip.parameterize + end + + css('pre').each do |node| + node.content = node.content + end + + doc + end + end + end +end diff --git a/lib/docs/filters/socketio/entries.rb b/lib/docs/filters/socketio/entries.rb new file mode 100644 index 00000000..656931a2 --- /dev/null +++ b/lib/docs/filters/socketio/entries.rb @@ -0,0 +1,27 @@ +module Docs + class Socketio + class EntriesFilter < Docs::EntriesFilter + def get_name + at_css('h1').content + end + + def get_type + 'Guides' + end + + def additional_entries + return [] unless slug.end_with?('api') + + css('h3').each_with_object([]) do |node, entries| + name = node.content + name.remove! %r{\(.*} + name.remove! %r{\:.*} + + unless entries.any? { |entry| entry[0] == name } + entries << [name, node['id'], self.name.remove(' API')] + end + end + end + end + end +end diff --git a/lib/docs/scrapers/socketio.rb b/lib/docs/scrapers/socketio.rb new file mode 100644 index 00000000..2863c57b --- /dev/null +++ b/lib/docs/scrapers/socketio.rb @@ -0,0 +1,20 @@ +module Docs + class Socketio < UrlScraper + self.name = 'Socket.IO' + self.slug = 'socketio' + self.type = 'socketio' + self.version = '1.2.1' + self.base_url = 'http://socket.io/docs/' + + html_filters.push 'socketio/clean_html', 'socketio/entries' + + options[:container] = '#content' + options[:trailing_slash] = false + options[:skip] = %w(faq) + + options[:attribution] = <<-HTML + © 2014 Automattic
+ Licensed under the MIT License. + HTML + end +end diff --git a/public/icons/docs/socketio/16.png b/public/icons/docs/socketio/16.png new file mode 100644 index 0000000000000000000000000000000000000000..794b6106f03b973dbe73433da651f821c32858d6 GIT binary patch literal 323 zcmV-J0lfZ+P)q&;2EnBz`vY=cLZogE zf_c8_yvW}5(=v7RyR6SPXBDlWJU*Ea>gDTUwTwl2|F4#7!aBBLKOwt zb<@LZl4i{DQ4qgkJSE%4 zd**^RP7}4HhXziYbDoHuh8K=Y>xv#Je5OPel*5W#X8gg*m>Xb--%eZN0Tb}Ngr>26|egT){ VC7A(p-DLm(002ovPDHLkV1o7#hA995 literal 0 HcmV?d00001 diff --git a/public/icons/docs/socketio/16@2x.png b/public/icons/docs/socketio/16@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..e2874eb0b2e2f77f8721139be2510dfc7b2d920e GIT binary patch literal 739 zcmV<90v!E`P)kdg00082Nkl* zRaTj!$P#NjpbX=jrh(pK5G#{}@tV7Ho z_L=uPZ@6OBs{dH>Gmp4SL<$TMW0dQd_AO_P^0Tj*6q)BmBD@f+;sGz%${7d5pxXS! z(_F`AylN{O>Lm|}R5;u?x*2@JqVeuna8cEZ?iDGJ=0ERam*6Hw_F*^i!9^K1;@#cF=*)d&vQjaex$G;8Ek8a;Nx-VQ-6kNeXr| zk6#;Q%@1uCpZB(5=R|JO1BY?Df7z_;5fOX6VzY{!A|q|=gGWgbHpe*UNRr@PvNYR9 z56h5gqYJi^AgoHB<7}m!VWK4H0O)RGD{LZRS+c;dG zVIPY-J!PC%MW#psyn(&`8Cumo2c0&~Z|)JvQ`a996CU%vbw?esY`mNagIW5y=RJJL z8Skoj!UbB0cS#Qk1Ub%B^Ze*tZG V9XUO41sMPU002ovPDHLkV1jPNWBvdD literal 0 HcmV?d00001 diff --git a/public/icons/docs/socketio/SOURCE b/public/icons/docs/socketio/SOURCE new file mode 100644 index 00000000..85fed49c --- /dev/null +++ b/public/icons/docs/socketio/SOURCE @@ -0,0 +1 @@ +http://socket.io/