git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jakub Narebski <jnareb@gmail.com>
To: git@vger.kernel.org
Cc: Jean-Baptiste Quenot <jbq@caraldi.com>,
	Junio C Hamano <gitster@pobox.com>,
	Jakub Narebski <jnareb@gmail.com>
Subject: [PATCH] gitweb: Better chopping in commit search results
Date: Fri, 22 Feb 2008 17:33:47 +0100	[thread overview]
Message-ID: <20080222163035.5942.93410.stgit@localhost.localdomain> (raw)
In-Reply-To: <7vbq6kprql.fsf@gitster.siamese.dyndns.org>


From: Junio C Hamano <gitster@pobox.com>
Subject: [PATCH] gitweb: Better chopping in commit search results

When searching commit messages (commit search), if matched string is
too long, the generated HTML was munged leading to an ill-formed XHTML
document.

Now gitweb chop leading, trailing and matched parts, HTML escapes
those parts, then composes and marks up match info.  HTML output is
never chopped.  Limiting matched info to 80 columns (with slop) is now
done by dividing remaining characters after chopping match equally to
leading and trailing part, not by chopping composed and HTML marked
output.

Noticed-by: Jean-Baptiste Quenot <jbq@caraldi.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Jakub Narebski <jnareb@gmail.com>
---
This is just slightly reworked Junio's patch; probably should be 
marked as from Junio, so I'm trying to send it as it.

Strange that StGit always sends patches (stg mail) as if repo owner
was their author, regardless of path/commit author (I think; unless
"stg edit" cannot change authorship).

 gitweb/gitweb.perl |   24 +++++++++++++++---------
 1 files changed, 15 insertions(+), 9 deletions(-)


diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index 8ed6d04..326e27c 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -3784,18 +3784,24 @@ sub git_search_grep_body {
 		print "<td title=\"$co{'age_string_age'}\"><i>$co{'age_string_date'}</i></td>\n" .
 		      "<td><i>" . $author . "</i></td>\n" .
 		      "<td>" .
-		      $cgi->a({-href => href(action=>"commit", hash=>$co{'id'}), -class => "list subject"},
-			       chop_and_escape_str($co{'title'}, 50) . "<br/>");
+		      $cgi->a({-href => href(action=>"commit", hash=>$co{'id'}),
+		               -class => "list subject"},
+		              chop_and_escape_str($co{'title'}, 50) . "<br/>");
 		my $comment = $co{'comment'};
 		foreach my $line (@$comment) {
 			if ($line =~ m/^(.*)($search_regexp)(.*)$/i) {
-				my $lead = esc_html($1) || "";
-				$lead = chop_str($lead, 30, 10);
-				my $match = esc_html($2) || "";
-				my $trail = esc_html($3) || "";
-				$trail = chop_str($trail, 30, 10);
-				my $text = "$lead<span class=\"match\">$match</span>$trail";
-				print chop_str($text, 80, 5) . "<br/>\n";
+				my ($lead, $match, $trail) = ($1, $2, $3);
+				$match = chop_str($match, 70, 5);       # in case match is very long
+				my $contextlen = (80 - len($match))/2;  # is left for the remainder
+				$contextlen = 30 if ($contextlen > 30); # but not too much
+				$lead  = chop_str($lead,  $contextlen, 10);
+				$trail = chop_str($trail, $contextlen, 10);
+
+				$lead  = esc_html($lead);
+				$match = esc_html($match);
+				$trail = esc_html($trail);
+
+				print "$lead<span class=\"match\">$match</span>$trail<br />";
 			}
 		}
 		print "</td>\n" .

  reply	other threads:[~2008-02-22 16:35 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-02-13 17:37 [PATCH] Do not chop HTML tags in commit search result Jean-Baptiste Quenot
2008-02-13 19:16 ` Jakub Narebski
2008-02-13 19:43 ` Junio C Hamano
2008-02-22 16:33   ` Jakub Narebski [this message]
2008-02-22 17:14     ` [PATCH] gitweb: Better chopping in commit search results Junio C Hamano
2008-02-22 17:49       ` Jakub Narebski
2008-02-22 19:14         ` Jakub Narebski
2008-02-23 21:44           ` [RFC/PATCH] gitweb: Option to chop at beginning and in the middle in chop_str Jakub Narebski
2008-02-23 22:04           ` [PATCH] gitweb: Better chopping in commit search results Junio C Hamano
2008-02-23 23:36             ` Jakub Narebski
2008-02-24 13:01           ` [RFC/PATCH v2] gitweb: Option to chop at beginning and in the middle in chop_str Jakub Narebski
2008-02-25  1:46             ` Junio C Hamano
2008-02-25 20:07               ` [RFC/PATCH v3] gitweb: Better cutting matched string and its context Jakub Narebski
2008-02-25 20:18                 ` Junio C Hamano
2008-02-23  9:27     ` [PATCH] gitweb: Better chopping in commit search results Karl Hasselström
2008-02-23 10:20       ` Jakub Narebski

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=20080222163035.5942.93410.stgit@localhost.localdomain \
    --to=jnareb@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=jbq@caraldi.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).