diff options
author | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-12-05 22:20:15 +0000 |
---|---|---|
committer | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-12-05 22:20:15 +0000 |
commit | 54c40f3db59d6875de0c2c0f47ab7edce0bd3f43 (patch) | |
tree | 6dc4fc7137f7d98e84fe01b7270ab08a2f22718f /lib/rdoc | |
parent | fe6b2e20e9f17ed2c2900aa72994e075ffdc7124 (diff) | |
download | ruby-54c40f3db59d6875de0c2c0f47ab7edce0bd3f43.tar.gz |
* 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
Diffstat (limited to 'lib/rdoc')
-rw-r--r-- | lib/rdoc/markup/document.rb | 16 | ||||
-rw-r--r-- | lib/rdoc/markup/formatter.rb | 7 | ||||
-rw-r--r-- | lib/rdoc/markup/heading.rb | 3 | ||||
-rw-r--r-- | lib/rdoc/markup/to_table_of_contents.rb | 28 | ||||
-rw-r--r-- | lib/rdoc/parser/changelog.rb | 9 |
5 files changed, 50 insertions, 13 deletions
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 @@ -12,6 +12,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 attr_reader :parts @@ -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 diff --git a/lib/rdoc/parser/changelog.rb b/lib/rdoc/parser/changelog.rb index a74d7418d9..6a21506a93 100644 --- a/lib/rdoc/parser/changelog.rb +++ b/lib/rdoc/parser/changelog.rb @@ -23,13 +23,14 @@ class RDoc::Parser::ChangeLog < RDoc::Parser def create_document groups doc = RDoc::Markup::Document.new + doc.omit_headings_below = 2 doc.file = @top_level doc << RDoc::Markup::Heading.new(1, File.basename(@file_name)) doc << RDoc::Markup::BlankLine.new groups.sort_by do |day,| day end.reverse_each do |day, entries| - doc << RDoc::Markup::Heading.new(2, day) + doc << RDoc::Markup::Heading.new(2, day.dup) doc << RDoc::Markup::BlankLine.new doc.concat create_entries entries @@ -55,7 +56,11 @@ class RDoc::Parser::ChangeLog < RDoc::Parser list = RDoc::Markup::List.new :NOTE items.each do |item| - title, body = item.split(/:\s*/, 2) + item =~ /\A(.*?(?:\([^)]+\))?):\s*/ + + title = $1 + body = $' + paragraph = RDoc::Markup::Paragraph.new body list_item = RDoc::Markup::ListItem.new title, paragraph list << list_item |