X-Git-Url: http://git.shiar.net/perl/list-index.git/blobdiff_plain/df37e7ec6afd25d57679dc37999a36887d2247ca..20b084d596ff3d71a76dbc55a9f458911b4b8415:/lib/List/Index.pm diff --git a/lib/List/Index.pm b/lib/List/Index.pm index e30beef..574613e 100644 --- a/lib/List/Index.pm +++ b/lib/List/Index.pm @@ -28,12 +28,15 @@ sub ranges { while ($offset < @$self) { my $link = substr $self->[$offset], 0, $length; if ($context) { - my $trim = 1; + # take a value slightly before the current offset my $before = $offset > $context ? $self->[$offset - $context] : '.'; + # see how much of it matches the current link + my $trim = 1; for my $match (split //, $before) { scalar $link =~ /\G\Q$match/g or last; $trim++; } + # truncate link upto where the earlier value starts to differ substr($link, $trim) = '' unless $trim > length $link; }