From e3582e267e24372fecd8eb9d4ba7b7d0feaa8afe Mon Sep 17 00:00:00 2001 From: Thibaut Courouble Date: Sun, 19 Jun 2016 16:44:09 -0400 Subject: [PATCH] Finish LOVE scraper --- assets/images/icons.png | Bin 47526 -> 47974 bytes assets/images/icons@2x.png | Bin 123407 -> 124468 bytes assets/javascripts/news.json | 5 +- .../templates/pages/about_tmpl.coffee | 5 + assets/stylesheets/global/_icons.scss | 1 + assets/stylesheets/pages/_love.scss | 68 ++--------- lib/docs/filters/core/internal_urls.rb | 1 + lib/docs/filters/love/clean_html.rb | 107 ++++++------------ lib/docs/filters/love/entries.rb | 60 +++++++--- lib/docs/scrapers/love.rb | 90 +++------------ public/icons/docs/love/16.png | Bin 1434 -> 919 bytes public/icons/docs/love/16@2x.png | Bin 2713 -> 1903 bytes 12 files changed, 121 insertions(+), 216 deletions(-) diff --git a/assets/images/icons.png b/assets/images/icons.png index 65c1434f3a2a73eb8afd17679aaccd3815ab5294..9fb36db8da26f0119ae61dd083e3e9a306589243 100644 GIT binary patch delta 8835 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 FV1io5CpiEB delta 8384 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 diff --git a/assets/javascripts/news.json b/assets/javascripts/news.json index f9bfb7a0..94362be7 100644 --- a/assets/javascripts/news.json +++ b/assets/javascripts/news.json @@ -1,10 +1,13 @@ [ [ + "2016-06-19", + "New documentation: LÖVE" + ], [ "2016-06-12", "New documentation: Angular 2" ], [ "2016-06-05", - "New documentation: Kotlin and Padrino" + "New documentations: 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 41cf444e..f26a612b 100644 --- a/assets/javascripts/templates/pages/about_tmpl.coffee +++ b/assets/javascripts/templates/pages/about_tmpl.coffee @@ -275,6 +275,11 @@ credits = [ '1994–2015 Lua.org, PUC-Rio', 'MIT', 'http://www.lua.org/license.html' + ], [ + 'LÖVE', + '2006-2016 LÖVE Development Team', + 'GFDL', + 'http://www.gnu.org/copyleft/fdl.html' ], [ 'Marionette.js', '2016 Muted Solutions, LLC', diff --git a/assets/stylesheets/global/_icons.scss b/assets/stylesheets/global/_icons.scss index 6ae64ec9..09dd8094 100644 --- a/assets/stylesheets/global/_icons.scss +++ b/assets/stylesheets/global/_icons.scss @@ -142,3 +142,4 @@ ._icon-kotlin:before { background-position: -6rem -11rem; } ._icon-padrino:before { background-position: -7rem -11rem; } ._icon-angular:before { background-position: -8rem -11rem; } +._icon-love:before { background-position: -9rem -11rem; } diff --git a/assets/stylesheets/pages/_love.scss b/assets/stylesheets/pages/_love.scss index e7993815..a1908523 100644 --- a/assets/stylesheets/pages/_love.scss +++ b/assets/stylesheets/pages/_love.scss @@ -1,67 +1,17 @@ ._love { - padding-left: 1rem; + @extend %simple; - h1, h2 { margin-left: -1rem; } - h2 { @extend %block-heading; } - h3 { margin-left: -0.5rem; @extend %block-label; } - - ._mobile & { - padding-left: 0; - - h1, h2, h3 { margin-left: 0; } - } - - p > code, li > code { @extend %label; } - blockquote { @extend %note; } - - .box { @extend %box; } .note { @extend %note; } - .label { @extend %label; } + .note-green { @extend %note-green; } + .note-red { @extend %note-red; } - .box-heading { - @extend %heading-box; - padding: .5em .75em; - margin-top: 1.5rem; - margin-bottom: 0px; - border-bottom: none; - border-bottom-left-radius: 0px; - border-bottom-right-radius: 0px; - } - .box-with-heading { - @extend %box; - padding: .5em .75em; - margin-top: 0px; - margin-bottom: 1.5rem; - border-top-left-radius: 0px; - border-top-right-radius: 0px; - } + .label, dt > code { @extend %label; } + .label-green { @extend %label-green; } + .label-red { @extend %label-red; } + + .smwtable { width: 100%; } + .smwtable td:nth-last-child(2), .smwtable td:last-child { width: 2.5em; } - .note-green, .label-green { @extend %note-green; } - .note-red, .label-red { @extend %note-red; } - .note-orange, .label-orange { @extend %note-orange; } .cell-green { background: $noteGreenBackground; } .cell-red { background: $noteRedBackground; } - - .smwtable { - width: 100%; - tr { - td { - word-wrap: break-word; - } - - td:first-child, td:nth-last-child(2), td:last-child { - vertical-align: middle; - white-space: nowrap; - width: 1em; - overflow: hidden; - } - } - } - - hr { - border: none; - height: 1px; - background-color: $textColorLighter; - margin: 1.5em 0 1em; - } } diff --git a/lib/docs/filters/core/internal_urls.rb b/lib/docs/filters/core/internal_urls.rb index eb7724c3..dbedd69b 100644 --- a/lib/docs/filters/core/internal_urls.rb +++ b/lib/docs/filters/core/internal_urls.rb @@ -39,6 +39,7 @@ module Docs def to_internal_url(str) return unless (url = parse_url(str)) && (subpath = subpath_to(url)) normalize_subpath(subpath) + subpath = URI.unescape(subpath) if context[:decode_and_clean_paths] return if skip_subpath?(subpath) normalize_url(url, subpath) url diff --git a/lib/docs/filters/love/clean_html.rb b/lib/docs/filters/love/clean_html.rb index 8e83c742..0775e5a9 100644 --- a/lib/docs/filters/love/clean_html.rb +++ b/lib/docs/filters/love/clean_html.rb @@ -2,100 +2,67 @@ module Docs class Love class CleanHtmlFilter < Filter def call - # Fix syntax highlighting + @doc = at_css('#mw-content-text') + css('.mw-code').each do |node| - node.content = node.at_css("div > pre").content + node.content = node.at_css('div > pre').content node['data-language'] = 'lua' node.name = 'pre' end - # Move header tags up - css('h2', 'h3').each do |node| - headline = node.at_css('.mw-headline') - node['id'] = headline['id'] - node.content = headline.inner_text + css('span[id]').each do |node| + node.parent['id'] = node['id'] + node.before(node.children).remove end - # Move dt tags up - css('dt > span').each do |node| - node.parent.content = node.inner_text + css('table.notice').each do |node| + content = node.at_css('td:nth-child(2)').inner_html + node.replace %(

#{content}

) end - # Style notices and new/removed sections - css('.notice', '.new-section', '.removed-section', '.removed-new-section').each do |node| - case node['class'] - when 'notice' - node['class'] = 'note note-warning' - node.inner_html = node.at_css('td:nth-child(2)').inner_html - node.next.remove unless node.next.nil? or node.next.name != 'br' - when 'new-section', 'removed-section', 'removed-new-section' - node['class'] = node['class'] == 'new-section' ? 'note note-green' : 'note note-red' - node.inner_html = node.at_css('tr > td > i').inner_html \ - + '
' \ - + node.at_css('tr > td > small').inner_html - end - - node.name = 'p' - node.remove_attribute('bgcolor') - node.remove_attribute('style') - node.remove_attribute('align') + css('table.new-section', 'table.removed-section', 'table.removed-new-section').each do |node| + klass = node['class'] == 'new-section' ? 'note-green' : 'note-red' + content = node.css('td').map(&:inner_html).join('
') + node.replace %(

#{content}

) end - # Style new/removed features css('.new-feature', '.removed-feature', '.removed-new-feature').each do |node| - node.name = 'div' - node['class'] = node['class'] == 'new-feature' ? 'box-heading label-green' : 'box-heading label-red' - node.remove_attribute('style') + klass = node['class'] == 'new-feature' ? 'label-green' : 'label-red' + content = node.content.sub(' LÖVE', '') + label = %( #{content}) - container = node.next_element - container.name = 'div' - container['class'] = 'box-with-heading' - container.remove_attribute('style') + node.next_element.css('dt').each { |n| n << label } + node.remove end - # Style tables - css('table.smwtable').each do |table| - table.remove_attribute('style') - table.css('td').each do |cell| - cell.remove_attribute('style') - end - table.css('td:last-child', 'td:nth-last-child(2)').each do |cell| - img = cell.at_css('img') - if img then - if img['alt'] == 'Added since' then - cell['class'] = 'cell-green' - elsif img['alt'] == 'Removed in' - cell['class'] = 'cell-red' - end - img.remove - end - end + css('img[src$="Add.png"]').each do |node| + node.parent['class'] = 'cell-green' + node.remove end - # Remove Other Languages - css('#Other_Languages').remove - css('.i18n').remove + css('img[src$="Remove.png"]').each do |node| + node.parent['class'] = 'cell-red' + node.remove + end - # Remove changelog - node = at_css('h2#Changelog') - if !node.nil? then - begin - nxt = node.next - node.remove - node = nxt - end while !node.nil? and node.name != 'h2' + css('table, tr, td, th').each do |node| + %w(style cellpadding cellspacing width height valign).each do |attribute| + node.remove_attribute(attribute) + end end - # Remove empty paragraphs - css('p').each do |node| - node.remove if node.inner_text.strip == '' + css('.note i', '.note small', 'div:not([class])', '.smwtable td:nth-last-child(2) > a', '.smwtable td:last-child > a').each do |node| + node.before(node.children).remove end - # Remove linebreaks that are the first or last child of a paragraph - css('p > br:first-child', 'p > br:last-child').each do |node| - node.remove + css('p > br').each do |node| + node.parent.remove if node.parent.content.empty? end + css('div > br', '> br', 'hr').remove + css('#Editing_the_wiki + p', '#Editing_the_wiki').remove + css('#Other_Languages', '.i18n').remove + doc end end diff --git a/lib/docs/filters/love/entries.rb b/lib/docs/filters/love/entries.rb index 47d21ad3..7e717f67 100644 --- a/lib/docs/filters/love/entries.rb +++ b/lib/docs/filters/love/entries.rb @@ -1,21 +1,55 @@ module Docs class Love class EntriesFilter < Docs::EntriesFilter + TYPES = { + 'require' => 'Lua', + 'light_userdata' => 'Lua', + 'value' => 'Lua', + 'variable' => 'Lua', + + 'Audio_Formats' => 'love.sound', + 'ImageFontFormat' => 'love.font', + 'BlendMode_Formulas' => 'love.graphics', + 'Shader_Variables' => 'love.graphics', + + 'AreaSpreadDistribution' => 'love.graphics', + 'BodyType' => 'love.physics', + 'BufferMode' => 'love.filesystem', + 'CompressedFormat' => 'love.image', + 'JoystickConstant' => 'love.joystick', + 'ParticleInsertMode' => 'love.graphics', + 'String' => 'love', + 'TextureMode' => 'love.graphics' + } + + def call + if context[:initial_paths].include?(slug) + css('table.smwtable td:first-child > a').each do |node| + TYPES[node.content.strip] = slug + end + end + + super + end + def get_type - if TYPE_OVERRIDE.key?(slug) then - return TYPE_OVERRIDE[slug] - elsif m = slug.match(/\A(love\.\w+)\z/) then - # modules and funcions - return LOVE_MODULES.include?(m[1]) ? m[1] : 'love' - elsif m = slug.match(/\A(love\.\w+)\.(\w+)/) then - # functions in modules - return m[1] - elsif context[:list_classes] and (m = slug.match(/\A\(?([A-Z]\w+)\)?(\:\w+)?/)) then - # classes, their members and enums - return m[1] unless m[1].include?('_') + if slug == 'love' + 'love' + elsif slug.start_with?('enet') + 'enet' + elsif slug.include?('Joint') || slug.include?('Shape') + 'love.physics' + elsif TYPES.key?(slug) + TYPES[slug] + elsif match = slug.match(/\A(love\.\w+)(\.\w+)?\z/) + match[2] || context[:initial_paths].include?(match[1]) ? match[1] : 'love' + elsif at_css('#catlinks a[title="Category:Lua"]') + 'Lua' + elsif + type = slug.split(':').first + type.remove! %r{[\(\)]} + TYPES[type] end - # usually this shouldn't happen - "Other" end end end diff --git a/lib/docs/scrapers/love.rb b/lib/docs/scrapers/love.rb index 4fa1b13b..1073054b 100644 --- a/lib/docs/scrapers/love.rb +++ b/lib/docs/scrapers/love.rb @@ -1,98 +1,42 @@ module Docs class Love < UrlScraper - LOVE_MODULES = %w( - love - love.audio - love.event - love.filesystem - love.font - love.graphics - love.image - love.joystick - love.keyboard - love.math - love.mouse - love.physics - love.sound - love.system - love.thread - love.timer - love.touch - love.video - love.window - ) - TYPE_OVERRIDE = { - "Audio_Formats" => "love.sound", - "ImageFontFormat" => "love.font", - "BlendMode_Formulas" => "BlendMode", - "Shader_Variables" => "Shader" - } - self.name = 'LÖVE' self.slug = 'love' self.type = 'love' + self.release = '0.10.1' self.base_url = 'https://love2d.org/wiki/' - self.root_path = 'love' - self.initial_paths = LOVE_MODULES + self.root_path = 'Main_Page' + self.initial_paths = %w(love love.audio love.event love.filesystem love.font love.graphics + love.image love.joystick love.keyboard love.math love.mouse love.physics love.sound + love.system love.thread love.timer love.touch love.video love.window enet socket utf8) self.links = { home: 'https://love2d.org/', code: 'https://bitbucket.org/rude/love' } - html_filters.push 'love/clean_html', 'love/entries', 'title' - - options[:root_title] = 'love' - options[:initial_paths] = LOVE_MODULES + html_filters.push 'love/entries', 'love/clean_html', 'title' + options[:root_title] = 'LÖVE' options[:decode_and_clean_paths] = true + options[:container] = '#bodyContent' - # Add types to classes and their members - options[:list_classes] = true + options[:skip] = %w(Getting_Started Building_LÖVE Tutorial Tutorials Game_Distribution License + Games Libraries Software Snippets Version_History Lovers PO2_Syndrome HSL_color Guidelines) - options[:container] = '#mw-content-text' - - options[:only_patterns] = [ - /\A(love\z|love\.|[A-Z]|\([A-Z])/ - # love - # love.* (modules and functions) - # Uppercased (classes and enums) - # (Uppercased) (generalized classes) - ] - options[:skip] = %w( - Getting_Started - Building_LÖVE - Tutorial - Tutorials - Game_Distribution - License - Games - Libraries - Software - Snippets - Version_History - Lovers - PO2_Syndrome - HSL_color - ) options[:skip_patterns] = [ - /_\([^\)]+\)\z/, - # anything_(language) (this might have to be tweaked) - /\ASpecial:/, - /\ACategory:/, - /\AFile:/, - /\AHelp:/, - /\ATemplate:/, - /\AUser:/, - /\ATutorial:/ - # special pages are indistinguishable from instance methods + /_\([^\)]+\)\z/, # anything_(language) + /\A(Special|Category|File|Help|Template|User|Tutorial):/, + /\A\d/ ] options[:replace_paths] = { - "Config_Files" => "love.conf" + 'Config_Files' => 'love.conf', + 'conf.lua' => 'love.conf', + 'lua-enet' => 'enet' } options[:attribution] = <<-HTML - © LÖVE Development Team
+ © 2006–2016 LÖVE Development Team
Licensed under the GNU Free Documentation License, Version 1.3. HTML end diff --git a/public/icons/docs/love/16.png b/public/icons/docs/love/16.png index 9aed38b025dea240542d69823aac8512f7e4789a..9dfce3bdfe2a034b83d7a814edb0a24c374b33ed 100644 GIT binary patch delta 897 zcmV-{1AhFP3zr9wBYy*4Nklx}Aw{Ir($W@;i9A@4fFgL`oxXIjd(VvrZkwQC80=)zYPfed+OGU5*_q^rznl z`*8n$ac}0#@KIuM-Wz&hXp564iyF}NVbwf5R2OODWL1L(NPk6smd#F3#54=E-%b?|mkmXkxLD z;y!&)w4?-}*V~l1ocam{f_Qoe1+{7+(od|^$VV&|l~||SzWwZ30J9m#4F<6BxvBGy-@Gxi(II!eSxC|86_A*{c#IFMnEuA9Jqyq;sn zmi9Se*s4{Di2&ce{eHIp=EDaZ*XscmFGkVFkEz9E+uGA@_`cz@W+5cmooSl_AKkxC z72xbyS637T7?Yl&#a3G^moB}1E0F+@?dZ`dDSsGNy0|+b6h7iUefrz_w_kPUvQe_N z2YdIHOl3}pxcBLk?aHUlpP$S#n+KdpUXZ;G$H{~G^~=gCEF{~~#l070C<-1EM2nM) z;x_iSvqPvjb#UB_4Kgk_+kx9qIN-yF;rwWgI7h86MNq1^O;fK2eCJiGep{+nM@nPF z2zpP?pryly_n0BT9`?9%hy0_JCM4H&dl<3$p7`$F=B!!keH+v1zfY}E11T?L;^z30 z=G&%?9^E-)k4p6M;K8o0{Kx0_rKfit%EQn3W@L0awzFsYS3bYF|LlZiQ8b$E8JEI$ XTfC(f`;5fm00000NkvXXu0mjf*Iv004R>004l5008;`004mK z004C`008P>0026e000+ooVrmw00006VoOIv00000008+zyMF)x010qNS#tmY09pV5 z09pWWBe;D4000McNliru-~|X56d>DeRMh|g1W8FmK~zY`oqtqoOjBnVe$RJ$<&;Yc zQXuUhc$?dbjugijF=Ge_VL*mRWMpJx33E5aY(jvLAWE`}X5kVAw`e58NL0`?42DdN zSs4oyCIKh7hU*Blg%&vNq386R{m{~cQmcFZe98Hq^E^-9_x)ZBykPwE)NQo~ghC<# zfPd-WL8{zQ#(%t#oedvDBn*Xyq9$|-OZM@h+u0^oKQY0JfiP@QqY>ZW9{JC;w1lK| z@BSc!Bt7Y4o-St9X`h}OJamYQVUIw5Z7p7jO3;^bxwpVh&^orz5oIzhRoV+z#)^w~ z5Bz2>DQIr?8esBtilRQNvQqF79>q_ss(M~SPvB;;bbmO{aix}B*|P0bRhJXLm*=#) zbk_sSym#Q|^Lx|M@Cvkq(HaeeLI-?;VgJw8g&%UGe8W=>hW3DHX4gbe5Jk_-j;-bA zPyTZJkEEoQ7M$a9a#~w)+`_ZBt)A)W!C%1^5c2omD1_rdK?DIH5U5mPVE`;^Fpwkw zhT%9u0DnTETCG$90IaPs48U!{mN{85%Qkh!`KZze0v45y{E?w-CwuQK8sq%;!f(D--|$0cBtCA>7=zlAE7#gaSE2?Gpva^w`letMVDJky7 z!!Qg3Ac$kf;^SS$PDmt?k#f1q*cDhL;`0HjyVPCMWP}jfyp8y2-+I}}q$C8VpaQN( zM7UGLVjd4bBnk}l^Lz2$%jLelVljY7gwSU9sGt9`@S0MI*ngm#4R$!(DOM{@1DH&s zqkmIVFCJiUaC+Kk1h85+(+1!eZiKb5ETV2XitL#qBc6mzrpCtm_W>A&qU?6>#x@&G zGYmjY&A`CIf@dCkfm~iuPD~(&9bJU(f!Bz&_&%d*u$YNPD9tG^W${r!uJ02Yf-D3y9PriYf6=0DTv^x~qTy_$Xd)&+*% zHGeU4yP$wR%vu=L^0M>${9%F+n;ni5+}o>BeKwo9N_aCvvOi&BU)~($jZ54D8#M(%hV<%FxH&u-nO>0`3Ngf`h$J zfd}KxyHnR2N=xU>jj<;#)zv+n1lH||WR&&xe5cT8-X9Iiv+hYuv~;omQfcGkuoJGr zLMaQ$GytUVVI+mj52>aJx%I|%YSd~?q2+=?Zbv6TCKCxo|OLsK1A0zWcKo! z0000bbVXQnWMOn=I%9HWVRU5xGB7bVEig4LFgR2)GdeLiIy5*dFfuwYFn`uSsQUl_ z03~!qSaf7zbY(hiZ)9m^c>ppnF*YqQH7zhWR5CL2b7gXKFG^u+Z(=V*WpitEZ*VVcZ+2xa Xb9QH-H$UtE0000wllslBz zZev>xmI5v_x1pU0Gc%jA4zullS4T%(EXYlq+yhr=z3)DhjC8f+3#^YyV&~44e~+>y z)34N!bhA&v5+XkAEwRQMTy#;>7??PEu)~ zK1ffO{PD(fzFY=Fz7sntvH#C_QD0(1GErN&}!)c()TJHn}zSxXo|ra&MgTFQk}HE zj^mRi8Lp;3M}NKX-YzaxKVu%^rn)*B0A1o015mb5s8;7!SXA@&Zrap!;0!cUGVseU zWl7k1e6dbv06v+bo0CE>3RfO5u7!Re?E#o{;2X|*~XKy@{r|MDf_Jb&Jc7q5=LR!vRC#nsgS9v)I@em(_8 z->0{nUVQtv@4rX>Tb17EGg0uPNAv@5aR~|nXlqj{>+9j2rPFCNTJ0-;XUXM_jcsiJ zt5@H;RaQnn02WK)7LO$)kkq|@rK1T)S3W zOh1S*x7~fdj@IX764^R%MIf zVkalM0hE+{^ig0Sbh}JUu3gK`)gu7ak$+x1t*0j<-%oS_J3G1o6c^jroIg*D&N7)= z4F*?vc}-1YBLJ6s=~7M({QxF^cl7sj1)qP8$W~$Y;=gU!K!5Fxq9PGMUYSg@)?W1;$Nvd-`SMwrz;w*+zwL+Jp)E&i~ojD9Yyp)YRnVRa8KiD}N({ zXmJEcP*7?reQ={qQisw=oo-;d(c?vbtXYFlD&J(2E*vG7)1M7cR4fKaOmub@2mqR! zRjRr==yWL*_4Uoo0PEKW2FAn?Kw)9}jQ$*tOZRd-6$+A?#X>0MJhhzcrMh%U-H4jx2arvir64}5iU^7{snlH%YH5CE`prMGu@IDk+X6-5kM8h_3IU-MJP zMWX2F>} EdJ}S_pfovS*IjU34f%fl9Y4iAg@#0F_XqqPt48r{q$8*vS}0X)@ElX z6sDz-eU)edY<55Zv2Shd?@t7hlvG|$yfh^zlWt?G20kz_exe_U&Ub^QKz$=Upx?{%`Q$pZAWuk>1>Fw14UCUuF#9oNX7{ zv&NN`4f$m0QVR=rcambzAmn}Z6BvOD%$%9F-lFesFO!p>gn2x@w4}CnmT9PIp}MuT z+iQGJz?szkd3l3AoO^HW7JGZL)Pn~joh_6-8f6QH4_~n38%=PCj}P^!$=WZ|ma)Vuen5Zi&fPOe$Q7|1UVzxm_|R}tD&V$$B; z>A(?T8%wrzbT9^bv!1J;JQ;Cf!wCDAJ9d!ep#CfD)eGrf4Hz)&!4ew_!KzhL27etJ zaK+1u886O@^G-_QT)A>3|Dam^w&{v<{h~Z)l1#>EIwy=$Mp{QtmU{jvn!@A#XVd0# zN$=MW>Di)cWXu@Sjf@7SPp>q3yk^Z1#;oL(!IqYk_Z>NL+stFe#^iMi7n06ol0JMm b(nb0Q)YKm-Lgtvo00000NkvXXu0mjfYU``= literal 2713 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