From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.0 required=3.0 tests=ALL_TRUSTED,BAYES_00 shortcircuit=no autolearn=ham autolearn_force=no version=3.4.0 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 3F43F1F437 for ; Tue, 24 Jan 2017 23:28:02 +0000 (UTC) From: Eric Wong To: Subject: [PATCH] oldweb: apply LessHtml monkey patch late, at runtime Date: Tue, 24 Jan 2017 23:28:02 +0000 Message-Id: <20170124232802.32073-1-e@80x24.org> List-Id: RDoc will load oldweb.rb regardless of whether it is used or not, so do not apply our monkey patching to reduce HTML generated by RDoc::Markup::ToHtml until we initialize Oldweb. Thanks to Daniel Ferreira for noticing this in [ruby-talk:437390]: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/437390 This still assumes any Ruby VM instance (currently synonymous with an OS process in Ruby 2.4) will only use one RDoc template in its lifetime and not switch between them. More work will be required to support switching between `oldweb' and other templates within the same VM instance, but that's not a priority for me. --- lib/oldweb.rb | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/lib/oldweb.rb b/lib/oldweb.rb index a5da1cc..95b7171 100644 --- a/lib/oldweb.rb +++ b/lib/oldweb.rb @@ -31,6 +31,8 @@ class Oldweb RDoc::Text::TO_HTML_CHARACTERS[Encoding::UTF_8] = RDoc::Text::TO_HTML_CHARACTERS[Encoding::ASCII] + less_html! + @store = store @options = options @base_dir = Pathname.pwd.expand_path @@ -298,12 +300,13 @@ class Oldweb @res << "" end end -end -# :stopdoc: -class RDoc::Markup::ToHtml # :nodoc: - remove_method :accept_heading - remove_method :accept_verbatim - include Oldweb::LessHtml + def less_html! # :nodoc: + klass = RDoc::Markup::ToHtml + return if klass.include?(Oldweb::LessHtml) + klass.__send__(:remove_method, :accept_heading) + klass.__send__(:remove_method, :accept_verbatim) + klass.__send__(:include, Oldweb::LessHtml) + end end # :startdoc: -- EW