From 481233050daced191d7a89c022d64988212f0518 Mon Sep 17 00:00:00 2001 From: Thibaut Courouble Date: Sun, 5 Jun 2016 18:37:37 -0400 Subject: [PATCH] Finish Padrino scraper --- assets/images/icons.png | Bin 46513 -> 46840 bytes assets/images/icons@2x.png | Bin 121388 -> 122157 bytes assets/javascripts/news.json | 2 +- .../templates/pages/about_tmpl.coffee | 5 +++ assets/javascripts/views/pages/simple.coffee | 1 + assets/stylesheets/application-dark.css.scss | 1 + assets/stylesheets/application.css.scss | 1 + assets/stylesheets/global/_icons.scss | 1 + assets/stylesheets/pages/_rubydoc.scss | 9 +++++ lib/docs/filters/padrino/clean_html.rb | 34 ++++++++++++++++-- lib/docs/filters/padrino/entries.rb | 32 +++++++---------- lib/docs/scrapers/padrino.rb | 18 ++++++---- public/icons/docs/padrino/16.png | Bin 0 -> 414 bytes public/icons/docs/padrino/16@2x.png | Bin 0 -> 861 bytes public/icons/docs/padrino/SOURCE | 1 + 15 files changed, 76 insertions(+), 29 deletions(-) create mode 100644 assets/stylesheets/pages/_rubydoc.scss create mode 100644 public/icons/docs/padrino/16.png create mode 100644 public/icons/docs/padrino/16@2x.png create mode 100644 public/icons/docs/padrino/SOURCE diff --git a/assets/images/icons.png b/assets/images/icons.png index 7200cecacef42a36c46b1efb4ea0e1efe5275985..6158f619b3a017f7ca72a96d156fd8a38173c100 100644 GIT binary patch delta 7692 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 delta 12251 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 pf}16q4F!1~s@5SAr#R&q@*mKaVmsKotlin" + "New documentation: Kotlin and Padrino" ], [ "2016-04-24", "New documentations: NumPy and Apache Pig" diff --git a/assets/javascripts/templates/pages/about_tmpl.coffee b/assets/javascripts/templates/pages/about_tmpl.coffee index ad0bffbb..68bca363 100644 --- a/assets/javascripts/templates/pages/about_tmpl.coffee +++ b/assets/javascripts/templates/pages/about_tmpl.coffee @@ -350,6 +350,11 @@ credits = [ '2010-2016 The OpenTSDB Authors', 'LGPLv2.1', 'https://raw.githubusercontent.com/OpenTSDB/opentsdb.net/gh-pages/COPYING.LESSER' + ], [ + 'Padrino', + '2010-2016 Padrino', + 'MIT', + 'https://raw.githubusercontent.com/padrino/padrino-framework/master/padrino/LICENSE.txt' ], [ 'Perl', '1993-2016 Larry Wall and others', diff --git a/assets/javascripts/views/pages/simple.coffee b/assets/javascripts/views/pages/simple.coffee index 5a7cfab0..1758263f 100644 --- a/assets/javascripts/views/pages/simple.coffee +++ b/assets/javascripts/views/pages/simple.coffee @@ -29,6 +29,7 @@ app.views.PostgresPage = app.views.RamdaPage = app.views.ReactPage = app.views.RethinkdbPage = +app.views.RubydocPage = app.views.SinonPage = app.views.SocketioPage = app.views.SphinxSimplePage = diff --git a/assets/stylesheets/application-dark.css.scss b/assets/stylesheets/application-dark.css.scss index ba74373a..46ba6202 100644 --- a/assets/stylesheets/application-dark.css.scss +++ b/assets/stylesheets/application-dark.css.scss @@ -73,6 +73,7 @@ 'pages/requirejs', 'pages/rethinkdb', 'pages/rfc', + 'pages/rubydoc', 'pages/rust', 'pages/socketio', 'pages/sphinx', diff --git a/assets/stylesheets/application.css.scss b/assets/stylesheets/application.css.scss index 9044dac9..d06c1120 100644 --- a/assets/stylesheets/application.css.scss +++ b/assets/stylesheets/application.css.scss @@ -73,6 +73,7 @@ 'pages/requirejs', 'pages/rethinkdb', 'pages/rfc', + 'pages/rubydoc', 'pages/rust', 'pages/socketio', 'pages/sphinx', diff --git a/assets/stylesheets/global/_icons.scss b/assets/stylesheets/global/_icons.scss index 2a229a24..ee4ffa9e 100644 --- a/assets/stylesheets/global/_icons.scss +++ b/assets/stylesheets/global/_icons.scss @@ -140,3 +140,4 @@ ._icon-apache_pig:before { background-position: -4rem -11rem; } ._icon-numpy:before { background-position: -5rem -11rem; } ._icon-kotlin:before { background-position: -6rem -11rem; } +._icon-padrino:before { background-position: -7rem -11rem; } diff --git a/assets/stylesheets/pages/_rubydoc.scss b/assets/stylesheets/pages/_rubydoc.scss new file mode 100644 index 00000000..c28d0815 --- /dev/null +++ b/assets/stylesheets/pages/_rubydoc.scss @@ -0,0 +1,9 @@ +._rubydoc { + @extend %simple; + + p.note { @extend %note; } + span.note { @extend %label; } + span.note.private { @extend %label-red; } + + h4 + ul { margin-top: 1em; } +} diff --git a/lib/docs/filters/padrino/clean_html.rb b/lib/docs/filters/padrino/clean_html.rb index eb0751c6..21dcb421 100644 --- a/lib/docs/filters/padrino/clean_html.rb +++ b/lib/docs/filters/padrino/clean_html.rb @@ -2,9 +2,37 @@ module Docs class Padrino class CleanHtmlFilter < Filter def call - css('.summary_toggle').remove - css('.inheritanceTree').remove - at_css('#content') + css('.summary_toggle', '.inheritanceTree', 'h1 .note', '.source_code', '.box_info dl:last-child').remove + css('a[href*="travis"]', 'a[href*="gemnasium"]', 'a[href*="codeclimate"]', 'a[href*="gitter"]').remove if root_page? + + css('.signature').each do |node| + node.name = 'h3' + end + + css('.permalink', 'div.docstring', 'div.discussion', '.method_details_list', '.attr_details', + 'h3 strong', 'h3 a', 'h3 tt', 'h3 span', 'div.inline p', 'div.inline').each do |node| + node.before(node.children).remove + end + + css('.tag_title').each do |node| + node.name = 'h4' + end + + css('span.summary_signature', 'tt', '.tags span.name').each do |node| + node.name = 'code' + node.inner_html = node.inner_html.strip + end + + css('code > a').each do |node| + node.inner_html = node.inner_html.strip + end + + css('pre.code').each do |node| + node.content = node.content + node['data-language'] = 'ruby' + end + + doc end end end diff --git a/lib/docs/filters/padrino/entries.rb b/lib/docs/filters/padrino/entries.rb index 4d33b926..62e89026 100644 --- a/lib/docs/filters/padrino/entries.rb +++ b/lib/docs/filters/padrino/entries.rb @@ -2,34 +2,28 @@ module Docs class Padrino class EntriesFilter < Docs::EntriesFilter def get_name - name = at_css('h1, h2').content - name.remove! 'Class: ' - name.remove! 'Module: ' + at_css('h1').content.split(' ').last end def get_type - type = name.dup - type.remove! %r{#.+\z} - type.split('::')[0..2].join('::') + name.split('::')[0..1].join('::') end def additional_entries - return [] if root_page? - require 'cgi' + return [] if initial_page? - css('.summary_signature').inject [] do |entries, node| - - name = node.children[1].attributes['title'].value - name = CGI.unescape(name) - - unless name.start_with?('_') - name.prepend self.name - entries << [name, self.name.gsub('::','/').downcase.strip + node.children[1].attributes['href'].value.slice(/\#.*/)] unless entries.any? { |entry| entry[0] == name } - end - - entries + css('.signature').each_with_object [] do |node, entries| + next if node.ancestors('.overload').present? + name = node.content.strip + name.remove! %r{[\s\(].*} + name.prepend(self.name) + entries << [name, node['id']] end end + + def include_default_entry? + !initial_page? + end end end end diff --git a/lib/docs/scrapers/padrino.rb b/lib/docs/scrapers/padrino.rb index 49cbcbd7..def8160e 100644 --- a/lib/docs/scrapers/padrino.rb +++ b/lib/docs/scrapers/padrino.rb @@ -1,11 +1,11 @@ module Docs class Padrino < UrlScraper - self.name = 'padrino' self.slug = 'padrino' - self.type = 'ruby' - self.version = 'master' + self.type = 'rubydoc' self.release = '0.13.2' - self.base_url = 'http://www.rubydoc.info/github/padrino/padrino-framework' + self.base_url = 'http://www.rubydoc.info/github/padrino/padrino-framework/' + self.root_path = 'file/README.rdoc' + self.initial_paths = %w(index2) self.links = { home: 'http://padrinorb.com/', code: 'https://github.com/padrino/padrino-framework' @@ -13,9 +13,15 @@ module Docs html_filters.push 'padrino/clean_html', 'padrino/entries' + options[:container] = ->(filter) { filter.root_page? ? '#filecontents' : '#content' } + options[:attribution] = <<-HTML - © Padrino contributors
- Licensed under the Creative Commons Attribution License. + © 2010–2016 Padrino
+ Licensed under the MIT License. HTML + + stub 'index2' do + request_one(url_for('index')).body + end end end diff --git a/public/icons/docs/padrino/16.png b/public/icons/docs/padrino/16.png new file mode 100644 index 0000000000000000000000000000000000000000..d3e830c1880a20d74d2d00a267bc9395c8a7820d GIT binary patch literal 414 zcmV;P0b%}$P)(VTJ^&RmvhfKTrT~qMA#wo(dPI>PvmRyn91yx_1QfuGleAt zg_Xr!U-ZgimP%~M90sq~i%=+pcs#z!<#Lm3Han4Jc@+!>;qiFj_K4o0n5BJIWk{t` zP*oMpW)t0R7nWr~*LAd7E!;I4D3!}dB$J;@s_R*iBc{b-F=(0w$8oS&EHIzXVHgI6 zqY+*Q13cDhxQIrvNA$3s`IZybPN&o8^?Fz?mzd3F9}7$q&-FUYa2Pt#Q;jG|8*;{8 z6h*;!Jce!CFnPG$>EJSx0l(P*(K-E)9Dk%$C=@WAPS<~s&*!njwNs)i+9F4iWIEVyJ!&0RR9107*qo IM6N<$f*6aulmGw# literal 0 HcmV?d00001 diff --git a/public/icons/docs/padrino/16@2x.png b/public/icons/docs/padrino/16@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..06919b0253e8b38016ec5584bfc9caa3094131f0 GIT binary patch literal 861 zcmV-j1ETziP)%RTkl?H^gp)sBEE=1X1-rprS(M( zX-EsnNn{ZjOFFBuj#?*4?KbFgl1-Ay5%LbXj%*_{$w<A@Zp#=X%behT!}N!JQI&R@(6zV=_h>k)mOOh zzWZ?6X{TY?vSpY!aiYYwGLUNWqr+P?j~pgYaAue{Zyt8+*nw-Vxdt!4{4)Of>n{WZ z1Rx_L1Nr&+C@wCB$z(!iW+vj}-91K`+J>EC#0pNAv!u5 z?(Xh*>#esiXU?3u<{{$Mj7}h_D)`b%FGXx@te99V7By={-2v3cJ`jTe(agQ@;*0B= zr;0}_x|G-mMvNFC`)jpYm1&y>pbrXy(a8xP-Ejvtv&Kf&TF%ZGp=pNu^PnoPb|?YVmOYWVs2p{%T|xdF)ao;`c8Y3Wk@%A6cR z^FMUbZXMHHa)`jr@y8#J#Kc6k5_Jb4r{CM#8{4*Rli2%7jHbDz$$y}8T0?@>ATGcB za(g?~fjWnM1tB&K^ciF{Z8?c$-5rXTyl^=;I%yK nVXYw{f?W5GwhBWUQh(O}J*k~k6TsxD00000NkvXXu0mjf!}qD0 literal 0 HcmV?d00001 diff --git a/public/icons/docs/padrino/SOURCE b/public/icons/docs/padrino/SOURCE new file mode 100644 index 00000000..36975af8 --- /dev/null +++ b/public/icons/docs/padrino/SOURCE @@ -0,0 +1 @@ +https://raw.githubusercontent.com/padrino/padrino-web/master/source/images/favicon.ico