class RDoc::Context::Section
A section of documentation like:
# :section: The title # The body
Sections can be referenced multiple times and will be collapsed into a single section.
Attributes
Section comments
The RDoc::Store for this object.
Public Class Methods
Source
# File lib/rdoc/code_object/context/section.rb, line 43 def initialize(parent, title, comment, store = nil) @parent = parent @title = title ? title.strip : title @store = store @comments = [] add_comment comment end
Creates a new section with title and comment
Public Instance Methods
Source
# File lib/rdoc/code_object/context/section.rb, line 56 def ==(other) self.class === other and @title == other.title end
Sections are equal when they have the same title
Source
# File lib/rdoc/code_object/context/section.rb, line 65 def add_comment(comment) Array(comment).each do |c| next if c.nil? raise TypeError, "unknown comment #{c.inspect}" unless RDoc::Comment === c @comments << c unless c.empty? end end
Adds comment to this section
Source
# File lib/rdoc/code_object/context/section.rb, line 81 def aref title = @title || '[untitled]' RDoc::Text.to_anchor(title) end
Anchor reference for linking to this section using GitHub-style format.
Examples:
"Section" -> "section" "One Two" -> "one-two" "[untitled]" -> "untitled"
Source
# File lib/rdoc/code_object/context/section.rb, line 158 def comment return nil if @comments.empty? RDoc::Comment.from_document(to_document) end
Section comment
Source
# File lib/rdoc/code_object/context/section.rb, line 163 def description return '' if @comments.empty? markup comment end
Source
# File lib/rdoc/code_object/context/section.rb, line 112 def in_files @comments.map(&:file) end
The files comments in this section come from
Source
# File lib/rdoc/code_object/context/section.rb, line 168 def language @comments.first&.language end
Source
# File lib/rdoc/code_object/context/section.rb, line 95 def legacy_aref title = @title || '[untitled]' CGI.escape(title).gsub('%', '-').sub(/^-/, '') end
Legacy anchor reference for backward compatibility.
Examples:
"Section" -> "section" "One Two" -> "one+two" "[untitled]" -> "5Buntitled-5D"
Source
# File lib/rdoc/code_object/context/section.rb, line 120 def marshal_dump [ MARSHAL_VERSION, @title, to_document, ] end
Serializes this Section. The title and parsed comment are saved, but not the section parent which must be restored manually.
Source
# File lib/rdoc/code_object/context/section.rb, line 131 def marshal_load(array) @parent = nil @title = array[1] @comments = array[2].parts.map { |doc| RDoc::Comment.from_document(doc) } end
De-serializes this Section. The section parent must be restored manually.
Source
# File lib/rdoc/code_object/context/section.rb, line 151 def plain_html @title || 'Top Section' end
The section’s title, or ‘Top Section’ if the title is nil.
This is used by the table of contents template so the name is silly.
Source
# File lib/rdoc/code_object/context/section.rb, line 176 def remove_comment(target_comment) @comments.delete_if do |stored_comment| stored_comment.file == target_comment.file end end
Removes a comment from this section if it is from the same file as comment
Source
# File lib/rdoc/code_object/context/section.rb, line 142 def to_document RDoc::Markup::Document.new(*@comments.map(&:parse)) end
Parses comment_location into an RDoc::Markup::Document composed of multiple RDoc::Markup::Documents with their file set.