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
part
to the document. -
#==(other) ⇒ Object
:nodoc:.
-
#accept(visitor) ⇒ Object
Runs this document and all its #items through
visitor
. -
#concat(parts) ⇒ Object
Concatenates the given
parts
onto 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
other
when the file matches and adds documents fromother
when the files do not. -
#merged? ⇒ Boolean
Does this Document contain other Documents?.
-
#pretty_print(q) ⇒ Object
:nodoc:.
-
#push(*parts) ⇒ Object
Appends
parts
to 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
29 30 31 32 33 34 35 |
# 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 |
Instance Attribute Details
#file ⇒ Object
The file this document was created from. See also RDoc::ClassModule#add_comment
13 14 15 |
# File 'lib/rdoc/markup/document.rb', line 13 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
19 20 21 |
# File 'lib/rdoc/markup/document.rb', line 19 def omit_headings_below @omit_headings_below end |
#parts ⇒ Object (readonly)
The parts of the Document
24 25 26 |
# File 'lib/rdoc/markup/document.rb', line 24 def parts @parts end |
Instance Method Details
#<<(part) ⇒ Object
Appends part
to the document
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# 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 |
#==(other) ⇒ Object
:nodoc:
56 57 58 59 60 |
# File 'lib/rdoc/markup/document.rb', line 56 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
65 66 67 68 69 70 71 |
# File 'lib/rdoc/markup/document.rb', line 65 def accept visitor visitor.start_accepting visitor.accept_document self visitor.end_accepting end |
#concat(parts) ⇒ Object
Concatenates the given parts
onto the document
76 77 78 |
# File 'lib/rdoc/markup/document.rb', line 76 def concat parts self.parts.concat parts end |
#each(&block) ⇒ Object
Enumerator for the parts of this document
83 84 85 |
# File 'lib/rdoc/markup/document.rb', line 83 def each &block @parts.each(&block) end |
#empty? ⇒ Boolean
Does this document have no parts?
90 91 92 |
# File 'lib/rdoc/markup/document.rb', line 90 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
114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 |
# 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? ⇒ Boolean
Does this Document contain other Documents?
134 135 136 |
# File 'lib/rdoc/markup/document.rb', line 134 def merged? RDoc::Markup::Document === @parts.first end |
#pretty_print(q) ⇒ Object
:nodoc:
138 139 140 141 142 143 144 145 146 |
# File 'lib/rdoc/markup/document.rb', line 138 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
151 152 153 |
# File 'lib/rdoc/markup/document.rb', line 151 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.
160 161 162 |
# File 'lib/rdoc/markup/document.rb', line 160 def table_of_contents accept RDoc::Markup::ToTableOfContents.to_toc end |