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 Directive for Specifying RDoc Source Format at RDoc::MarkupReference
.
- E
- F
- N
- P
- R
- T
Attributes
[W] | document | Overrides the content returned by |
[RW] | file | The |
[R] | format | The format of this comment. Defaults to |
[RW] | line | Line where this |
[RW] | location | The |
[R] | text | The text for this comment |
[R] | to_s | The text for this comment |
Class Public methods
new(text = nil, location = nil, language = nil) Link
Creates a new comment with text
that is found in the RDoc::TopLevel
location
.
Instance Public methods
encode!(encoding) Link
HACK dubious
extract_call_seq(method) Link
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 ruby/lib/rdoc/comment.rb, line 95 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 /^(?<S> ((?!\n)\s)*+ (?# whitespaces except newline)) :?call-seq: (?<B> \g<S>(?<N>\n|\z) (?# trailing spaces))? (?<seq> (\g<S>(?!\w)\S.*\g<N>)* (?> (?<H> \g<S>\w+ (?# ' # ARGF' in the example above)) .*\g<N>)? (\g<S>\S.*\g<N> (?# other non-blank line))*+ (\g<B>+(\k<H>.*\g<N> (?# ARGF.to_a lines))++)*+ ) (?m:^\s*$|\z) /x =~ @text seq = $~[:seq] all_start, all_stop = $~.offset(0) @text.slice! all_start...all_stop seq.gsub!(/^\s*/, '') method.call_seq = seq end method end
format=(format) Link
Sets the format of this comment and resets any parsed document
normalize() Link
Normalizes the text. See RDoc::Text#normalize_comment
for details
parse() Link
Parses the comment into an RDoc::Markup::Document. The parsed document is cached until the text is changed.
remove_private() Link
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 ruby/lib/rdoc/comment.rb, line 200 def remove_private # Workaround for gsub encoding for Ruby 1.9.2 and earlier empty = '' empty = RDoc::Encoding.change_encoding empty, @text.encoding @text = @text.gsub(%r%^\s*([#*]?)--.*?^\s*(\1)\+\+\n?%m, empty) @text = @text.sub(%r%^\s*[#*]?--.*%m, '') end
text=(text) Link
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.