Class: RDoc::Comment
Constant Summary
Constants included from Text
Text::MARKUP_FORMAT, Text::SPACE_SEPARATED_LETTER_CLASS, Text::TO_HTML_CHARACTERS
Instance Attribute Summary collapse
- 
  
    
      #document  ⇒ Object 
    
    
  
  
  
  
    
    
      writeonly
    
  
  
  
  
  
  
    
Overrides the content returned by #parse.
 - 
  
    
      #format  ⇒ Object 
    
    
  
  
  
  
    
    
  
  
  
  
  
  
    
The format of this comment.
 - 
  
    
      #line  ⇒ Object 
    
    
  
  
  
  
    
    
  
  
  
  
  
  
    
Line where this Comment was written.
 - 
  
    
      #location  ⇒ Object 
    
    
      (also: #file)
    
  
  
  
  
    
    
  
  
  
  
  
  
    
The RDoc::TopLevel this comment was found in.
 - 
  
    
      #text  ⇒ Object 
    
    
      (also: #to_s)
    
  
  
  
  
    
    
  
  
  
  
  
  
    
The text for this comment.
 
Attributes included from Text
Instance Method Summary collapse
- 
  
    
      #==(other)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
:nodoc:.
 - 
  
    
      #empty?  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    
A comment is empty if its text String is empty.
 - 
  
    
      #encode!(encoding)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
HACK dubious.
 - 
  
    
      #extract_call_seq(method)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Look for a ‘call-seq’ in the comment to override the normal parameter handling.
 - 
  
    
      #initialize(text = nil, location = nil, language = nil)  ⇒ Comment 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    
Creates a new comment with
textthat is found in the RDoc::TopLevellocation. - 
  
    
      #initialize_copy(copy)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
– TODO deep copy @document.
 - 
  
    
      #inspect  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
:nodoc:.
 - 
  
    
      #normalize  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Normalizes the text.
 - 
  
    
      #normalized?  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    
Was this text normalized?.
 - 
  
    
      #parse  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Parses the comment into an RDoc::Markup::Document.
 - 
  
    
      #remove_private  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Removes private sections from this comment.
 - 
  
    
      #tomdoc?  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    
Returns true if this comment is in TomDoc format.
 
Methods included from Text
encode_fallback, #expand_tabs, #flush_left, #markup, #normalize_comment, #snippet, #strip_hashes, #strip_newlines, #strip_stars, #to_html, #wrap
Constructor Details
#initialize(text = nil, location = nil, language = nil) ⇒ Comment
Creates a new comment with text that is found in the RDoc::TopLevel location.
      56 57 58 59 60 61 62 63 64  | 
    
      # File 'lib/rdoc/comment.rb', line 56 def initialize text = nil, location = nil, language = nil @location = location @text = text.nil? ? nil : text.dup @language = language @document = nil @format = 'rdoc' @normalized = false end  | 
  
Instance Attribute Details
#document=(value) ⇒ Object (writeonly)
Overrides the content returned by #parse. Use when there is no #text source for this comment
      50 51 52  | 
    
      # File 'lib/rdoc/comment.rb', line 50 def document=(value) @document = value end  | 
  
#format ⇒ Object
The format of this comment. Defaults to RDoc::Markup
      19 20 21  | 
    
      # File 'lib/rdoc/comment.rb', line 19 def format @format end  | 
  
#line ⇒ Object
Line where this Comment was written
      29 30 31  | 
    
      # File 'lib/rdoc/comment.rb', line 29 def line @line end  | 
  
#location ⇒ Object Also known as: file
The RDoc::TopLevel this comment was found in
      24 25 26  | 
    
      # File 'lib/rdoc/comment.rb', line 24 def location @location end  | 
  
#text ⇒ Object Also known as: to_s
The text for this comment
      39 40 41  | 
    
      # File 'lib/rdoc/comment.rb', line 39 def text @text end  | 
  
Instance Method Details
#==(other) ⇒ Object
:nodoc:
      74 75 76 77  | 
    
      # File 'lib/rdoc/comment.rb', line 74 def == other # :nodoc: self.class === other and other.text == @text and other.location == @location end  | 
  
#empty? ⇒ Boolean
A comment is empty if its text String is empty.
      128 129 130  | 
    
      # File 'lib/rdoc/comment.rb', line 128 def empty? @text.empty? end  | 
  
#encode!(encoding) ⇒ Object
HACK dubious
      135 136 137 138  | 
    
      # File 'lib/rdoc/comment.rb', line 135 def encode! encoding @text = String.new @text, encoding: encoding self end  | 
  
#extract_call_seq(method) ⇒ Object
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
  
      95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123  | 
    
      # File '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  | 
  
#initialize_copy(copy) ⇒ Object
– TODO deep copy @document
      70 71 72  | 
    
      # File 'lib/rdoc/comment.rb', line 70 def initialize_copy copy # :nodoc: @text = copy.text.dup end  | 
  
#inspect ⇒ Object
:nodoc:
      148 149 150 151 152  | 
    
      # File 'lib/rdoc/comment.rb', line 148 def inspect # :nodoc: location = @location ? @location.relative_name : '(unknown)' "#<%s:%x %s %p>" % [self.class, object_id, location, @text] end  | 
  
#normalize ⇒ Object
Normalizes the text. See RDoc::Text#normalize_comment for details
      157 158 159 160 161 162 163 164 165 166  | 
    
      # File 'lib/rdoc/comment.rb', line 157 def normalize return self unless @text return self if @normalized # TODO eliminate duplicate normalization @text = normalize_comment @text @normalized = true self end  | 
  
#normalized? ⇒ Boolean
Was this text normalized?
      171 172 173  | 
    
      # File 'lib/rdoc/comment.rb', line 171 def normalized? # :nodoc: @normalized end  | 
  
#parse ⇒ Object
Parses the comment into an RDoc::Markup::Document. The parsed document is cached until the text is changed.
      179 180 181 182 183 184 185  | 
    
      # File 'lib/rdoc/comment.rb', line 179 def parse return @document if @document @document = super @text, @format @document.file = @location @document end  | 
  
#remove_private ⇒ Object
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
 */
  
      200 201 202 203 204 205 206 207  | 
    
      # File '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  | 
  
#tomdoc? ⇒ Boolean
Returns true if this comment is in TomDoc format.
      225 226 227  | 
    
      # File 'lib/rdoc/comment.rb', line 225 def tomdoc? @format == 'tomdoc' end  |