Object
A Hunk is a group of Blocks which overlap because of the context surrounding each block. (So if we're not using context, every hunk will contain one block.) Used in the diff program (bin/diff).
Change the "start" and "end" fields to note that context should be added to this hunk
Create a hunk using references to both the old and new data, as well as the piece of data
# File lib/diff/lcs/hunk.rb, line 9 def initialize(data_old, data_new, piece, context, file_length_difference) # At first, a hunk will have just one Block in it @blocks = [ Diff::LCS::Block.new(piece) ] @data_old = data_old @data_new = data_new before = after = file_length_difference after += @blocks[0].diff_size @file_length_difference = after # The caller must get this manually # Save the start & end of each array. If the array doesn't exist # (e.g., we're only adding items in this block), then figure out the # line number based on the line number of the other file and the # current difference in file lengths. if @blocks[0].remove.empty? a1 = a2 = nil else a1 = @blocks[0].remove[0].position a2 = @blocks[0].remove[-1].position end if @blocks[0].insert.empty? b1 = b2 = nil else b1 = @blocks[0].insert[0].position b2 = @blocks[0].insert[-1].position end @start_old = a1 || (b1 - before) @start_new = b1 || (a1 + before) @end_old = a2 || (b2 - after) @end_new = b2 || (a2 + after) self.flag_context = context end
# File lib/diff/lcs/hunk.rb, line 86 def diff(format) case format when :old old_diff when :unified unified_diff when :context context_diff when :ed self when :reverse_ed, :ed_finish ed_diff(format) else raise "Unknown diff format #{format}." end end
# File lib/diff/lcs/hunk.rb, line 103 def each_old(block) @data_old[@start_old .. @end_old].each { |e| yield e } end
Is there an overlap between hunk arg0 and old hunk arg1? Note: if end of old hunk is one less than beginning of second, they overlap
# File lib/diff/lcs/hunk.rb, line 78 def overlaps?(hunk = nil) return nil if hunk.nil? a = (@start_old - hunk.end_old) <= 1 b = (@start_new - hunk.end_new) <= 1 return (a or b) end
Generated with the Darkfish Rdoc Generator 2.