class RDoc::Markup::Document

A Document containing lists, headings, paragraphs, etc.

Attributes

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

If a heading is below the given level it will be omitted from the table_of_contents

The parts of the Document

Public Class Methods

Creates a new Document with parts

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

  @file = nil
  @omit_headings_from_table_of_contents_below = nil
end

Public Instance Methods

Appends part to the document

# File lib/rdoc/markup/document.rb, line 42
def <<(part)
  case part
  when Markup::Document
    unless part.empty?
      parts.concat part.parts
      parts << Markup::BlankLine.new
    end
  when String
    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 lib/rdoc/markup/document.rb, line 67
def accept(visitor)
  visitor.start_accepting

  visitor.accept_document self

  visitor.end_accepting
end

Concatenates the given parts onto the document

# File lib/rdoc/markup/document.rb, line 78
def concat(parts)
  self.parts.concat parts
end

Enumerator for the parts of this document

# File lib/rdoc/markup/document.rb, line 85
def each(&block)
  @parts.each(&block)
end

Does this document have no parts?

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

The file this Document was created from.

# File lib/rdoc/markup/document.rb, line 99
def file=(location)
  @file = case location
          when TopLevel
            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 lib/rdoc/markup/document.rb, line 116
def merge(other)
  if empty?
    @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 lib/rdoc/markup/document.rb, line 136
def merged?
  Markup::Document === @parts.first
end

Appends parts to the document

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

Returns an Array of headings in the document.

Require ‘rdoc/markup/formatter’ before calling this method.

# File lib/rdoc/markup/document.rb, line 162
def table_of_contents
  accept Markup::ToTableOfContents.to_toc
end