# class RDoc::Markup::Document

A Document containing lists, headings, paragraphs, etc.

### Attributes

file[R]

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

parts[R]

The parts of the Document

### Public Class Methods

new(*parts) click to toggle source

Creates a new Document with `parts`

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

      @file = nil
    end

### Public Instance Methods

<<(part) click to toggle source

Appends `part` to the document

    # File 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) click to toggle source

Runs this document and all its items through `visitor`

    # File 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?() click to toggle source

Does this document have no parts?

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

file=(location) click to toggle source

The file this Document was created from.

    # File lib/rdoc/markup/document.rb, line 80
    def file= location
      @file = case location
              when RDoc::TopLevel then
                location.absolute_name
              else
                location
              end
    end

merge(other) click to toggle source

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 97
    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?() click to toggle source

Does this Document contain other Documents?

    # File lib/rdoc/markup/document.rb, line 117
    def merged?
      RDoc::Markup::Document === @parts.first
    end

push(*parts) click to toggle source

Appends `parts` to the document

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

table_of_contents() click to toggle source

Returns an Array of headings in the document.

Require 'rdoc/markup/formatter' before calling this method.

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