A comment holds the text comment for a RDoc::CodeObject and provides a unified way of cleaning it up and parsing it into an RDoc::Markup::Document.
Each comment may have a different markup format set by format=. By default 'rdoc' is used. The :markup: directive tells RDoc which format to use.
See Other directives at RDoc::Markup for instructions on adding an alternate format.
- E
- F
- N
- P
- R
- T
[W] | document | Overrides the content returned by parse. Use when there is no text source for this comment |
[RW] | file | The RDoc::TopLevel this comment was found in |
[R] | format | The format of this comment. Defaults to RDoc::Markup |
[RW] | location | The RDoc::TopLevel this comment was found in |
[R] | text | The text for this comment |
Creates a new comment with text
that is found in the RDoc::TopLevel location
.
A comment is empty if its text String is empty.
Look for a 'call-seq' in the comment to override the normal parameter handling. The :call-seq: is indented from the baseline. All lines of the same indentation level and prefix are consumed.
For example, all of the following will be used as the :call-seq:
# :call-seq:
# ARGF.readlines(sep=$/) -> array
# ARGF.readlines(limit) -> array
# ARGF.readlines(sep, limit) -> array
#
# ARGF.to_a(sep=$/) -> array
# ARGF.to_a(limit) -> array
# ARGF.to_a(sep, limit) -> array
# File lib/rdoc/comment.rb, line 83 def extract_call_seq method # we must handle situations like the above followed by an unindented first # comment. The difficulty is to make sure not to match lines starting # with ARGF at the same indent, but that are after the first description # paragraph. if @text =~ /^\s*:?call-seq:(.*?(?:\S).*?)^\s*$/m then all_start, all_stop = $~.offset(0) seq_start, seq_stop = $~.offset(1) # we get the following lines that start with the leading word at the # same indent, even if they have blank lines before if $1 =~ /(^\s*\n)+^(\s*\w+)/m then leading = $2 # ' * ARGF' in the example above re = %r \A( (^\s*\n)+ (^#{Regexp.escape leading}.*?\n)+ )+ ^\s*$ %xm if @text[seq_stop..-1] =~ re then all_stop = seq_stop + $~.offset(0).last seq_stop = seq_stop + $~.offset(1).last end end seq = @text[seq_start..seq_stop] seq.gsub!(/^\s*(\S|\n)/m, '\1') @text.slice! all_start...all_stop method.call_seq = seq.chomp elsif @text.sub!(/^\s*:?call-seq:(.*?)(^\s*$|\z)/m, '') then seq = $1 seq.gsub!(/^\s*/, '') method.call_seq = seq end #elsif @text.sub!(/\A\/\*\s*call-seq:(.*?)\*\/\Z/, '') then # method.call_seq = $1.strip #end method end
HACK dubious
Sets the format of this comment and resets any parsed document
Normalizes the text. See RDoc::Text#normalize_comment for details
Parses the comment into an RDoc::Markup::Document. The parsed document is cached until the text is changed.
Removes private sections from this comment. Private sections are flush to
the comment marker and start with --
and end with
++
. For C-style comments, a private marker may not start at
the opening of the comment.
*--
* private
*++
* public
# File lib/rdoc/comment.rb, line 202 def remove_private # Workaround for gsub encoding for Ruby 1.9.2 and earlier empty = '' empty.force_encoding @text.encoding if Object.const_defined? :Encoding @text = @text.gsub(%r^\s*([#*]?)--.*?^\s*(\1)\+\+\n?%m, empty) @text = @text.sub(%r^\s*[#*]?--.*%m, '') end
Replaces this comment's text with text
and resets the
parsed document.
An error is raised if the comment contains a document but no text.