From d8468cf824b235685e55d5b2765165954816c133 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Tue, 24 Jan 2017 23:28:02 +0000 Subject: oldweb: apply LessHtml monkey patch late, at runtime 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: -- cgit v1.2.3-24-ge0c7