From 54c40f3db59d6875de0c2c0f47ab7edce0bd3f43 Mon Sep 17 00:00:00 2001 From: drbrain Date: Wed, 5 Dec 2012 22:20:15 +0000 Subject: * lib/rdoc*: Improved display of ChangeLog files as HTML. * test/rdoc*: Test for above. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38226 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/rdoc/markup/document.rb | 16 ++++++++-------- lib/rdoc/markup/formatter.rb | 7 ++++++- lib/rdoc/markup/heading.rb | 3 ++- lib/rdoc/markup/to_table_of_contents.rb | 28 +++++++++++++++++++++++++++- 4 files changed, 43 insertions(+), 11 deletions(-) (limited to 'lib/rdoc/markup') diff --git a/lib/rdoc/markup/document.rb b/lib/rdoc/markup/document.rb index 049cd3b43c..be93d80eec 100644 --- a/lib/rdoc/markup/document.rb +++ b/lib/rdoc/markup/document.rb @@ -11,6 +11,12 @@ class RDoc::Markup::Document attr_reader :file + ## + # If a heading is below the given level it will be omitted from the + # table_of_contents + + attr_accessor :omit_headings_below + ## # The parts of the Document @@ -24,6 +30,7 @@ class RDoc::Markup::Document @parts.concat parts @file = nil + @omit_headings_from_table_of_contents_below = nil end ## @@ -57,14 +64,7 @@ class RDoc::Markup::Document def accept visitor visitor.start_accepting - @parts.each do |item| - case item - when RDoc::Markup::Document then # HACK - visitor.accept_document item - else - item.accept visitor - end - end + visitor.accept_document self visitor.end_accepting end diff --git a/lib/rdoc/markup/formatter.rb b/lib/rdoc/markup/formatter.rb index ac76db3536..a5f639c28c 100644 --- a/lib/rdoc/markup/formatter.rb +++ b/lib/rdoc/markup/formatter.rb @@ -42,7 +42,12 @@ class RDoc::Markup::Formatter def accept_document document document.parts.each do |item| - item.accept self + case item + when RDoc::Markup::Document then # HACK + accept_document item + else + item.accept self + end end end diff --git a/lib/rdoc/markup/heading.rb b/lib/rdoc/markup/heading.rb index b72c3e2b14..b1f372222f 100644 --- a/lib/rdoc/markup/heading.rb +++ b/lib/rdoc/markup/heading.rb @@ -1,7 +1,8 @@ ## # A heading with a level (1-6) and text -class RDoc::Markup::Heading < Struct.new :level, :text +RDoc::Markup::Heading = + Struct.new :level, :text do @to_html = nil @to_label = nil diff --git a/lib/rdoc/markup/to_table_of_contents.rb b/lib/rdoc/markup/to_table_of_contents.rb index 54f2d5f64f..2e0f98cfeb 100644 --- a/lib/rdoc/markup/to_table_of_contents.rb +++ b/lib/rdoc/markup/to_table_of_contents.rb @@ -18,15 +18,31 @@ class RDoc::Markup::ToTableOfContents < RDoc::Markup::Formatter attr_reader :res + ## + # Omits headings with a level less than the given level. + + attr_accessor :omit_headings_below + def initialize # :nodoc: super nil + + @omit_headings_below = nil + end + + ## + # Adds +document+ to the output, using its heading cutoff if present + + def accept_document document + @omit_headings_below = document.omit_headings_below + + super end ## # Adds +heading+ to the table of contents def accept_heading heading - @res << heading + @res << heading unless suppressed? heading end ## @@ -40,9 +56,19 @@ class RDoc::Markup::ToTableOfContents < RDoc::Markup::Formatter # Prepares the visitor for text generation def start_accepting + @omit_headings_below = nil @res = [] end + ## + # Returns true if +heading+ is below the display threshold + + def suppressed? heading + return false unless @omit_headings_below + + heading.level > @omit_headings_below + end + # :stopdoc: alias accept_block_quote ignore alias accept_raw ignore -- cgit v1.2.3