summaryrefslogtreecommitdiff
path: root/lib/rdoc
diff options
context:
space:
mode:
authordrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-12-05 22:20:15 +0000
committerdrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-12-05 22:20:15 +0000
commit54c40f3db59d6875de0c2c0f47ab7edce0bd3f43 (patch)
tree6dc4fc7137f7d98e84fe01b7270ab08a2f22718f /lib/rdoc
parentfe6b2e20e9f17ed2c2900aa72994e075ffdc7124 (diff)
* 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.rb16
-rw-r--r--lib/rdoc/markup/formatter.rb7
-rw-r--r--lib/rdoc/markup/heading.rb3
-rw-r--r--lib/rdoc/markup/to_table_of_contents.rb28
-rw-r--r--lib/rdoc/parser/changelog.rb9
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