123456789_123456789_123456789_123456789_123456789_

Class: RDoc::Markup::Document

Relationships & Source Files
Super Chains via Extension / Inclusion / Inheritance
Instance Chain:
self, Enumerable
Inherits: Object
Defined in: lib/rdoc/markup/document.rb

Overview

A Document containing lists, headings, paragraphs, etc.

Class Method Summary

Instance Attribute Summary

Instance Method Summary

Constructor Details

.new(*parts) ⇒ Document

Creates a new Document with #parts

[ GitHub ]

  
# 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

Instance Attribute Details

#empty? ⇒ Boolean (readonly)

Does this document have no parts?

[ GitHub ]

  
# File 'lib/rdoc/markup/document.rb', line 92

def empty?
  @parts.empty? or (@parts.length == 1 and merged? and @parts.first.empty?)
end

#file (rw)

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

[ GitHub ]

  
# File 'lib/rdoc/markup/document.rb', line 15

attr_reader :file

#file=(location) (rw)

The file this Document was created from.

[ GitHub ]

  
# File 'lib/rdoc/markup/document.rb', line 99

def file=(location)
  @file = case location
          when TopLevel
            location.relative_name
          else
            location
          end
end

#merged? ⇒ Boolean (readonly)

Does this Document contain other Documents?

[ GitHub ]

  
# File 'lib/rdoc/markup/document.rb', line 136

def merged?
  Markup::Document === @parts.first
end

#omit_headings_below (rw)

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

[ GitHub ]

  
# File 'lib/rdoc/markup/document.rb', line 21

attr_accessor :omit_headings_below

#parts (readonly)

The parts of the Document

[ GitHub ]

  
# File 'lib/rdoc/markup/document.rb', line 26

attr_reader :parts

Instance Method Details

#<<(part)

Appends part to the document

[ GitHub ]

  
# 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

#==(other)

This method is for internal use only.
[ GitHub ]

  
# File 'lib/rdoc/markup/document.rb', line 58

def ==(other) # :nodoc:
  self.class == other.class and
    @file == other.file and
    @parts == other.parts
end

#accept(visitor)

Runs this document and all its #items through visitor

[ GitHub ]

  
# File 'lib/rdoc/markup/document.rb', line 67

def accept(visitor)
  visitor.start_accepting

  visitor.accept_document self

  visitor.end_accepting
end

#concat(parts)

Concatenates the given #parts onto the document

[ GitHub ]

  
# File 'lib/rdoc/markup/document.rb', line 78

def concat(parts)
  self.parts.concat parts
end

#each(&block)

Enumerator for the parts of this document

[ GitHub ]

  
# File 'lib/rdoc/markup/document.rb', line 85

def each(&block)
  @parts.each(&block)
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

[ GitHub ]

  
# 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

#pretty_print(q)

This method is for internal use only.
[ GitHub ]

  
# File 'lib/rdoc/markup/document.rb', line 140

def pretty_print(q) # :nodoc:
  start = @file ? "[doc (#{@file}): " : '[doc: '

  q.group 2, start, ']' do
    q.seplist @parts do |part|
      q.pp part
    end
  end
end

#push(*parts)

Appends #parts to the document

[ GitHub ]

  
# File 'lib/rdoc/markup/document.rb', line 153

def push(*parts)
  self.parts.concat parts
end

#table_of_contents

Returns an Array of headings in the document.

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

[ GitHub ]

  
# File 'lib/rdoc/markup/document.rb', line 162

def table_of_contents
  accept Markup::ToTableOfContents.to_toc
end