NAME
Data::Pageset::Exponential - Page numbering for very large page numbers
VERSION
version v0.3.1
SYNOPSIS
my $pager = Data::Pageset::Exponential->new(
total_entries => $total_entries,
entries_per_page => $per_page,
);
$pager->current_page( 1 );
my $pages = $pager->pages_in_set;
# Returns
# [ 1, 2, 3, 10, 20, 30, 100, 200, 300, 1000, 2000, 3000 ]
DESCRIPTION
This is a pager designed for paging through resultsets that contain hundreds if not thousands of pages.
The interface is similar to Data::Pageset with sliding pagesets.
ATTRIBUTES
total_entries
This is the total number of entries.
It is a read/write attribute.
entries_per_page
This is the total number of entries per page. It defaults to 10
.
It is a read/write attribute.
first_page
This returns the first page. It defaults to 1
.
current_page
This is the current page number. It defaults to the "first_page".
It is a read/write attribute.
exponent_base
This is the base exponent for page sets. It defaults to 10
.
exponent_max
This is the maximum exponent for page sets. It defaults to 3
, for pages in the thousands.
It should not be greater than
ceil( log( $total_pages ) / log(10) )
however, larger numbers will increase the size of "pages_in_set".
pages_per_exponent
This is the number of pages per exponent. It defaults to 3
.
pages_per_set
This is the maximum number of pages in "pages_in_set". It defaults to
1 + 2 * ( $pages_per_exponent * ( $exponent_max + 1 ) - 1 )
which for the default values is 23.
This should be an odd number.
This was renamed from "max_pages_per_set" in v0.3.0.
max_pages_per_set
This is a deprecated alias for "pages_per_set".
METHODS
entries_on_this_page
Returns the number of entries on the page.
last_page
Returns the number of the last page.
first
Returns the index of the first entry on the "current_page".
last
Returns the index of the last entry on the "current_page".
previous_page
Returns the number of the previous page.
next_page
Returns the number of the next page.
pages_in_set
Returns an array reference of pages in the page set.
previous_set
This returns the first page number of the previous page set, for the first exponent.
It is added for compatability with Data::Pageset.
next_set
This returns the first page number of the next page set, for the first exponent.
It is added for compatability with Data::Pageset.
KNOWN ISSUES
Differences with Data::Page
This module is intended as a drop-in replacement for Data::Page. However, it is based on a complete rewrite of Data::Page using Moo, rather than extending it. Because of that, it needs to fake @ISA
. This may break some applications.
Otherwise, it has the following differences:
The attributes have type constraints. Invalid data may throw a fatal error instead of being ignored.
Setting the "current_page" to a value outside the "first_page" or "last_page" will return the first or last page, instead of that value.
Differences with Data::Pageset
This module can behave like Data::Pageset in slide
mode if the exponent is set to 1
:
my $pager = Data::Pageset::Exponential->new(
exponent_max => 1,
pages_per_exponent => 10,
pages_per_set => 10,
);
SEE ALSO
SOURCE
The development version is on github at https://github.com/robrwo/Data-Pageset-Exponential and may be cloned from git://github.com/robrwo/Data-Pageset-Exponential.git
BUGS
Please report any bugs or feature requests on the bugtracker website https://github.com/robrwo/Data-Pageset-Exponential/issues
When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.
AUTHOR
Robert Rothenberg <rrwo@cpan.org>
Test code was adapted from Data::Page to ensure compatability.
COPYRIGHT AND LICENSE
This software is Copyright (c) 2018-2019 by Robert Rothenberg.
This is free software, licensed under:
The Artistic License 2.0 (GPL Compatible)