# class RDoc::Markup::Document

frozen_string_literal: false

A Document containing lists, headings, paragraphs, etc.

### Attributes

file[R]

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

omit_headings_below[RW]

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

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 29
    def initialize *parts
      @parts = []
      @parts.concat parts

      @file = nil
      @omit_headings_from_table_of_contents_below = nil
    end

### Public Instance Methods

<<(part) click to toggle source

Appends `part` to the document

    # File lib/rdoc/markup/document.rb, line 40
    def << part
      case part
      when RDoc::Markup::Document then
        unless part.empty? then
          parts.concat 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 65
    def accept visitor
      visitor.start_accepting

      visitor.accept_document self

      visitor.end_accepting
    end

concat(parts) click to toggle source

Concatenates the given `parts` onto the document

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

each(&block) click to toggle source

Enumerator for the parts of this document

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

empty?() click to toggle source

Does this document have no parts?

    # File lib/rdoc/markup/document.rb, line 90
    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 97
    def file= location
      @file = case location
              when RDoc::TopLevel then
                location.relative_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 114
    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 134
    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 151
    def push *parts
      self.parts.concat 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 160
    def table_of_contents
      accept RDoc::Markup::ToTableOfContents.to_toc
    end