From: Jakub Narebski <jnareb@gmail.com>
To: "Michał Kiedrowicz" <michal.kiedrowicz@gmail.com>
Cc: git@vger.kernel.org, Jeff King <peff@peff.net>
Subject: Re: [PATCH v2 3/8] gitweb: Extract print_sidebyside_diff_lines()
Date: Wed, 28 Mar 2012 15:33:53 +0100 [thread overview]
Message-ID: <201203281633.53916.jnareb@gmail.com> (raw)
In-Reply-To: <1332543417-19664-4-git-send-email-michal.kiedrowicz@gmail.com>
On Fri, 23 Mar 2012, Michał Kiedrowicz wrote:
> Currently, print_sidebyside_diff_chunk() does two things: it
> accumulates diff lines and prints them. Accumulation may be used to
> perform additional operations on diff lines, so it makes sense to split
> these two things. Thus, the code that prints diff lines in a side-by-side
> manner is moved out of print_sidebyside_diff_chunk() to a separate
> subroutine.
>
Right, that is quite sensible.
> The outcome of this patch is that print_sidebyside_diff_chunk() is now
> much shorter and easier to read.
>
Nice effect.
> This is a preparation patch for diff refinement highlightning. It should
> not change the gitweb output, but it slightly changes its behavior.
> Before this commit, context is printed on the class change. Now, it'it
> printed just before printing added and removed lines.
, and at the end
of chunk.
IMVHO such change is irrelevant.
Acked-by: Jakub Narębski <jnareb@gmail.com>
> Signed-off-by: Michał Kiedrowicz <michal.kiedrowicz@gmail.com>
> ---
> gitweb/gitweb.perl | 97 ++++++++++++++++++++++++++++------------------------
> 1 files changed, 52 insertions(+), 45 deletions(-)
Nice code movement.
> diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
> index 1744c40..86d5a02 100755
> --- a/gitweb/gitweb.perl
> +++ b/gitweb/gitweb.perl
> @@ -4998,6 +4998,53 @@ sub git_difftree_body {
> print "</table>\n";
> }
>
> +# Print context lines and then rem/add lines in a side-by-side manner.
> +sub print_sidebyside_diff_lines {
> + my ($ctx, $rem, $add) = @_;
> +
> + # print context block before add/rem block
> + if (@$ctx) {
> + print join '',
> + '<div class="chunk_block ctx">',
> + '<div class="old">',
> + @$ctx,
> + '</div>',
> + '<div class="new">',
> + @$ctx,
> + '</div>',
> + '</div>';
> + }
> +
> + if (!@$add) {
> + # pure removal
> + print join '',
> + '<div class="chunk_block rem">',
> + '<div class="old">',
> + @$rem,
> + '</div>',
> + '</div>';
> + } elsif (!@$rem) {
> + # pure addition
> + print join '',
> + '<div class="chunk_block add">',
> + '<div class="new">',
> + @$add,
> + '</div>',
> + '</div>';
> + } else {
> + # assume that it is change
> + print join '',
> + '<div class="chunk_block chg">',
> + '<div class="old">',
> + @$rem,
> + '</div>',
> + '<div class="new">',
> + @$add,
> + '</div>',
> + '</div>';
> + }
> +}
> +
> sub print_sidebyside_diff_chunk {
> my @chunk = @_;
> my (@ctx, @rem, @add);
> @@ -5024,51 +5071,11 @@ sub print_sidebyside_diff_chunk {
> next;
> }
>
> - ## print from accumulator when type of class of lines change
> - # empty contents block on start rem/add block, or end of chunk
> - if (@ctx && (!$class || $class eq 'rem' || $class eq 'add')) {
> - print join '',
> - '<div class="chunk_block ctx">',
> - '<div class="old">',
> - @ctx,
> - '</div>',
> - '<div class="new">',
> - @ctx,
> - '</div>',
> - '</div>';
> - @ctx = ();
> - }
> - # empty add/rem block on start context block, or end of chunk
> - if ((@rem || @add) && (!$class || $class eq 'ctx')) {
> - if (!@add) {
> - # pure removal
> - print join '',
> - '<div class="chunk_block rem">',
> - '<div class="old">',
> - @rem,
> - '</div>',
> - '</div>';
> - } elsif (!@rem) {
> - # pure addition
> - print join '',
> - '<div class="chunk_block add">',
> - '<div class="new">',
> - @add,
> - '</div>',
> - '</div>';
> - } else {
> - # assume that it is change
> - print join '',
> - '<div class="chunk_block chg">',
> - '<div class="old">',
> - @rem,
> - '</div>',
> - '<div class="new">',
> - @add,
> - '</div>',
> - '</div>';
> - }
> - @rem = @add = ();
> + ## print from accumulator when have some add/rem lines or end
> + # of chunk (flush context lines)
> + if (((@rem || @add) && $class eq 'ctx') || !$class) {
> + print_sidebyside_diff_lines(\@ctx, \@rem, \@add);
> + @ctx = @rem = @add = ();
> }
>
> ## adding lines to accumulator
--
Jakub Narebski
Poland
next prev parent reply other threads:[~2012-03-28 14:34 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-23 22:56 [PATCH v2 0/8] gitweb: Highlight interesting parts of diff Michał Kiedrowicz
2012-03-23 22:56 ` [PATCH v2 1/8] gitweb: esc_html_hl_regions(): Don't create empty <span> elements Michał Kiedrowicz
2012-03-24 18:58 ` Jakub Narebski
2012-03-24 23:38 ` Michał Kiedrowicz
2012-03-29 18:04 ` [PATCH] gitweb: Use descriptive names in esc_html_hl_regions() Michał Kiedrowicz
2012-03-23 22:56 ` [PATCH v2 2/8] gitweb: Pass esc_html_hl_regions() options to esc_html() Michał Kiedrowicz
2012-03-24 19:15 ` Jakub Narebski
2012-03-24 23:31 ` Michał Kiedrowicz
2012-03-23 22:56 ` [PATCH v2 3/8] gitweb: Extract print_sidebyside_diff_lines() Michał Kiedrowicz
2012-03-28 14:33 ` Jakub Narebski [this message]
2012-03-29 17:25 ` Michał Kiedrowicz
2012-03-30 13:37 ` Jakub Narebski
2012-03-23 22:56 ` [PATCH v2 4/8] gitweb: Use print_diff_chunk() for both side-by-side and inline diffs Michał Kiedrowicz
2012-03-28 15:56 ` Jakub Narebski
2012-03-29 17:31 ` Michał Kiedrowicz
2012-03-30 13:34 ` Jakub Narebski
2012-03-30 13:37 ` Michal Kiedrowicz
2012-03-23 22:56 ` [PATCH v2 5/8] gitweb: Move HTML-formatting diff line back to process_diff_line() Michał Kiedrowicz
2012-03-29 16:14 ` Jakub Narebski
2012-03-29 16:49 ` Jakub Narebski
2012-03-29 17:36 ` Michał Kiedrowicz
2012-03-23 22:56 ` [PATCH v2 6/8] gitweb: Push formatting diff lines to print_diff_chunk() Michał Kiedrowicz
2012-03-29 16:59 ` Jakub Narebski
2012-03-29 17:41 ` Michał Kiedrowicz
2012-03-23 22:56 ` [PATCH v2 7/8] gitweb: Highlight interesting parts of diff Michał Kiedrowicz
2012-03-29 19:42 ` Jakub Narebski
2012-03-29 19:59 ` Michał Kiedrowicz
2012-03-23 22:56 ` [PATCH v2 8/8] gitweb: Refinement highlightning in combined diffs Michał Kiedrowicz
2012-03-29 23:37 ` Jakub Narebski
2012-03-30 6:49 ` Michal Kiedrowicz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201203281633.53916.jnareb@gmail.com \
--to=jnareb@gmail.com \
--cc=git@vger.kernel.org \
--cc=michal.kiedrowicz@gmail.com \
--cc=peff@peff.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.