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.
Overrides the content returned by parse. Use when there is no text source for this comment
The format of this comment. Defaults to RDoc::Markup
The RDoc::TopLevel this comment was found in
The text for this comment
Creates a new comment with text that is found in the RDoc::TopLevel location.
# File lib/rdoc/comment.rb, line 40
def initialize text = nil, location = nil
  @location = location
  @text     = text
  @document   = nil
  @format     = 'rdoc'
  @normalized = false
end
						A comment is empty if its text String is empty.
# File lib/rdoc/comment.rb, line 126
def empty?
  @text.empty?
end
						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 78
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 =~ %r^\s*:?call-seq:(.*?(?:\S).*?)^\s*$/ 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 =~ %r(^\s*\n)+^(\s*\w+)/ then
      leading = $2 # ' *    ARGF' in the example above
      re = %r
        \A(
           (^\s*\n)+
           (^#{Regexp.escape leading}.*?\n)+
          )+
        ^\s*$
      %m
      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!(%r^\s*(\S|\n)/, '\1')
    @text.slice! all_start...all_stop
    method.call_seq = seq.chomp
  elsif @text.sub!(%r^\s*:?call-seq:(.*?)(^\s*$|\z)/, '') then
    seq = $1
    seq.gsub!(%r^\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
# File lib/rdoc/comment.rb, line 133
def force_encoding encoding
  @text.force_encoding encoding
end
						Sets the format of this comment and resets any parsed document
# File lib/rdoc/comment.rb, line 140
def format= format
  @format = format
  @document = nil
end
						Normalizes the text. See RDoc::Text#normalize_comment for details
# File lib/rdoc/comment.rb, line 152
def normalize
  return self unless @text
  return self if @normalized # TODO eliminate duplicate normalization
  @text = normalize_comment @text
  @normalized = true
  self
end
						Parses the comment into an RDoc::Markup::Document. The parsed document is cached until the text is changed.
# File lib/rdoc/comment.rb, line 174
def parse
  return @document if @document
  @document = super @text, @format
  @document.file = @location
  @document
end
						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 195
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*(\11))\+\+\n?%, empty)
  @text = @text.sub(%r^\s*[#*]?--.*%, '')
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.
# File lib/rdoc/comment.rb, line 209
def text= text
  raise RDoc::Error, 'replacing document-only comment is not allowed' if
    @text.nil? and @document
  @document = nil
  @text = text
end
						Returns true if this comment is in TomDoc format.
# File lib/rdoc/comment.rb, line 220
def tomdoc?
  @format == 'tomdoc'
end
						| / | Search | 
|---|---|
| ? | Show this help |