A Document containing lists, headings, paragraphs, etc.

Methods
#
A
E
M
N
P
Attributes
[RW] file

The file this document was created from. See also RDoc::ClassModule#add_comment

[R] parts

The parts of the Document

Class Public methods
new(*parts)

Creates a new Document with parts

# File ../ruby/lib/rdoc/markup/document.rb, line 20
def initialize *parts
  @parts = []
  @parts.push(*parts)

  @file = nil
end
Instance Public methods
<<(part)

Appends part to the document

# File ../ruby/lib/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
accept(visitor)

Runs this document and all its items through visitor

# File ../ruby/lib/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
empty?()

Does this document have no parts?

# File ../ruby/lib/rdoc/markup/document.rb, line 73
def empty?
  @parts.empty? or (@parts.length == 1 and merged? and @parts.first.empty?)
end
merge(other)

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 ../ruby/lib/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
merged?()

Does this Document contain other Documents?

# File ../ruby/lib/rdoc/markup/document.rb, line 105
def merged?
  RDoc::Markup::Document === @parts.first
end
push(*parts)

Appends parts to the document

# File ../ruby/lib/rdoc/markup/document.rb, line 122
def push *parts
  self.parts.push(*parts)
end