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