Class: RDoc::Markup::Document
- Inherits:
-
Object
- Object
- RDoc::Markup::Document
- Includes:
- Enumerable
- Defined in:
- lib/rdoc/markup/document.rb
Overview
A Document containing lists, headings, paragraphs, etc.
Instance Attribute Summary collapse
-
#file ⇒ Object
The file this document was created from.
-
#omit_headings_below ⇒ Object
If a heading is below the given level it will be omitted from the table_of_contents.
-
#parts ⇒ Object
readonly
The parts of the Document.
Instance Method Summary collapse
-
#<<(part) ⇒ Object
Appends
partto the document. -
#==(other) ⇒ Object
:nodoc:.
-
#accept(visitor) ⇒ Object
Runs this document and all its #items through
visitor. -
#concat(parts) ⇒ Object
Concatenates the given
partsonto the document. -
#each(&block) ⇒ Object
Enumerator for the parts of this document.
-
#empty? ⇒ Boolean
Does this document have no parts?.
-
#initialize(*parts) ⇒ Document
constructor
Creates a new Document with
parts. -
#merge(other) ⇒ Object
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
otherwhen the file matches and adds documents fromotherwhen the files do not. -
#merged? ⇒ Boolean
Does this Document contain other Documents?.
-
#pretty_print(q) ⇒ Object
:nodoc:.
-
#push(*parts) ⇒ Object
Appends
partsto the document. -
#table_of_contents ⇒ Object
Returns an Array of headings in the document.
Constructor Details
#initialize(*parts) ⇒ Document
Creates a new Document with parts
31 32 33 34 35 36 37 |
# 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
#file ⇒ Object
The file this document was created from. See also RDoc::ClassModule#add_comment
15 16 17 |
# File 'lib/rdoc/markup/document.rb', line 15 def file @file end |
#omit_headings_below ⇒ Object
If a heading is below the given level it will be omitted from the table_of_contents
21 22 23 |
# File 'lib/rdoc/markup/document.rb', line 21 def omit_headings_below @omit_headings_below end |
#parts ⇒ Object (readonly)
The parts of the Document
26 27 28 |
# File 'lib/rdoc/markup/document.rb', line 26 def parts @parts end |
Instance Method Details
#<<(part) ⇒ Object
Appends part to the document
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# 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) ⇒ Object
:nodoc:
58 59 60 61 62 |
# 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) ⇒ Object
Runs this document and all its #items through visitor
67 68 69 70 71 72 73 |
# File 'lib/rdoc/markup/document.rb', line 67 def accept(visitor) visitor.start_accepting visitor.accept_document self visitor.end_accepting end |
#concat(parts) ⇒ Object
Concatenates the given parts onto the document
78 79 80 |
# File 'lib/rdoc/markup/document.rb', line 78 def concat(parts) self.parts.concat parts end |
#each(&block) ⇒ Object
Enumerator for the parts of this document
85 86 87 |
# File 'lib/rdoc/markup/document.rb', line 85 def each(&block) @parts.each(&block) end |
#empty? ⇒ Boolean
Does this document have no parts?
92 93 94 |
# File 'lib/rdoc/markup/document.rb', line 92 def empty? @parts.empty? or (@parts.length == 1 and merged? and @parts.first.empty?) end |
#merge(other) ⇒ Object
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
116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
# 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 |
#merged? ⇒ Boolean
Does this Document contain other Documents?
136 137 138 |
# File 'lib/rdoc/markup/document.rb', line 136 def merged? Markup::Document === @parts.first end |
#pretty_print(q) ⇒ Object
:nodoc:
140 141 142 143 144 145 146 147 148 |
# 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) ⇒ Object
Appends parts to the document
153 154 155 |
# File 'lib/rdoc/markup/document.rb', line 153 def push(*parts) self.parts.concat parts end |
#table_of_contents ⇒ Object
Returns an Array of headings in the document.
Require 'rdoc/markup/formatter' before calling this method.
162 163 164 |
# File 'lib/rdoc/markup/document.rb', line 162 def table_of_contents accept Markup::ToTableOfContents.to_toc end |