From f467842b8e311a78d9900c4626583fc08a8ce31b Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Fri, 13 Nov 2009 02:24:52 +0100 Subject: [PATCH] XXX: center page distribution Odd items gravitated to later pages, for example a..z: abcdefgh ijklmnopq rstuvwxyz Change initial offset to create a more uniform distribution: abcdefghi jklmnopq rstuvwxyz --- lib/List/Index.pm | 2 +- t/10-ranges.t | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/List/Index.pm b/lib/List/Index.pm index dca0d1f..483d1eb 100644 --- a/lib/List/Index.pm +++ b/lib/List/Index.pm @@ -23,7 +23,7 @@ sub ranges { my $pages = $options->{pages } || 1 + int $#$self / $pagesize; $pagesize = @$self / $pages; - my $offset = $pagesize; + my $offset = $pagesize + .5; my @links = (''); while ($offset < @$self) { my $link = substr $self->[$offset], 0, $length; diff --git a/t/10-ranges.t b/t/10-ranges.t index aa87a87..a1bb115 100644 --- a/t/10-ranges.t +++ b/t/10-ranges.t @@ -14,17 +14,18 @@ my @uniform = 'a'..'z'; ok(my $index = List::Index->new(\@uniform), 'object (single-char values)'); is_deeply(\@uniform, ['a'..'z'], 'original data unaltered'); is_deeply($index->ranges, ['-'], 'single page'); -is_deeply($index->ranges({pages => 3}), [qw(-h i-q r-)], 'given pages'); +is_deeply($index->ranges({pages => 3}), [qw(-i j-q r-)], 'given pages'); is_deeply($index->ranges({pagesize => @uniform / 2.1}), [qw( - -h i-q r- + -i j-q r- )], 'equivalent pagesize'); } { -ok(my $index = List::Index->new(['aa'..'zz', 1..193]), 'non-alphabetic values (uniform)'); +ok(my $index = List::Index->new(['aa'..'zz', 1..202]), 'non-alphabetic values (uniform)'); is_deeply($index->ranges, [qw( - -. . - a-b c-dr ds-fn fo-hk hl-jg jh-k l-m n-o p-qr qs-sn so-uk ul-wg wh-x y- + -. + .-bp bq-dm dn-fi fj-hf hg-i j-k l-m n-os ot-qp qq-sm sn-uj uk-wf wg-x y- + )], 'default ranges'); is_deeply($index->ranges({pagesize => 300}), [qw(-c d-o p-)], 'large pagesize'); } -- 2.30.0