From 3093104dc2e9fa2fced3e10d4114f0bc93122250 Mon Sep 17 00:00:00 2001 From: Thibaut Date: Sat, 16 Nov 2013 17:20:10 +0100 Subject: [PATCH] Add RDoc scraper and Ruby documentation --- assets/images/icons.png | Bin 9332 -> 10252 bytes assets/images/icons@2x.png | Bin 23605 -> 26439 bytes .../templates/pages/about_tmpl.coffee | 5 ++ .../templates/pages/news_tmpl.coffee | 5 +- assets/javascripts/views/pages/rdoc.coffee | 20 +++++ assets/stylesheets/application.css.scss | 1 + assets/stylesheets/global/_icons.scss | 1 + assets/stylesheets/pages/_rdoc.scss | 46 ++++++++++ lib/docs/filters/rdoc/clean_html.rb | 49 ++++++++++ lib/docs/filters/rdoc/container.rb | 26 ++++++ lib/docs/filters/rdoc/entries.rb | 38 ++++++++ lib/docs/filters/ruby/entries.rb | 52 +++++++++++ lib/docs/scrapers/rdoc/rdoc.rb | 13 +++ lib/docs/scrapers/rdoc/ruby.rb | 85 ++++++++++++++++++ public/icons/docs/ruby/16.png | Bin 0 -> 906 bytes public/icons/docs/ruby/16@2x.png | Bin 0 -> 2519 bytes public/icons/docs/ruby/SOURCE | 1 + 17 files changed, 341 insertions(+), 1 deletion(-) create mode 100644 assets/javascripts/views/pages/rdoc.coffee create mode 100644 assets/stylesheets/pages/_rdoc.scss create mode 100644 lib/docs/filters/rdoc/clean_html.rb create mode 100644 lib/docs/filters/rdoc/container.rb create mode 100644 lib/docs/filters/rdoc/entries.rb create mode 100644 lib/docs/filters/ruby/entries.rb create mode 100644 lib/docs/scrapers/rdoc/rdoc.rb create mode 100644 lib/docs/scrapers/rdoc/ruby.rb create mode 100644 public/icons/docs/ruby/16.png create mode 100644 public/icons/docs/ruby/16@2x.png create mode 100644 public/icons/docs/ruby/SOURCE diff --git a/assets/images/icons.png b/assets/images/icons.png index 9820d3409f16024a45b3b0240b51dc5839b04798..65e2a3de2eb0c625e6baae427bb06a14ebf54184 100644 GIT binary patch literal 10252 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 S3FBG-0000ZV2#5t# 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 literal 23605 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 diff --git a/assets/javascripts/templates/pages/about_tmpl.coffee b/assets/javascripts/templates/pages/about_tmpl.coffee index 58eaf1cb..ccb433d3 100644 --- a/assets/javascripts/templates/pages/about_tmpl.coffee +++ b/assets/javascripts/templates/pages/about_tmpl.coffee @@ -138,6 +138,11 @@ credits = [ '1997-2013 The PHP Documentation Group', 'CC BY', 'http://creativecommons.org/licenses/by/3.0/' + ], [ + 'Ruby', + '1993-2013 Yukihiro Matsumoto', + 'Ruby', + 'https://www.ruby-lang.org/en/about/license.txt' ], [ 'Sass', '2006-2013 Hampton Catlin, Nathan Weizenbaum, and Chris Eppstein', diff --git a/assets/javascripts/templates/pages/news_tmpl.coffee b/assets/javascripts/templates/pages/news_tmpl.coffee index 7a0f63c2..2a7a508b 100644 --- a/assets/javascripts/templates/pages/news_tmpl.coffee +++ b/assets/javascripts/templates/pages/news_tmpl.coffee @@ -24,7 +24,10 @@ newsItem = (date, news) -> result app.news = [ - [ 1382572800000, # October 24, 2013 + [ 1384560000000, # November 16, 2013 + """ New Ruby documentation """ + ], [ + 1382572800000, # October 24, 2013 """ DevDocs is now open source. """ ], [ 1381276800000, # October 9, 2013 diff --git a/assets/javascripts/views/pages/rdoc.coffee b/assets/javascripts/views/pages/rdoc.coffee new file mode 100644 index 00000000..55059d9e --- /dev/null +++ b/assets/javascripts/views/pages/rdoc.coffee @@ -0,0 +1,20 @@ +#= require views/pages/base + +class app.views.RdocPage extends app.views.BasePage + @events: + click: 'onClick' + + afterRender: -> + @highlightCode @findAll('pre.ruby'), 'ruby' + @highlightCode @findAll('pre.c'), 'clike' + return + + onClick: (event) -> + return unless event.target.classList.contains 'method-click-advice' + $.stopEvent(event) + + source = $ '.method-source-code', event.target.parentNode.parentNode + isShown = source.style.display is 'block' + + source.style.display = if isShown then 'none' else 'block' + event.target.textContent = if isShown then 'Show source' else 'Hide source' diff --git a/assets/stylesheets/application.css.scss b/assets/stylesheets/application.css.scss index ecc1e02c..f1c0641b 100644 --- a/assets/stylesheets/application.css.scss +++ b/assets/stylesheets/application.css.scss @@ -36,6 +36,7 @@ 'pages/mdn', 'pages/node', 'pages/php', + 'pages/rdoc', 'pages/rfc', 'pages/underscore', 'pages/yard'; diff --git a/assets/stylesheets/global/_icons.scss b/assets/stylesheets/global/_icons.scss index b2417253..fb6b50e5 100644 --- a/assets/stylesheets/global/_icons.scss +++ b/assets/stylesheets/global/_icons.scss @@ -39,3 +39,4 @@ ._icon-jquerymobile:before { background-position: 0 -5rem; } ._icon-lodash:before { background-position: -1rem -5rem; } ._icon-php:before { background-position: -2rem -5rem; } +._icon-ruby:before { background-position: -3rem -5rem; } diff --git a/assets/stylesheets/pages/_rdoc.scss b/assets/stylesheets/pages/_rdoc.scss new file mode 100644 index 00000000..572a28dc --- /dev/null +++ b/assets/stylesheets/pages/_rdoc.scss @@ -0,0 +1,46 @@ +._rdoc { + > .description, > .documentation-section { padding-left: 1rem; } + > .description > h2, .section-header { @extend %block-heading; } + > .description > h2, .section-header, .method-heading { margin-left: -1rem; } + .description > h1 { font-size: 1rem; } + .method-description > h2, h3, h4 { font-size: 1em; } + + .method-heading { + font-weight: bold; + @extend %block-label, %label-blue; + + + .method-heading { margin-top: -.5em; } + } + + > .meta { + @extend %note, %note-blue; + + > dd { margin: 0; } + > dd + dt { margin-top: .5em; } + } + + a.method-click-advice { + float: right; + font-size: .75rem; + color: $linkColor; + cursor: pointer; + @extend %user-select-none; + + &:hover { text-decoration: underline; } + } + + .method-description { position: relative; } + + .method-source-code { + display: none; + position: absolute; + z-index: 1; + top: 0; + left: -1em; + right: 0; + background: rgba(white, .95); + box-shadow: 0 1em 1em 1em white; + + > pre { margin: 0; } + } +} diff --git a/lib/docs/filters/rdoc/clean_html.rb b/lib/docs/filters/rdoc/clean_html.rb new file mode 100644 index 00000000..9928d31b --- /dev/null +++ b/lib/docs/filters/rdoc/clean_html.rb @@ -0,0 +1,49 @@ +module Docs + class Rdoc + class CleanHtmlFilter < Filter + def call + root_page? ? root : other + doc + end + + def root + at_css('.section-header').remove + + # Remove skipped items + css('li > span').each do |node| + node.parent.remove + end + end + + def other + css('hr').remove + + # Remove paragraph/up links + css('h1 > span', 'h2 > span', 'h3 > span', 'h4 > span').remove + + # Move id attributes to headings + css('.method-detail').each do |node| + next unless heading = node.at_css('.method-heading') + heading['id'] = node['id'] + node.remove_attribute 'id' + end + + # Convert "click to toggle source" into a link + css('.method-click-advice').each do |node| + node.name = 'a' + node.content = 'Show source' + end + + # Add class to differentiate Ruby code from C code + css('.method-source-code > pre').each do |node| + node['class'] = node.at_css('.ruby-keyword') ? 'ruby' : 'c' + end + + # Remove code highlighting + css('pre').each do |node| + node.content = node.content + end + end + end + end +end diff --git a/lib/docs/filters/rdoc/container.rb b/lib/docs/filters/rdoc/container.rb new file mode 100644 index 00000000..be7816fe --- /dev/null +++ b/lib/docs/filters/rdoc/container.rb @@ -0,0 +1,26 @@ +module Docs + class Rdoc + class ContainerFilter < Filter + def call + if root_page? + at_css '#classindex-section' + else + container = at_css '#documentation' + + # Add
mentioning parent class and included modules + meta = Nokogiri::XML::Node.new 'dl', doc + meta['class'] = 'meta' + if parent = at_css('#parent-class-section') + meta << %(
Parent:
#{parent.at_css('.link').inner_html}
) + end + if includes = at_css('#includes-section') + meta << %(
Included modules:
#{includes.css('a').map(&:to_html).join(', ')}
) + end + container.at_css('h1').after(meta) + + container + end + end + end + end +end diff --git a/lib/docs/filters/rdoc/entries.rb b/lib/docs/filters/rdoc/entries.rb new file mode 100644 index 00000000..9ba187df --- /dev/null +++ b/lib/docs/filters/rdoc/entries.rb @@ -0,0 +1,38 @@ +module Docs + class Rdoc + class EntriesFilter < Docs::EntriesFilter + def get_name + name = at_css('h1').content.strip + name.sub! 'class ', '' + name.sub! 'module ', '' + name + end + + def get_type + type = name.dup + + unless type.sub! %r{::.*\z}, '' + parent = at_css('.meta-parent').try(:content).to_s.strip + return 'Errors' if type.end_with?('Error') || parent.end_with?('Error') || parent.end_with?('Exception') + end + + type + end + + def additional_entries + return [] if root_page? + require 'cgi' + + css('.method-detail').map do |node| + name = node['id'].dup + name.sub! %r{\A\w+?\-.}, '' + name.sub! %r{\A-(?!\d)}, '' + name.gsub! '-', '%' + name = CGI.unescape(name) + name.prepend self.name + (node['id'] =~ /\A\w+-c-/ ? '::' : '#') + [name, node['id']] + end + end + end + end +end diff --git a/lib/docs/filters/ruby/entries.rb b/lib/docs/filters/ruby/entries.rb new file mode 100644 index 00000000..575330bb --- /dev/null +++ b/lib/docs/filters/ruby/entries.rb @@ -0,0 +1,52 @@ +module Docs + class Ruby + class EntriesFilter < Docs::Rdoc::EntriesFilter + REPLACE_TYPE = { + 'ACL' => 'DRb', + 'Addrinfo' => 'Socket', + 'BigMath' => 'BigDecimal', + 'CMath' => 'Math', + 'ConditionVariable' => 'Mutex', + 'DEBUGGER__' => 'Debug', + 'Errno' => 'Errors', + 'FileTest' => 'File', + 'Jacobian' => 'BigDecimal', + 'LUSolve' => 'BigDecimal', + 'Newton' => 'BigDecimal', + 'PP' => 'PrettyPrint', + 'Profiler__' => 'Profiler', + 'Psych' => 'YAML', + 'Rinda' => 'DRb', + 'SortedSet' => 'Set', + 'TCPServer' => 'Socket', + 'TempIO' => 'Tempfile', + 'ThWait' => 'Thread', + 'UNIXServer' => 'Socket' } + + REPLACE_TYPE_STARTS_WITH = { + 'Monitor' => 'Monitor', + 'Mutex' => 'Mutex', + 'Shell' => 'Shell', + 'Sync' => 'Sync', + 'Thread' => 'Thread' } + + REPLACE_TYPE_ENDS_WITH = { + 'Queue' => 'Queue', + 'Socket' => 'Socket' } + + def get_type + type = super + + REPLACE_TYPE_STARTS_WITH.each_pair do |key, value| + return value if type.start_with?(key) + end + + REPLACE_TYPE_ENDS_WITH.each_pair do |key, value| + return value if type.end_with?(key) + end + + REPLACE_TYPE[type] || type + end + end + end +end diff --git a/lib/docs/scrapers/rdoc/rdoc.rb b/lib/docs/scrapers/rdoc/rdoc.rb new file mode 100644 index 00000000..d653180b --- /dev/null +++ b/lib/docs/scrapers/rdoc/rdoc.rb @@ -0,0 +1,13 @@ +module Docs + class Rdoc < FileScraper + self.abstract = true + self.type = 'rdoc' + self.root_path = 'index.html' + + html_filters.replace 'container', 'rdoc/container' + html_filters.push 'rdoc/entries', 'rdoc/clean_html', 'title' + + options[:title] = false + options[:skip] = %w(table_of_contents.html) + end +end diff --git a/lib/docs/scrapers/rdoc/ruby.rb b/lib/docs/scrapers/rdoc/ruby.rb new file mode 100644 index 00000000..94cb1aad --- /dev/null +++ b/lib/docs/scrapers/rdoc/ruby.rb @@ -0,0 +1,85 @@ +module Docs + class Ruby < Rdoc + # Generated with: + # rdoc \ + # --format=darkfish \ + # --no-line-numbers \ + # --op=rdoc \ + # --visibility=public \ + # *.c \ + # lib/**/*.rb \ + # lib/*.rb \ + # ext/bigdecimal/*.c \ + # ext/bigdecimal/lib/*.rb \ + # ext/bigdecimal/lib/**/*.rb \ + # ext/date/*.c \ + # ext/date/lib/*.rb \ + # ext/date/lib/**/*.rb \ + # ext/digest/*.c \ + # ext/digest/**/*.c \ + # ext/digest/**/*.rb \ + # ext/json/lib/**/*.rb \ + # ext/pathname/*.c \ + # ext/pathname/lib/*.rb \ + # ext/psych/*.c \ + # ext/psych/lib/*.rb \ + # ext/psych/lib/**/*.rb \ + # ext/readline/*.c \ + # ext/ripper/*.c \ + # ext/ripper/lib/*.rb \ + # ext/ripper/lib/**/*.rb \ + # ext/socket/*.c \ + # ext/socket/lib/*.rb \ + # ext/socket/lib/**/*.rb \ + # ext/stringio/*.c \ + # ext/zlib/*.c + + self.version = '2.0.0' + self.dir = '/Users/Thibaut/DevDocs/Docs/RDoc/Ruby' + + html_filters.replace 'rdoc/entries', 'ruby/entries' + + options[:root_title] = 'Ruby Programming Language' + + options[:skip] += %w( + fatal.html + unknown.html + Data.html + E2MM.html + English.html + Exception2MessageMapper.html + GServer.html + MakeMakefile.html + ParallelEach.html + Requirement.html + YAML/DBM.html) + + options[:skip_patterns] = [ + /\AComplex/, + /\AGem/, + /\AHttpServer/, + /\AIRB/, + /\AMiniTest/i, + /\ANQXML/, + /\AOpenSSL/, + /\APride/, + /\ARacc/, + /\ARake/, + /\ARbConfig/, + /\ARDoc/, + /\AREXML/, + /\ARSS/, + /\ATest/, + /\AWEBrick/, + /\AXML/, + /\AXMP/ + ] + + options[:attribution] = <<-HTML + Ruby Core © 1993–2013 Yukihiro Matsumoto
+ Licensed under the Ruby License.
+ Ruby Standard Library © contributors
+ Licensed under their own licenses. + HTML + end +end diff --git a/public/icons/docs/ruby/16.png b/public/icons/docs/ruby/16.png new file mode 100644 index 0000000000000000000000000000000000000000..ec47283ad74bff0a46b72c12f9faceb9b32539fd GIT binary patch literal 906 zcmV;519kj~P) zO=uit7zgnG^StlO&L-Pk@?kKcX=}u!6)mj?MeE6^sF12?ZBP)ZAfg8^y?78J3LZR& z3KjgiRjCCp1rIq`Edfoyim_b~+i04vZ8p1;+1c6MnR(y$@gRb~`;YKH0wDqk07$rX zVD0o95A~JGv;N^Dlifz6w|VA6*N$Sl=_szVcj0fp^pXBAe{3M&PfD*!#g5bnl(U`nTtiRsv|n_YZn`paDSU=9uQ@tca8^&mRA@v$S|J zu5UvJu*HH;y4|JWMosQ`<`Gj{yeLtaFcVZ?YGz18h=@c)h8LzE{IdPq;!I+V)gF@u z*mpo_;1&!VIfV4jtH@HZ*Tb$^x2ljsmi62J?$XlBFPz<7{^ijG#%Q0lSb^1yPGm7~ z?6B-^?VzzzCo1}?Vx1(y*o2>`9{`!&UVCkO{=(}~uWi_44JROvk+&@RCl6uosaIU} zt8?htloBV>%monQLgtovVSZuk+Qsi*tu;btJZ9$v;xV$Wh4c;J?l(`PJX(?@Pmwu+ z5m1*Ii4cmZ3H4a@(o28D?Wu-?8+6R<0eNf?436O7@yFnPoky#-#r>6nG@4xyF`NLU z+`_Xi*2ClD4^LLKgl&beV~})!1NR-p#GO;<{j`9UMgyK-Aj(pgv4VwyVZvaZ!UDUx zP$_%2Klv=R&z+UOTv;Y&pO;ZKsD1t!<-Hbh!3V`X5+^XM#SoJs2c-xks!1D99lJd8 z*84}JjT_c0mk6ZfyXRg+C#-W&@*NvPJ_#8ix5_?1qyXb49P^OVr*!qlrE=K!4#w`8 zqO7*TH-7%zb;AZBU}|MXVG_vA^%zzw zBFVvEI1qQis0d-dFlypt$5|qU&Ty%}trc@UHW**sh+RNTQQHXEAr-)YKtkBh3L~CI zpYO>&t+1TM9N9cI1xnP(e!b80^#jeG;XKM&7!1k@M5MH)5#`a4uPG=fD*B2mf#!pi zJ;Vi7zmlh4=$k$D-ku>}dY*k;r&&pn+p(--VJ~Jzv`Z4!UEX$S+EO{Sf*v>T8X8EZ gZXIb}Tdl7A15CodrGbE*p#T5?07*qoM6N<$f^`DE2LJ#7 literal 0 HcmV?d00001 diff --git a/public/icons/docs/ruby/16@2x.png b/public/icons/docs/ruby/16@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..ab1e494521d112f7dc3f0fe269373eeefc49b9c3 GIT binary patch literal 2519 zcmV;|2`Ki7P)kJ{&C zWuLYGJbSH`eU9)`;_kx!{VIF*?#zx^2frw`=rQ{OjR zTFIW&hE@>9xHMC`nDsyzDgwW|-@|EuMTFMW{S!cOV- zMVc)({>sgSw_nT3cfLjW>_Ju!AEw_Q(DTdyq4dB=wH$}=jghzR{DXyslk)${AAK~O ztJ>W+f&K33FMR$(XZ~UTFX*usifUM5ZWba$hcJLkzi=;pH1%0$HU*WgP*^*Jao^W6fx9=6$NE>N>|2Fyj0E7D8ewM*#FIgwKHlv8Ry1U>24ge_=HebS~U;n6Fy8Hd1Gu<8^ee!!= zCt{3&LZAQ%jy3TRlMllG-u7F9?Aw1%{<8-^{;{tgeei*6msb~3V`GSJsN1?&Kmi9- z@nK@}-S6_|#gnZ3&6jktd!m?bc)fIHF;}$*Q=~@7g5xOe^YMSQ{cPp3XMY~PdgMJn zxcLJQ%{}qmo#R;NI1!>HLjVJk!+L^%=ZwZk*meo?5B&v$mtLe!BI>lS+}s+!v@jek zCTV3sD@PD8q%B;4&(5mM&YHWw@4!cHeE8IN9-pb3xP`dI1J@uaN;qAHr5C*;3hHFw{A=#IT#dH%t_+-@CPlbfS} ztcUZ4yeJe~%3OZi?_g!0(_jBv!ln&aN|-x2JK%_UK4m&SLLp~q7iNDKS+88g&+_IM z@4x4-p8M)ox7RJp1roA5Dqs%Ec?1kl2UMwsM(eWeY`N)XfBrMKlY&YrD=Zt?9COFb zardwpZ!2kVBDRn!^&-H&*;xR8_0g~0{@fSun;H5bw_*q>8v-cc7f9DJfe@5&H*@vp zK25p2;`7fRBW`M(JAk<(*`4gTfo8}FQO8=FQ$R$M9TS^Z6Ew4-n{pd{P44Pjpq_YC!=Hsz6l?M7Dr{;wIGI8NwHVe@?~J5kV3B_WbC9y5XiS(FTzz|<%aa2zUy zZUkt~yvZ+~nW5S1BW9c)3>j4kQAJf4^b#=(@4E9&cI@PNhBzzx&!*Xia~`WoB$(U19i_wLQF?tes|y8ZV;a{{EOcMrerv;6a#(0V~2lF7L0#rAHo|m|k9H+vmPa_wu(eKJp{mR*w9gZ{6t| zf9}2B*t(VK$jkg-b{{>-J|zu{6SbuH_EQ^ix^ zP9aFZ6%Yd=rlRD8Y9US(#~r|N#oI+BL|LH^u}*p7_^EkL{^6(PouBxKmW%WFppT6P z*tn!n_mkg!#*$f#BDfDkcM`Ju?G#jI;X8HJ{N(_=cBMyQCg5tQS)}SRq4>2To!(CeD;$cm` zUOfV}8!;*!jY|MJH_n^J2vtgQ>X{?%C+A2f=E!H)d}fZ-S5DrkZhW1h~%yWQPmht4vNT47sS? zpvs1r`$|6vf;ejrKmr880Y^!!aj7etRnZ_68i+x7Q;2M!;7~arV+hX3oklFy4$xBh zPcddjxSJpg{mP5lF?Xqx+qgDG9CyPp3@`v3J1=h`Y(<$2ipD?@geZX`DnW%Ep}~e` z!PEU!dX+K6@n&2GhzXu(2shP27FF#FEDURJ)>&#ayJ`a*f5YsZ?4TlSk#H`&85LEb z8G;u; z{@0UBC4c~YY3tN4He-0eRd&^?m>C<+^u5(=il|e2O(s)|lQrTRFcA!=7DwHO?p}lR zRD5ji0})2