1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
package Data::Page::Pageset::Chunk;
use Carp;
use strict;
use base 'Class::Accessor::Fast';
use overload
'""' => sub { shift->as_string };
__PACKAGE__->mk_accessors( qw( first last pages is_current ) );
our $VERSION = sprintf "%d.%02d", q$Revision: 1.2 $ =~ /: (\d+)\.(\d+)/;
sub new {
my $class = shift;
my @array = @_;
my $self = bless {}, $class;
$self->first( $array[0] );
$self->last( $array[-1] );
$self->pages( $#array + 1 );
$self->is_current(0);
return $self;
}
sub middle {
my $self = shift;
my $pages = $self->pages;
$pages++ if $pages % 2;
return $self->first + $pages / 2;
}
sub as_string {
my $self = shift;
my $sep = shift || '-';
my $string = ( $self->first == $self->last )
? $self->first
: join ("$sep", $self->first, $self->last );
return $string;
}
1;
|