class Diff::LCS::Hunk

def context_diff

def context_diff
  s = "***************\n"
  s << "*** #{context_range(:old)} ****\n"
  r = context_range(:new)
  # Print out file 1 part for each block in context diff format if there
  # are any blocks that remove items
  lo, hi = @start_old, @end_old
  removes = @blocks.select { |e| not e.remove.empty? }
  if removes
    outlist = @data_old[lo .. hi].collect { |e| e.gsub(/^/, '  ') }
    removes.each do |block|
      block.remove.each do |item|
        outlist[item.position - lo].gsub!(/^ /) { block.op } # - or !
      end
    end
    s << outlist.join("\n")
  end
  s << "\n--- #{r} ----\n"
  lo, hi = @start_new, @end_new
  inserts = @blocks.select { |e| not e.insert.empty? }
  if inserts
    outlist = @data_new[lo .. hi].collect { |e| e.gsub(/^/, '  ') }
    inserts.each do |block|
      block.insert.each do |item|
        outlist[item.position - lo].gsub!(/^ /) { block.op } # + or !
      end
    end
    s << outlist.join("\n")
  end
  s
end