Data::Pageset::Exponential - Page numbering for very large page numbers
version v0.2.0
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 ]
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.
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.
10
first_page
This returns the first page. It defaults to 1.
1
current_page
This is the current page number. It defaults to the "first_page".
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.
3
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.
max_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.
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.
This module 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.
@ISA
Data::Page
Data::Pageset
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
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.
Robert Rothenberg <rrwo@cpan.org>
Test code was adapted from Data::Page to ensure compatability.
This software is Copyright (c) 2018-2019 by Robert Rothenberg.
This is free software, licensed under:
The Artistic License 2.0 (GPL Compatible)
To install Data::Pageset::Exponential, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Data::Pageset::Exponential
CPAN shell
perl -MCPAN -e shell install Data::Pageset::Exponential
For more information on module installation, please visit the detailed CPAN module installation guide.