Extended maintenance of Ruby 1.9.3 ended on February 23, 2015. Read more
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