about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2017-01-24 23:28:02 +0000
committerEric Wong <e@80x24.org>2017-01-24 23:28:23 +0000
commitd8468cf824b235685e55d5b2765165954816c133 (patch)
tree29020cb21910181b7d4373cb1fbda15baafeadb1
parentf19299f33badd710ba8ad1c0a085347dd6c8e363 (diff)
downloadolddoc-d8468cf824b235685e55d5b2765165954816c133.tar.gz
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
  <CAPL_2g25ir4ZBJo652ao1EYB59ZvFHhpGef1V14QOV2SeVXLeA@mail.gmail.com>

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.
-rw-r--r--lib/oldweb.rb15
1 files 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 << "</h#{level}>"
     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: