class Rcov::RubyAnnotation

:nodoc:

def create_cross_reference_block(linetext, ref_blocks, marked)

def create_cross_reference_block(linetext, ref_blocks, marked)
  codelen = 75
  if ref_blocks.empty?
    if marked
      return "%-#{codelen}s #o" % linetext
    else
      return linetext
    end
  end
  ret = ""
  @cross_ref_idx ||= 0
  @known_files ||= sorted_file_pairs.map{|fname, finfo| normalize_filename(fname)}
  ret << "%-#{codelen}s # " % linetext
  ref_blocks.each do |refs, toplabel, label_proc|
    unless !toplabel || toplabel.empty?
      ret << toplabel << " "
    end
    refs.each do |dst|
      dstfile = normalize_filename(dst.file) if dst.file
      dstline = dst.line
      label = label_proc.call(dst)
      if dst.file && @known_files.include?(dstfile)
        ret << "[[" << label << "]], "
      else
        ret << label << ", "
      end
    end
  end
  ret
end

def create_cross_refs(filename, lineno, linetext, marked)

def create_cross_refs(filename, lineno, linetext, marked)
  return linetext unless @callsite_analyzer && @do_callsites
  ref_blocks = []
  _get_defsites(ref_blocks, filename, lineno, linetext, ">>") do |ref|
    if ref.file
      ref.file.sub!(%r!^./!, '')
      where = "at #{mangle_filename(ref.file)}:#{ref.line}"
    else
      where = "(C extension/core)"
    end
    "#{ref.klass}##{ref.mid} " + where + ""
  end
  _get_callsites(ref_blocks, filename, lineno, linetext, "<<") do |ref| # "
    ref.file.sub!(%r!^./!, '')
    "#{mangle_filename(ref.file||'C code')}:#{ref.line} " + "in #{ref.klass}##{ref.mid}"
  end
  create_cross_reference_block(linetext, ref_blocks, marked)
end

def create_file(destfile, fileinfo)

def create_file(destfile, fileinfo)
  #body = format_lines(fileinfo)
  #File.open(destfile, "w") do |f|
    #f.puts body
    #f.puts footer(fileinfo)
  #end
end

def execute

def execute
  return if @files.empty?
  FileUtils.mkdir_p @dest
  each_file_pair_sorted do |filename, fileinfo|
    create_file(File.join(@dest, mangle_filename(filename)), fileinfo)
  end
end

def footer(fileinfo)

def footer(fileinfo)
  s  = "# Total lines    : %d\n" % fileinfo.num_lines
  s << "# Lines of code  : %d\n" % fileinfo.num_code_lines
  s << "# Total coverage : %3.1f%%\n" % [ fileinfo.total_coverage*100 ]
  s << "# Code coverage  : %3.1f%%\n\n" % [ fileinfo.code_coverage*100 ]
  # prevents false positives on Emacs
  s << "# Local " "Variables:\n" "# mode: " "rcov-xref\n" "# End:\n"
end

def format_lines(file)

def format_lines(file)
  result = ""
  format_line = "%#{file.num_lines.to_s.size}d"
  file.num_lines.times do |i|
    line = file.lines[i].chomp
    marked = file.coverage[i]
    count = file.counts[i]
    result << create_cross_refs(file.name, i+1, line, marked) + "\n"
  end
  result
end

def initialize(opts = {})

def initialize(opts = {})
  options = DEFAULT_OPTS.clone.update(opts)
  super(options)
  @dest = options[:destdir]
  @do_callsites = true
  @do_cross_references = true
  @mangle_filename = Hash.new{ |h,base|
    h[base] = Pathname.new(base).cleanpath.to_s.gsub(%r{^\w:[/\\]}, "").gsub(/\./, "_").gsub(/[\\\/]/, "-") + ".rb"
  }
end