diff options
author | Jeff King <peff@peff.net> | 2012-02-13 17:33:10 -0500 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2012-02-13 15:57:06 -0800 |
commit | 6463fd7ed189f4100e1102062f29b969384f1436 (patch) | |
tree | 30191df0aeae55632f7ee4a40b26d7d101207698 /contrib | |
parent | diff-highlight: don't highlight whole lines (diff) | |
download | tgif-6463fd7ed189f4100e1102062f29b969384f1436.tar.xz |
diff-highlight: refactor to prepare for multi-line hunks
The current code structure assumes that we will only look at
a pair of lines at any given time, and that the end result
should always be to output that pair. However, we want to
eventually handle multi-line hunks, which will involve
collating pairs of removed/added lines. Let's refactor the
code to return highlighted pairs instead of printing them.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'contrib')
-rwxr-xr-x | contrib/diff-highlight/diff-highlight | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/contrib/diff-highlight/diff-highlight b/contrib/diff-highlight/diff-highlight index 0d8df84a20..279d21181e 100755 --- a/contrib/diff-highlight/diff-highlight +++ b/contrib/diff-highlight/diff-highlight @@ -23,7 +23,7 @@ while (<>) { $window[2] =~ /^$COLOR*\+/ && $window[3] !~ /^$COLOR*\+/) { print shift @window; - show_pair(shift @window, shift @window); + show_hunk(shift @window, shift @window); } else { print shift @window; @@ -48,7 +48,7 @@ if (@window == 3 && $window[1] =~ /^$COLOR*-/ && $window[2] =~ /^$COLOR*\+/) { print shift @window; - show_pair(shift @window, shift @window); + show_hunk(shift @window, shift @window); } # And then flush any remaining lines. @@ -58,7 +58,13 @@ while (@window) { exit 0; -sub show_pair { +sub show_hunk { + my ($a, $b) = @_; + + print highlight_pair($a, $b); +} + +sub highlight_pair { my @a = split_line(shift); my @b = split_line(shift); @@ -106,12 +112,12 @@ sub show_pair { } if (is_pair_interesting(\@a, $pa, $sa, \@b, $pb, $sb)) { - print highlight(\@a, $pa, $sa); - print highlight(\@b, $pb, $sb); + return highlight_line(\@a, $pa, $sa), + highlight_line(\@b, $pb, $sb); } else { - print join('', @a); - print join('', @b); + return join('', @a), + join('', @b); } } @@ -121,7 +127,7 @@ sub split_line { split /($COLOR*)/; } -sub highlight { +sub highlight_line { my ($line, $prefix, $suffix) = @_; return join('', |