From 23ebf25bcb3c284ec7c1e58ba93c782ee0c9b64c Mon Sep 17 00:00:00 2001 From: Thibaut Courouble Date: Sat, 30 Jan 2016 13:51:37 -0500 Subject: [PATCH] Finish Tcl/Tk documentation --- assets/images/icons.png | Bin 36633 -> 37015 bytes assets/images/icons@2x.png | Bin 96879 -> 97762 bytes assets/javascripts/news.json | 3 + .../templates/pages/about_tmpl.coffee | 5 ++ assets/stylesheets/global/_icons.scss | 3 +- assets/stylesheets/pages/_tcl_tk.scss | 20 +----- lib/docs/filters/tcl_tk/clean_html.rb | 60 +++++++--------- lib/docs/filters/tcl_tk/entries.rb | 65 +++++++----------- lib/docs/scrapers/tcl_tk.rb | 41 ++++------- public/icons/docs/tcl_tk/16.png | Bin 444 -> 387 bytes public/icons/docs/tcl_tk/16@2.png | Bin 992 -> 853 bytes 11 files changed, 78 insertions(+), 119 deletions(-) diff --git a/assets/images/icons.png b/assets/images/icons.png index 1c2d953960aeb47fc5b035efd50e6afc414af68d..220fecf93e39afa38139c3f09e53c148fd749cbc 100644 GIT binary patch delta 7264 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 delta 795 zcmV+$1LXYT`vvdx1&|jGKnMl^007O9rK$h{dNzS2wIu;lcYj<%nhL`>exwTqQGGCo z)`tdSR7k~=rV;od8?{R!DG@|LU?CA*AOj)BN}|Y2V?sB?qDgDVxoO+V>9k3Wv34Og zCbn2>O|*+pn#{DP=fw^jItzBToL}~bKktFD9oUB-&-=d5MZ6K4orXxCzhnT2`Gmi~ zP=ag8RVu500)J4mfB@7`$twqkF|Cybm1={CB(q3dV&eH++19AKsG&}(=B zHj^Ft%mY9_G=T0wC-nCWK#$1^X5(|e#c0{j)MKYD{C^#c1ef8h@ZtPMSD4i*>l2o` zO{1akb`WcSCqC}&nmJHvgIw~RBmvl;sI3(@-9>_CdihC++2w7VBxml02NU%%@ROru z9*U<(A3(hM9iG+|Z({=x*S|e?W=M-?NrgzfqxcFyHWK7WAP}q*3WZ-X4L|Zu@@|TU zFi$X7B7c!oow!jaP`R{)=S(f-HCpv@jQ-A$S-}(vKi^VWTfOpVtCDY7TwYobOn)$X zUaAnB@4@KTYSe4m>h&ta9qVYoISk=o6x@Sv;F%61z(*E%+2@2{`pDZkmh8sT>xJyp>3`YT3#v*f~KPj~!ssegWal~T#?yb%Fdh2ZTcl/Tk" + ], [ "2016-01-24", "“Multi-version support” has landed!\nClick Select documentation to pick which versions to use. More versions will be added in the coming weeks.\nIf you notice any bugs, please report them on GitHub." ], [ diff --git a/assets/javascripts/templates/pages/about_tmpl.coffee b/assets/javascripts/templates/pages/about_tmpl.coffee index 0509b02e..19e7343a 100644 --- a/assets/javascripts/templates/pages/about_tmpl.coffee +++ b/assets/javascripts/templates/pages/about_tmpl.coffee @@ -384,6 +384,11 @@ credits = [ '2004-2016 Fabien Potencier', 'MIT', 'http://symfony.com/doc/current/contributing/code/license.html' + ], [ + 'Tcl/Tk', + 'The Regents of the University of California, Sun Microsystems, Inc., Scriptics Corporation, and other parties', + 'Tcl/Tk', + 'http://tcl.tk/software/tcltk/license.html' ], [ 'Underscore.js', '2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors', diff --git a/assets/stylesheets/global/_icons.scss b/assets/stylesheets/global/_icons.scss index 360bc0cf..c9b7d110 100644 --- a/assets/stylesheets/global/_icons.scss +++ b/assets/stylesheets/global/_icons.scss @@ -4,7 +4,7 @@ width: 1rem; height: 1rem; background-image: image-url('icons.png'); - background-size: 10rem 10rem; + background-size: 10rem 11rem; } @media (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 144dpi) { @@ -122,3 +122,4 @@ ._icon-flow:before { background-position: -7rem -9rem; } ._icon-relay:before { background-position: -8rem -9rem; } ._icon-phoenix:before { background-position: -9rem -9rem; } +._icon-tcl_tk:before { background-position: 0 -10rem; } diff --git a/assets/stylesheets/pages/_tcl_tk.scss b/assets/stylesheets/pages/_tcl_tk.scss index 26ac6358..3731e59d 100644 --- a/assets/stylesheets/pages/_tcl_tk.scss +++ b/assets/stylesheets/pages/_tcl_tk.scss @@ -1,19 +1,5 @@ ._tcl_tk { - /* make content listing more compact */ - .description { - margin: 0; - > dd { - margin: 0; - } - } - dl { - margin: 0; - } - .copy { - /* per page copyright */ - white-space: pre; - font-size: 80%; - border-top: 1px solid #6A6A6A; - margin-top: 2em; - } + @extend %simple; + + dl { margin: .5em 0; } } diff --git a/lib/docs/filters/tcl_tk/clean_html.rb b/lib/docs/filters/tcl_tk/clean_html.rb index f2a0e931..5691c3f6 100644 --- a/lib/docs/filters/tcl_tk/clean_html.rb +++ b/lib/docs/filters/tcl_tk/clean_html.rb @@ -2,48 +2,38 @@ module Docs class TclTk class CleanHtmlFilter < Filter def call - # Page Title - css('h2').remove - # Navigation - css('h3:first-child').remove - # restore breaks in copyright - txt = at_css('div.copy').content - at_css('div.copy').content = txt.gsub! /.Copyright/, "\n\\0" + css('h2').remove # Page Title + css('h3:first-child').remove # Navigation + + css('div.copy').each do |node| + node['class'] = '_attribution' + node.inner_html = %(

#{node.inner_html.gsub(' Copyright', '
\0')}

) + end - file = result[:path].split('/')[-1] - re = Regexp.new('^' + Regexp.escape(file) + '(#.*)$') css('a[name]').each do |node| - if node['href'] then - # useless name - node.remove_attribute 'name' - # make fragments relativ - if node['href'].match re then - node['href'] = node['href'].sub re, '\\1' - end - else - # move name to id - node.parent['id'] = node['name'] - node.parent.content = node.content - end + node.parent['id'] = node['name'] + node.before(node.children).remove unless node['href'] end - # remove keywords headline - css('h3').each do |node| - if node.content == 'KEYWORDS' then - node.remove - end - end - # remove keywords links - css('a').each do |node| - attr = node.attribute('href') - if attr && attr.value.match(/\/Keywords\//) then - # the ',' - if node.next_sibling then - node.next_sibling.remove + css('h3').each do |node| + if node.content == 'KEYWORDS' + node['id'] = 'tmp__' + css('#tmp__ ~ a[href*="Keywords"]').each do |link| + link.next.remove if link.next.content == ', ' + link.remove end node.remove + next end - end + + node.name = 'h2' + node.content = node.content.capitalize + end + + css('h4').each do |node| + node.name = 'h3' + node.content = node.content.capitalize + end doc end diff --git a/lib/docs/filters/tcl_tk/entries.rb b/lib/docs/filters/tcl_tk/entries.rb index f3dcd909..f364384a 100644 --- a/lib/docs/filters/tcl_tk/entries.rb +++ b/lib/docs/filters/tcl_tk/entries.rb @@ -1,56 +1,43 @@ module Docs class TclTk class EntriesFilter < Docs::EntriesFilter - #def additional_entries - # type = nil - #end - - def split_slug - slug.sub! /\.html?/, '' - return *slug.split('/') - end - TYPE_MAP = { + 'UserCmd' => 'Applications', 'TclCmd' => 'Tcl', 'TkCmd' => 'Tk', - 'ItclCmd' => 'incr', - 'SqliteCmd' => 'tdbc', - 'TdbcCmd' => 'tdbc', - 'TdbcmysqlCmd' => 'tdbc', - 'TdbcodbcCmd' => 'tdbc', - 'TdbcpostgresCmd' => 'tdbc', - 'TdbcsqliteCmd' => 'tdbc', - 'ThreadCmd' => 'Thread', - 'UserCmd' => 'App' + 'ItclCmd' => '[incr Tcl]', + 'SqliteCmd' => 'TDBC', + 'TdbcCmd' => 'TDBC', + 'TdbcmysqlCmd' => 'TDBC', + 'TdbcodbcCmd' => 'TDBC', + 'TdbcpostgresCmd' => 'TDBC', + 'TdbcsqliteCmd' => 'TDBC', + 'ThreadCmd' => 'Thread' } - def get_type - type, name = split_slug - type = TYPE_MAP[type] || type - if name == 'contents' then - type = nil - end - type + def get_name + if slug == 'contents.htm' + TYPE_MAP[slug.split('/').first] + else + slug.split('/').last.remove('.htm') + end end - def get_name - type, name = split_slug - name + def get_type + return nil if name == 'contents' + TYPE_MAP.fetch(slug.split('/').first) end def additional_entries - type, name = split_slug - if type != 'TclCmd' || name != 'library' then - return [] - end - # special rule for library page which contains multiple commands at once - entries = [] - css('a > b').each do |node| - text = node.content.strip - id = node.parent['href'].sub /^.*#(.*)$/, '\\1' - entries << [text, id, TYPE_MAP[type]] + css('> dl.command > dt > a[name]:not([href])', '> dl.commands > dt > a[name]:not([href])').each_with_object [] do |node, entries| + name = node.at_xpath("./b[not(text()='#{self.name}')]").try(:content) + next unless name + name.strip! + name.remove! %r{\A:+} + name.prepend "#{self.name}: " unless name =~ /#{self.name}[:\s]/ || name =~ /#{self.name.gsub('_', '::')}[:\s]/ + next if entries.any? { |entry| entry[0] == name } + entries << [name, node['name']] end - return entries end end end diff --git a/lib/docs/scrapers/tcl_tk.rb b/lib/docs/scrapers/tcl_tk.rb index e790b9e4..148a3e3f 100644 --- a/lib/docs/scrapers/tcl_tk.rb +++ b/lib/docs/scrapers/tcl_tk.rb @@ -2,41 +2,28 @@ module Docs class TclTk < UrlScraper self.name = 'Tcl/Tk' self.type = 'tcl_tk' - self.slug = 'tcl' - self.version = '8.6' - # test URL: - self.base_url = 'http://localhost/tcl/' - # real URL: - #self.base_url = 'http://www.tcl.tk/man/tcl/' + self.slug = 'tcl_tk' + self.release = '8.6' + self.base_url = 'https://www.tcl.tk/man/tcl/' self.root_path = 'contents.htm' - html_filters.push 'tcl_tk/clean_html', 'tcl_tk/entries' - - options[:skip_links] = false + html_filters.push 'tcl_tk/entries', 'tcl_tk/clean_html', 'title' + options[:root_title] = 'Tcl/Tk Documentation' options[:trailing_slash] = false - options[:skip] = ['siteinfo.htm'] + options[:skip] = %w(siteinfo.htm) options[:skip_patterns] = [ - # ignore keyword list pages - /^Keywords\//, - # ignore C-API, only required for extension developers - /^TclLib\//, - /^TkLib\//, - /^ItclLib\//, - /^TdbcLib\// + # ignore keyword list pages + /\AKeywords\//, + # ignore C-API, only required for extension developers + /\ATclLib\//, + /\ATkLib\//, + /\AItclLib\//, + /\ATdbcLib\// ] - # TODO can't figure out howto convert .htm => .html in filenames - # to save as "xyz.html" instead of "xyz.htm.html" - #options[:fix_urls] = ->(url) do - # url.sub! /\.htm($|#)/, '.html\\1' - # url - #end - - # Each Page contains a specific list of copyrights, only add the - # overall license link options[:attribution] = <<-HTML - Licensed under Tcl/Tk Terms + Licensed under Tcl/Tk terms HTML end end diff --git a/public/icons/docs/tcl_tk/16.png b/public/icons/docs/tcl_tk/16.png index 8752547d290134963212e35a8508d90c14a75777..eb88a3bb08114994a637b09b768157e601e64c83 100644 GIT binary patch delta 360 zcmV-u0hj)~1A_yQB!5atL_t(|0b?K%$ZBiK&XJZ9*vmj7U?kfI$cw_v3H+!YkL~CYYVey#IoAKn}#-v}1rv^OOy)ycXun<=> zvHE$PoecJ!J5cpMHdOb}fpu}eqXKmf0>wRv(k&(?IJLGW?tjsYF0bnuamGhL&bKv} z+XuE_G+_yIN=awZA?>O06`iXVE-@MtSuU5_sdhBegupeZ* zleNM=ptw3wy4l!R>Mot0`a8fw{lN4tuN&*ZW3I;>}PGIbDN!w`L>3N$abKR zKB>u95QtX*@h?z-GLQ*$fOr!F1wa#s7a|LglM5q>Q3wEjrg3>vMw0~q0000smmtx>-!s)ckjQyM_0pyOEU`#i$`%`K%}9{SHWAi?>_zU zQN6 z;O1mwVrFJ!dHn3t4+aK?qr@1%W@(}25bUWWJ8i+aS7H8IrXN55e1GP`vug|t44;TG zz{B6yO7!NHOHV|FIsUP-FtPPbKXKvv&p$J;xfa6!HZ~Rm69WaoLxPM8M0e}Dgb!A~;Vmx>0Ih(ecsM?hIr>=kh@#hk**upSCQ&WMRi%*pC z>yO`TjEoG7?>>D0$iTp`k?5qy%*^a(ZKZRYosIdnhKk5`1_lOwQj@PB0|Ubf1_p*- z3=9l@3}gZw1_p*r#3;m-68|zVFuW(q%Q(c}GB7Z3FdHy1Tp?rt03s`UOpR)x$N&HU M07*qoM6N<$g7w165&!@I diff --git a/public/icons/docs/tcl_tk/16@2.png b/public/icons/docs/tcl_tk/16@2.png index 1d784a29941efae4557ae7b617ac24ac7deed894..3e00d1f6534309b0340bfdf8f9ca0b57516ac1ab 100644 GIT binary patch delta 830 zcmV-E1Ht^@2h|3UB!3)9L_t(|0p*kfj3iqag-_ePwr$(CZQHiZv2EL2+qOA2_o?2! zm95Rhn%n(wlCKeczp7BqkrQSTLI_V_;0%z-ByWce?eyB&dg-T%6;<~PC2mR>Rk^bM zb7IV~-0RUxxGND0IK5VW-w^VCghHK8_2&9ziy|r(P^)A&Sbxjgh{d9eEn8-%nVYUl zzZSdfm;6%r{69q^(H)j@4G}!EFx#B<@wG4a?Cu#s&f{=u^eX_aU>K)~6Z(F9`N*2P zMs}X)KfA!ga{POtfbN~@Tm-O?mAs=?tNQ-tP0*iLBNuX)!x#M3r(4|%bnH|f=Q}Hp ztmY$t%3zd;V}D0hWIVcdnD2JhgtnKK&Fyqm=)Os#N>>1Qv6Aaf3=%XHRZ>iT)O-T|;*h zz*HuO*SlAn566$K%6xSF2qYdoQUN&)Li;LB&s&AL=e%!ETwEGKSl!x*0)+P5Z@8M+{we0E21zoNR@^e9R zOUSdI3V&b-3%NujLh<*M^M757TEYc5O#T9(G|qQ+zEHr739T;yxC}vhk-JZ@SV!baF!r~0aKmu z?l-60l^})@VoUgoP!C3mDIu4D|7`(hj9oxo!bcc6lTnWO8yMQORv`xqod5s;07*qo IM6N<$f|9D8>i_@% delta 970 zcmV;*12z2B2H*#fB!8z#L_t(o!^M_gOj~sn$3M62?cWPUDBH5}FSv~XVRJe&=hP*O z4wVHA#yB)FF)_v%qw?Zh=F2injDq@LHfNlB(8R^K&1~v$1~Zu^YG8~p1FKNzu(bS< zKjq$1O7H#oz{+#WS~$slx#!&T``q*Wos$FUH7jrcI0N*s!hg0$md*W-J-Xfd`6n;= zb8;M=$$Vr#P$DH0^nibVpf(T`2BZB^Yp2!PW`qc zu8a9h15}z!(%Htw2CZ;Io?ECloC${^gfSP5TQUjYk|gPyk6Ic{bu~LYS~$RD;Kq`( z@8(3m5F)8dXn$HJz{hp9yIs|LOLGI>HUj-!s?R?)m~fsv-5mtlGX-#uqBv?kXnvz` z!ry@&kBcKM?HwgWImG~~77KTDkCXuCGbO>1LkC}wBV)ZLAq2-ybzZ3`%a=`(WCD2Y zaO-u$5JSLZCMvK?wwQM}JXf6?o)}>2EGxtS0np?}$bwaCK8y6Up6iGa_(y84%42rtl< zDnK$4taUi-s)@M6FyfrQ$3%r1$1TvK$4`1 zcYhAQD3I*T#ho*TA=cepe3t@Xvzi@-E(Gu?FrN_sA;g95?mkVnS{NReRe=0FmkZ$U zo8x^yT^=X^-dpZglZ*r{XU|=6w*GiY?fYk3O1%8DE70@m+ZUZe&;Y2J-gs*yiHM>& zf`Cw5*6YB;a&P`}>~Ua(#YvZVngMAg_e1_Qz`*Upzqo^S?vCsjU;u^bN|@?jM1e3c syjlQhw^RZ2)dnsAhE^M*KAp+_2dnsD;FG6_6#xJL07*qoM6N<$f)h*Spa1{>