class RDoc::Comment

def == other # :nodoc:

:nodoc:
def == other # :nodoc:
  self.class === other and
    other.text == @text and other.location == @location
end

def empty?

def empty?
  @text.empty?
end

def encode! encoding

def encode! encoding
  @text = String.new @text, encoding: encoding
  self
end

def extract_call_seq method

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

def format= format

def format= format
  @format = format
  @document = nil
end

def initialize text = nil, location = nil, language = nil

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

def initialize_copy copy # :nodoc:

:nodoc:
def initialize_copy copy # :nodoc:
  @text = copy.text.dup
end

def inspect # :nodoc:

:nodoc:
def inspect # :nodoc:
  location = @location ? @location.relative_name : '(unknown)'
  "#<%s:%x %s %p>" % [self.class, object_id, location, @text]
end

def normalize

def normalize
  return self unless @text
  return self if @normalized # TODO eliminate duplicate normalization
  @text = normalize_comment @text
  @normalized = true
  self
end

def normalized? # :nodoc:

:nodoc:
def normalized? # :nodoc:
  @normalized
end

def parse

def parse
  return @document if @document
  @document = super @text, @format
  @document.file = @location
  @document
end

def remove_private

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

def text= text

def text= text
  raise RDoc::Error, 'replacing document-only comment is not allowed' if
    @text.nil? and @document
  @document = nil
  @text = text.nil? ? nil : text.dup
end

def tomdoc?

def tomdoc?
  @format == 'tomdoc'
end