class Diff::LCS::Hunk

def context_diff

def context_diff
  s = encode("***************\n")
  s << encode("*** #{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.reject { |e| e.remove.empty? }
  if removes
    outlist = @data_old[lo..hi].map { |e| e.insert(0, encode(' ')) }
    removes.each do |block|
      block.remove.each do |item|
        outlist[item.position - lo].insert(0, encode(block.op)) # - or !
      end
    end
    s << outlist.join("\n")
  end
  s << encode("\n--- #{r} ----\n")
  lo, hi = @start_new, @end_new
  inserts = @blocks.reject { |e| e.insert.empty? }
  if inserts
    outlist = @data_new[lo..hi].collect { |e| e.insert(0, encode(' ')) }
    inserts.each do |block|
      block.insert.each do |item|
        outlist[item.position - lo].insert(0, encode(block.op)) # - or !
      end
    end
    s << outlist.join("\n")
  end
  s
end