-
-
14 Sep 2008 05:39:26 UTC
- Distribution: Data-SimplePaginator
- Module version: 0.5
- Source (raw)
- Browse (raw)
- Changes
- How to Contribute
- Issues
- Testers (599 / 1 / 0)
- Kwalitee
Bus factor: 0- 30.77% Coverage
- License: perl_5
- Activity
24 month- Tools
- Download (4.21KB)
- MetaCPAN Explorer
- Permissions
- Subscribe to distribution
- Permalinks
- This version
- Latest version
- Dependencies
- unknown
- Reverse dependencies
- CPAN Testers List
- Dependency graph
- NAME
- SYNOPSIS
- DESCRIPTION
- METHODS
- EXAMPLES
- paginate the alphabet into groups of 10 letters each
- print just the first page, A .. J
- print every page
- print just the last page, U .. Z
- add more elements to the paginator
- create a pageset paginator to group pages in sets of 3
- print every page, grouping into pagesets
- print every page, grouping into pagesets, resetting page numbers
- SEE ALSO
- AUTHOR
- COPYRIGHT
- LICENSE
NAME
Data::SimplePaginator - data pagination without assumptions (I think)
SYNOPSIS
my $paginator;
# paginate the alphabet into groups of 10 letters each $paginator = Data::SimplePaginator->new(10); $paginator->data(A..Z); # print the second page (K..T) foreach( $paginator->page(2) ) { print $_; }
DESCRIPTION
This module helps me create pagination without a lot of fuss. I looked at other pagination modules (see also, below) and their interfaces were cumbersome for me.
This module will NOT...
- Keep track of the current page for you
- Screw with your CGI or other environment
- Generate any HTML
- Print to stdout
If you're using Template Toolkit you probably want to use Data::Pageset or Data::SpreadPagination because they have lots of subs that work great with the way TT is set up.
METHODS
new
my $number_per_page = 10;
$paginator = Data::SimplePaginator->new(); $paginator = Data::SimplePaginator->new($number_per_page); $paginator = Data::SimplePaginator->new($number_per_page, A..Z);
Creates a new pagination object to split up data into sets of $number_per_page. Default items per page is 10, and default data is the empty list.
data
my @items = ('orange','apple','banana','...');
$paginator->data( @items ); my @all = $paginator->data;
This method lets you set new data items for the paginator. It stores a shallow copy of the array, not a reference to it.
Return value is the current data array.
size
$paginator->size(15); my $items_per_page = $paginator->size;
This method lets you set the size of the page, a.k.a. the number of items per page.
Return value is the size of the page.
pages
my $number_of_pages = $paginator->pages;
Returns the number of pages based on the data you provide and the number of items per page that you set.
page
my @contents = $paginator->page($number); my @first_page = $paginator->page(1); my @last_page = $paginator->page( $paginator->pages );
The first page is page 1, the last page is number of pages.
Returns items from @list that are on the specified page. If you give an invalid/undefined page number or one that's out of range for your data set, you get an empty list.
EXAMPLES
use Data::SimplePaginator;
paginate the alphabet into groups of 10 letters each
$paginator = Data::SimplePaginator->new(10,A..Z);
print just the first page, A .. J
print "first page: ". join(" ", $paginator->page(1)) . "\n";
print every page
foreach my $page ( 1..$paginator->pages ) { print "page $page: ". join(" ", $paginator->page($page)) . "\n"; }
print just the last page, U .. Z
print "last page: ". join(" ", $paginator->page($paginator->pages)) . "\n";
add more elements to the paginator
$paginator->data( $paginator->data, 1..4, map { lc } A..Z, 5..8 );
create a pageset paginator to group pages in sets of 3
my $pageset = Data::SimplePaginator->new(3, 1..$paginator->pages);
print every page, grouping into pagesets
foreach my $setnum ( 1..$pageset->pages ) { print "pageset $setnum\n"; foreach my $page ( $pageset->page($setnum) ) { print " page $page: ". join(" ", $paginator->page($page)) . "\n"; } }
print every page, grouping into pagesets, resetting page numbers
foreach my $setnum ( 1..$pageset->pages ) { print "pageset $setnum\n"; foreach my $page ( 1..$pageset->page($setnum) ) { print " page $page: ". join(" ", $paginator->page( ($pageset->page($setnum))[$page-1])) . "\n"; } }
SEE ALSO
The other paginators I looked at before deciding to write this one:
AUTHOR
Jonathan Buhacoff <jonathan@buhacoff.net>
COPYRIGHT
Copyright (C) 2004-2008 Jonathan Buhacoff. All rights reserved.
LICENSE
This library is free software and can be modified and distributed under the same terms as Perl itself.
Module Install Instructions
To install Data::SimplePaginator, copy and paste the appropriate command in to your terminal.
cpanm Data::SimplePaginator
perl -MCPAN -e shell install Data::SimplePaginator
For more information on module installation, please visit the detailed CPAN module installation guide.