X-Git-Url: http://git.shiar.net/gitweb.cgi/perl/list-index.git/blobdiff_plain/356b069f60818a6ef5f0f8cf97a78924675c2c5b..0f46a9fa54c9ecca0f0c3180b51f7c3079d048a8:/lib/List/Index.pm diff --git a/lib/List/Index.pm b/lib/List/Index.pm index bf4e04d..ea7b433 100644 --- a/lib/List/Index.pm +++ b/lib/List/Index.pm @@ -24,7 +24,7 @@ sub ranges { $pagesize = @$self / $pages; my $offset = $pagesize; - my @links = (['']); + my @links = (''); while ($offset < @$self) { my $link = substr $self->[$offset], 0, $length; if ($context) { @@ -57,17 +57,19 @@ sub ranges { } } - push @links, [$link]; + push @links, $link; $offset += $pagesize; } + use List::MoreUtils 'uniq'; + @links = uniq @links; for my $i (0 .. $#links - 1) { - my ($link, $lastchar) = $links[$i + 1]->[0] =~ /(.*)(.)/; + my ($link, $lastchar) = $links[$i + 1] =~ /(.*)(.)/; $link .= $lastchar le 'a' ? '.' : chr( ord($lastchar) - 1 ); - next if $link eq $links[$i]->[0] and $i; - $links[$i]->[1] = $link; + next if $link eq $links[$i] and $i; + $links[$i] .= '-'.$link; } - $links[-1]->[1] = ''; + $links[-1] .= '-'; return \@links; }