git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] gitweb: Better chopping in commit search results

From
Junio C Hamano <gitster@pobox.com>
Date
Feb 23, 2008, 22:04 UTC
Message-ID
<7vd4qn1ga2.fsf@gitster.siamese.dyndns.org>
In-Reply-To
<200802222014.13205.jnareb@gmail.com>
Jakub Narebski <jnareb@gmail.com> writes:
> 	# regexps: ending and beginning with word part up to $add_len
> 	my $endre = qr/.{0,$len}[^ \/\-_:\.@]{0,$add_len}/;
> 	my $begre = qr/[^ \/\-_:\.@]{0,$add_len}.{0,$len}/;

I have no idea what these line noise characters inside [] are. Did you mean something like "\w"?

I have a suspicion that it may be easier to read and could be even more efficient to split an overlong line at word boundaries and to remove elements from the end you are removing from until it fits.

sub chop_whence {
	my ($line, $max, $slop, $where) = @_;
	my $len = length($line);
	if ($len < $max + $slop) {
		return $line;
	}
	# Cut at word boundaries
	my @split = split(/\b/, $line);
	my $filler = "...";
	while ((2 < @split)) {
		my $removed;
		my $splice_at;
		if ($where eq 'left') {
			$removed = shift @split;
		} elsif ($where eq 'right') {
			$removed = pop @split;
		} else {
			my $splice_at = int($#split / 2);
			$removed = splice(@split, $splice_at, 1);
		}
		$len -= length($removed) + length($filler);
		if ($len < $max + $slop) {
			if ($where eq 'left') {
				unshift @split, $filler;
			} elsif ($where eq 'right') {
				push @split, $filler;
			} else {
				my $splice_at = int($#split / 2);
				splice(@split, $splice_at, 0, $filler);
			}
			return join('', @split);
		}
	}
	# give up
	return $line;
}
Previous: Jakub NarebskiNext: Jakub Narebski
Message 9 of 16 in “Do not chop HTML tags in commit search result”
  1. Do not chop HTML tags in commit search resultJean-Baptiste Quenot, Feb 13, 2008
  2. Jakub NarebskiFeb 13, 2008
  3. Junio C HamanoFeb 13, 2008
  4. gitweb: Better chopping in commit search resultsJakub Narebski, Feb 22, 2008
  5. Junio C HamanoFeb 22, 2008
  6. Jakub NarebskiFeb 22, 2008
  7. Jakub NarebskiFeb 22, 2008
  8. gitweb: Option to chop at beginning and in the middle in chop_strJakub Narebski, Feb 23, 2008
  9. Junio C HamanoFeb 23, 2008
  10. Jakub NarebskiFeb 23, 2008
  11. gitweb: Option to chop at beginning and in the middle in chop_strJakub Narebski, Feb 24, 2008
  12. Junio C HamanoFeb 25, 2008
  13. gitweb: Better cutting matched string and its contextJakub Narebski, Feb 25, 2008
  14. Junio C HamanoFeb 25, 2008
  15. Karl HasselströmFeb 23, 2008
  16. Jakub NarebskiFeb 23, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.