From 0efa4c349e945c8fd9bcefc8a04b211dc0fa099f Mon Sep 17 00:00:00 2001 From: Thibaut Courouble Date: Sun, 28 Feb 2016 10:45:49 -0500 Subject: [PATCH] Finish CodeIgniter scraper --- assets/images/icons.png | Bin 38682 -> 39035 bytes assets/images/icons@2x.png | Bin 102080 -> 102867 bytes assets/javascripts/news.json | 3 ++ .../templates/pages/about_tmpl.coffee | 5 +++ .../views/pages/codeigniter.coffee | 6 --- assets/javascripts/views/pages/sphinx.coffee | 1 + assets/stylesheets/application-dark.css.scss | 1 - assets/stylesheets/application.css.scss | 1 - assets/stylesheets/global/_icons.scss | 1 + assets/stylesheets/pages/_codeigniter.scss | 6 --- assets/stylesheets/pages/_sphinx.scss | 5 ++- lib/docs/filters/codeigniter/clean_html.rb | 14 +++++-- lib/docs/filters/codeigniter/entries.rb | 39 ++++++++++-------- lib/docs/scrapers/codeigniter.rb | 31 ++++++++------ public/icons/docs/codeigniter/16.png | Bin 882 -> 428 bytes public/icons/docs/codeigniter/16@2.png | Bin 1679 -> 0 bytes public/icons/docs/codeigniter/16@2x.png | Bin 0 -> 831 bytes 17 files changed, 64 insertions(+), 49 deletions(-) delete mode 100644 assets/javascripts/views/pages/codeigniter.coffee delete mode 100644 assets/stylesheets/pages/_codeigniter.scss delete mode 100644 public/icons/docs/codeigniter/16@2.png create mode 100644 public/icons/docs/codeigniter/16@2x.png diff --git a/assets/images/icons.png b/assets/images/icons.png index d40465a136c978ebb9184700493bbc803bcab8f1..e7a734d8ecc4b9ba3391e7e2ab1d8c0337e4f9f6 100644 GIT binary patch delta 9351 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 KMNUMnLSTZ2TX^&U diff --git a/assets/images/icons@2x.png b/assets/images/icons@2x.png index d9608bac4c3b2a87eac345a7e884ee3607e4c03b..ef9ead261ecba62c1242649ec9423c493755bf06 100644 GIT binary patch delta 6794 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 delta 6001 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" + ], [ "2016-02-15", "New documentations: CakePHP, Chef and Ramda" ], [ diff --git a/assets/javascripts/templates/pages/about_tmpl.coffee b/assets/javascripts/templates/pages/about_tmpl.coffee index ada7e612..16b27f0c 100644 --- a/assets/javascripts/templates/pages/about_tmpl.coffee +++ b/assets/javascripts/templates/pages/about_tmpl.coffee @@ -119,6 +119,11 @@ credits = [ 'Rich Hickey', 'EPL', 'https://github.com/clojure/clojure/blob/master/epl-v10.html' + ], [ + 'CodeIgniter', + '2014-2016 British Columbia Institute of Technology', + 'MIT', + 'https://raw.githubusercontent.com/bcit-ci/CodeIgniter/develop/license.txt' ], [ 'CoffeeScript', '2009-2015 Jeremy Ashkenas', diff --git a/assets/javascripts/views/pages/codeigniter.coffee b/assets/javascripts/views/pages/codeigniter.coffee deleted file mode 100644 index 606ecae4..00000000 --- a/assets/javascripts/views/pages/codeigniter.coffee +++ /dev/null @@ -1,6 +0,0 @@ -#= require views/pages/base - -class app.views.CodeigniterPage extends app.views.BasePage - prepare: -> - @highlightCode @findAllByTag('pre'), 'php' - return diff --git a/assets/javascripts/views/pages/sphinx.coffee b/assets/javascripts/views/pages/sphinx.coffee index 94aa51d7..faecdd71 100644 --- a/assets/javascripts/views/pages/sphinx.coffee +++ b/assets/javascripts/views/pages/sphinx.coffee @@ -4,4 +4,5 @@ class app.views.SphinxPage extends app.views.BasePage prepare: -> @highlightCode @findAll('pre.python'), 'python' @highlightCode @findAll('pre.markup'), 'markup' + @highlightCode @findAll('pre.php'), 'php' return diff --git a/assets/stylesheets/application-dark.css.scss b/assets/stylesheets/application-dark.css.scss index 2ba96e28..6e9a310f 100644 --- a/assets/stylesheets/application-dark.css.scss +++ b/assets/stylesheets/application-dark.css.scss @@ -36,7 +36,6 @@ 'pages/cakephp', 'pages/chai', 'pages/clojure', - 'pages/codeigniter', 'pages/coffeescript', 'pages/d3', 'pages/dojo', diff --git a/assets/stylesheets/application.css.scss b/assets/stylesheets/application.css.scss index d3bf5c58..35e24aac 100644 --- a/assets/stylesheets/application.css.scss +++ b/assets/stylesheets/application.css.scss @@ -36,7 +36,6 @@ 'pages/cakephp', 'pages/chai', 'pages/clojure', - 'pages/codeigniter', 'pages/coffeescript', 'pages/d3', 'pages/dojo', diff --git a/assets/stylesheets/global/_icons.scss b/assets/stylesheets/global/_icons.scss index ad8675b5..e049947a 100644 --- a/assets/stylesheets/global/_icons.scss +++ b/assets/stylesheets/global/_icons.scss @@ -126,3 +126,4 @@ ._icon-erlang:before { background-position: -1rem -10rem; } ._icon-chef:before { background-position: -2rem -10rem; } ._icon-ramda:before { background-position: -3rem -10rem; @extend %darkIconFix !optional; } +._icon-codeigniter:before { background-position: -4rem -10rem; @extend %darkIconFix !optional; } diff --git a/assets/stylesheets/pages/_codeigniter.scss b/assets/stylesheets/pages/_codeigniter.scss deleted file mode 100644 index 5cda3059..00000000 --- a/assets/stylesheets/pages/_codeigniter.scss +++ /dev/null @@ -1,6 +0,0 @@ -._codeigniter { - @extend %sphinx; - - .important { @extend %note-orange; } - .warning { @extend %note-red; } -} diff --git a/assets/stylesheets/pages/_sphinx.scss b/assets/stylesheets/pages/_sphinx.scss index 35351cf1..bb4293e2 100644 --- a/assets/stylesheets/pages/_sphinx.scss +++ b/assets/stylesheets/pages/_sphinx.scss @@ -4,7 +4,8 @@ dt + dt { margin-top: -.5em; } .note, .admonition, .versionadded, .versionchanged, .deprecated-removed { @extend %note; } - .deprecated-removed { @extend %note-red; } + .important { @extend %note-orange; } + .warning, .deprecated-removed { @extend %note-red; } .versionmodified { font-weight: bold; } p > code, li > code { @extend %label; } @@ -26,5 +27,5 @@ } ._sphinx { - @extend %sphinx + @extend %sphinx; } diff --git a/lib/docs/filters/codeigniter/clean_html.rb b/lib/docs/filters/codeigniter/clean_html.rb index 6571f249..9b2da1e8 100644 --- a/lib/docs/filters/codeigniter/clean_html.rb +++ b/lib/docs/filters/codeigniter/clean_html.rb @@ -8,16 +8,22 @@ module Docs node.content = node.content end + css('div[class^="highlight-"]').each do |node| + node.content = node.content.strip + node.name = 'pre' + node['class'] = 'php' if node['class'].include?('highlight-ci') + end + css('table').each do |node| node.remove_attribute 'border' end - css('.section > h2', '.section > h3', '.section > h4', '.section > h5').each do |node| - node['id'] = node.parent['id'] - node.parent.remove_attribute 'id' + css('.section').each do |node| + node.first_element_child['id'] = node['id'] if node['id'] + node.before(node.children).remove end - doc.children + doc end end end diff --git a/lib/docs/filters/codeigniter/entries.rb b/lib/docs/filters/codeigniter/entries.rb index 06e7dfa0..1f3f1ace 100644 --- a/lib/docs/filters/codeigniter/entries.rb +++ b/lib/docs/filters/codeigniter/entries.rb @@ -1,38 +1,43 @@ module Docs class Codeigniter class EntriesFilter < Docs::EntriesFilter - def include_default_entry? - not slug.ends_with? 'index' - end - def get_name at_css('h1').content.strip end def get_type - slug.split('/')[0].capitalize + type = slug.split('/').first.capitalize + + if type.in? %w(Tutorial Installation Overview General) + type.prepend 'User guide: ' + elsif type.in? %w(Libraries Helpers) + type = name.remove %r{\ (?:Helper|Class|Classes|Library|Driver)\z} + end + + type end def additional_entries entries = [] - css('.class').each do |c_node| - c_name = c_node.at_css('dt > .descname').content - c_id = c_node.at_css('dt')['id'] - entries << [c_name, c_id, get_type] + css('.class').each do |node| + class_name = node.at_css('dt > .descname').content + class_id = node.at_css('dt[id]')['id'] + entries << [class_name, class_id] - c_node.css('.method').each do |node| - m_name = node.at_css('.descname').content - name = c_name + '::' + m_name + '()' - id = node.at_css('dt')['id'] - entries << [name, id, get_type] + node.css('.method').each do |n| + name = n.at_css('.descname').content + name = "#{class_name}::#{name}()" + id = node.at_css('dt[id]')['id'] + entries << [name, id] end end css('.function').each do |node| - name = node.at_css('.descname').content + '()' - id = node.at_css('dt')['id'] - entries << [name, id, get_type] + name = "#{node.at_css('.descname').content}()" + id = node.at_css('dt[id]')['id'] + type = self.type.start_with?('User guide') ? 'Functions' : self.type + entries << [name, id, type] end entries diff --git a/lib/docs/scrapers/codeigniter.rb b/lib/docs/scrapers/codeigniter.rb index 9b8670f4..62b44a01 100644 --- a/lib/docs/scrapers/codeigniter.rb +++ b/lib/docs/scrapers/codeigniter.rb @@ -1,12 +1,11 @@ module Docs class Codeigniter < UrlScraper self.name = 'CodeIgniter' - self.type = 'codeigniter' - self.release = '3.0' - self.base_url = 'http://www.codeigniter.com/user_guide/' + self.type = 'sphinx' + self.base_url = 'https://www.codeigniter.com/user_guide/' self.root_path = 'index.html' self.links = { - home: 'http://codeigniter.com/', + home: 'https://codeigniter.com/', code: 'https://github.com/bcit-ci/CodeIgniter' } @@ -14,22 +13,30 @@ module Docs options[:container] = '.document' - options[:only_patterns] = [ - /\Ageneral/, - /\Alibraries/, - /\Adatabase/, - /\Ahelpers/ - ] - options[:skip] = %w( + license.html + changelog.html + DCO.html general/welcome.html general/requirements.html general/credits.html + libraries/index.html + helpers/index.html ) + options[:skip_patterns] = [ + /\Acontributing/, + /\Adocumentation/, + /\Ainstallation\/upgrade/ + ] + options[:attribution] = <<-HTML - © British Columbia Institute of Technology
+ © 2014–2016 British Columbia Institute of Technology
Licensed under the MIT License. HTML + + version '3.0' do + self.release = '3.0.4' + end end end diff --git a/public/icons/docs/codeigniter/16.png b/public/icons/docs/codeigniter/16.png index a49b9f021090638c155df64e57c3fb55784f9751..2a63e97fbe4b352fb40424a5e14d6a17557b7581 100644 GIT binary patch literal 428 zcmV;d0aN~oP)Du>Uaq#LT6v$XTzG%H7dV9q`7qW< zG0Um65W))EZUxG1UA}l^leVPbDk1#QN=z(E{B%sCCK}`W1J3!aUFmVxSAD;(Osc0mJ;-cl?05l=lfel)&2N~4%# z5Du_ePBD#!o`hghB44rXMQr|>jd)HL~&K6f(GHqwXe76=72x z4}H;{BgZ)3av8jefolTgHnh=I>WTkzoGJ#rlX(d5^!3+#Ov4t09)^mS#w&%+_Eu4WhMd=n_N!PCVtgyXvHxyWe71QC`8#+^=+bUeG9QhS{i zh2H!=$wMXe-+%uPwiUCwji2w878G5R$q>mFasAc5jT={*uVHvB=6l=wz@FrX>q;4K zyx}W4zw>?2k;d8WHlHf`{T1x&B`u!bv}{)7oZRD*{3`B<>cUr_v}SruzCP)puUUEb z?&?pDazCfk*D-RrPFr%uYik(0l<&4BcPo!3-H-krTP6RO@ydV8KT@2>?oXCa`1RZT zu*{=Q`Lvn+4%|SutCqM%l%yn9nO2EgL-EA*oj?r?p00i_>zopr0FMh%k^lez diff --git a/public/icons/docs/codeigniter/16@2.png b/public/icons/docs/codeigniter/16@2.png deleted file mode 100644 index a202fc8ca62dde54abdd8e98abb48b02438179e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1679 zcmeAS@N?(olHy`uVBq!ia0vp^l0dA$!3-oXI4PR|DVB6cUq=Rpjs4tz5?Mi#$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$Ysfq`jXfKP}kP{Cafkx?`n z0z)nY{{R0!M>g^`Fa^IT3GxeOU~rkqr}eas#s1rSSH_lq>pAovzSQAg^CyU-{m;Kh zj;8OwdB4kqZhvuITL563o_1Hy6TB)`oE7p zz8_EV#r<2t#WnxDQ2YN&8Y(B=TZo*x=d5#lE<0oO?*rBlFz(Kw%+;J~1kCg#SrreSLDT;|mx%If0g{AQAFad!X2nVN2-w6w(U z5fD78q^S1q(NS(rPajUrOvwd3Yh>D5_B1I4JZha}w5z3Sm6XS$)?I9~T9!>Si+I%9 zr?;wQ-abZ`N39D5nU$6A`1c%BTNcnMp4P+jOl(?!rJHuP^o%3i(bjI&?C$CvB8xY3 z$2@9XJ$rZi^6A_8J-RMl=T~|m&!EKI+|-!jp%I{_W5c8*EGgQ1L0b6q2?25bM0FK4 zRppeRpvw}Mj1}IT(K+^JPRx#wI6G&?p4f;Z5ivnrkEc#G4mogRYN&&K*!3$;J4<=K z7BEXmH3s>f)fI@-W^T#LW*3s3>)>Bf`rV;L!Dw&oUx%VYE)$Nc`_5w$n#DD7rdjQ= zGvb@m&NH^3yi=*L@Fx#AoFVzpvzP zc5CyU9lz(srm2jYQ4-s8fkMaq+G2MDg*J<;Dt&)jU-&>lnfdX;!}@(Pu3ocxj`!`i zC=^mTQ1R+Zw{iMIH^X_>^$#DZZn)UfGktx`-ZELKgFWVX_jc8?i{0%he}A|BgTR@( zFF#IRPCtK8h~c57vAjj(6$fA(tCqM%l%ynSX5Y1W3N%z^dZKgYC+xGoE+qP}r{W{yWr<1d7qiVgm*?@;iwlVJ3QittDj9mPvXn5^1>99hC5@9W8Y6FY#Z@C#$^S}HJi+AA zAm9(+FNoN7w{qsBu_i!gDGNd9?<08-o(si4f2@#e)%|@nRo)zi9Pvxza>E!W$1rQ0 zjzdC&fIom1F;1?lWF!!MHIO5Iz*wD_Bd_o07j);}Jdh(EX*Fn$7$JYAq)H(eS!fJ< zSm>PWjFBpMQYUS4xbv|XVkC+XjE;|Xa&$My>;XXV9Z4(%^b7HbCQ^dCHEC+}il`Y4 zr|n_$_m<=U!O5avLbsYd3H)yrV7O3HrHqsSp^#z*qcMj{o(V?z{aU{McX>(%|9cWN zw%5&E`5ckos!P0ePPUtoVb*&XdjUAFbNVX$;~}RUxunkJ)>v+435Vgu?+$QOD6R~a zsC`!sE#cTMNB{Z$fk64pUerqaeg>x~}Vg4-m-v^rl zUf>aKE`XDj)*H#of*TOLBf;ecAnKew5p<5J0GM>oy5`ASqwm8BnGrX)h#umym4H9C z>YkAs#`41Y7b@wBp*C6j-Bf_d!k>W8hDc2NJ6wwYpMj}zTQdWTi~x+vVhHhW!}HvI zy@{0AlZ6XTCSk&Q+AA^w&fa4r4J2RBF#hlhFf1a!zo(?i0^@EEdp$50fG%eYJ)<3P z>|vAi$?!Y+KA;=gu6ff+7J6{eHC7SW7+sA9iZmqkdrcv=O&4K#84~DBWZ!%+84Utf zV}D_z0g;!5$@Gg4nU5z4)K9-NpNN4PjBkm(eF2TqUAfEyuFJZSQ{0DFCblF*$SJwal002ov JPDHLkV1nF)e#rm; literal 0 HcmV?d00001