A Document containing lists, headings, paragraphs, etc.
Creates a new Document with parts
# File rdoc/markup/document.rb, line 20
def initialize *parts
@parts = []
@parts.push(*parts)
@file = nil
end
Appends part to the document
# File rdoc/markup/document.rb, line 30
def << part
case part
when RDoc::Markup::Document then
unless part.empty? then
parts.push(*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 55
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.end_accepting
end
Does this document have no parts?
# File rdoc/markup/document.rb, line 73
def empty?
@parts.empty? or (@parts.length == 1 and merged? and @parts.first.empty?)
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 85
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 105
def merged?
RDoc::Markup::Document === @parts.first
end
Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.
If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.
If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.
If you want to help improve the Ruby documentation, please see Improve the docs, or visit Documenting-ruby.org.