A Document containing lists, headings, paragraphs, etc.
If a heading is below the given level it will be omitted from the #table_of_contents
Creates a new Document with parts
# File rdoc/markup/document.rb, line 28
def initialize *parts
@parts = []
@parts.concat parts
@file = nil
@omit_headings_from_table_of_contents_below = nil
end
Appends part to the document
# File rdoc/markup/document.rb, line 39
def << part
case part
when RDoc::Markup::Document then
unless part.empty? then
parts.concat part.parts
parts << RDoc::Markup::BlankLine.new
end
when String then
raise ArgumentError,
"expected RDoc::Markup::Document and friends, got String" unless
part.empty?
else
parts << part
end
end
Runs this document and all its items through visitor
# File rdoc/markup/document.rb, line 64
def accept visitor
visitor.start_accepting
visitor.accept_document self
visitor.end_accepting
end
Concatenates the given parts onto the document
# File rdoc/markup/document.rb, line 75
def concat parts
self.parts.concat parts
end
Enumerator for the parts of this document
# File rdoc/markup/document.rb, line 82
def each &block
@parts.each(&block)
end
Does this document have no parts?
# File rdoc/markup/document.rb, line 89
def empty?
@parts.empty? or (@parts.length == 1 and merged? and @parts.first.empty?)
end
The file this Document was created from.
# File rdoc/markup/document.rb, line 96
def file= location
@file = case location
when RDoc::TopLevel then
location.relative_name
else
location
end
end
When this is a collection of documents (#file is not set and this document
contains only other documents as its direct children) merge replaces documents in this
class with documents from other when the file matches and adds
documents from other when the files do not.
The information in other is preferred over the receiver
# File rdoc/markup/document.rb, line 113
def merge other
if empty? then
@parts = other.parts
return self
end
other.parts.each do |other_part|
self.parts.delete_if do |self_part|
self_part.file and self_part.file == other_part.file
end
self.parts << other_part
end
self
end
Does this Document contain other Documents?
# File rdoc/markup/document.rb, line 133
def merged?
RDoc::Markup::Document === @parts.first
end