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
28 29 30 31 32 33 34 |
# File 'lib/rdoc/markup/document.rb', line 28 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
12 13 14 |
# File 'lib/rdoc/markup/document.rb', line 12 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
18 19 20 |
# File 'lib/rdoc/markup/document.rb', line 18 def omit_headings_below @omit_headings_below end |
#parts ⇒ Object (readonly)
The parts of the Document
23 24 25 |
# File 'lib/rdoc/markup/document.rb', line 23 def parts @parts end |
Instance Method Details
#<<(part) ⇒ Object
Appends part
to the document
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/rdoc/markup/document.rb', line 39 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:
55 56 57 58 59 |
# File 'lib/rdoc/markup/document.rb', line 55 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
64 65 66 67 68 69 70 |
# File 'lib/rdoc/markup/document.rb', line 64 def accept visitor visitor.start_accepting visitor.accept_document self visitor.end_accepting end |
#concat(parts) ⇒ Object
Concatenates the given parts
onto the document
75 76 77 |
# File 'lib/rdoc/markup/document.rb', line 75 def concat parts self.parts.concat parts end |
#each(&block) ⇒ Object
Enumerator for the parts of this document
82 83 84 |
# File 'lib/rdoc/markup/document.rb', line 82 def each &block @parts.each(&block) end |
#empty? ⇒ Boolean
Does this document have no parts?
89 90 91 |
# File 'lib/rdoc/markup/document.rb', line 89 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
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
# File 'lib/rdoc/markup/document.rb', line 113 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?
133 134 135 |
# File 'lib/rdoc/markup/document.rb', line 133 def merged? RDoc::Markup::Document === @parts.first end |
#pretty_print(q) ⇒ Object
:nodoc:
137 138 139 140 141 142 143 144 145 |
# File 'lib/rdoc/markup/document.rb', line 137 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
150 151 152 |
# File 'lib/rdoc/markup/document.rb', line 150 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.
159 160 161 |
# File 'lib/rdoc/markup/document.rb', line 159 def table_of_contents accept RDoc::Markup::ToTableOfContents.to_toc end |