The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Data::Paginator - Pagination with Moose

SYNOPSIS

    use Data::Paginator;

    my $pager = Data::Paginator->new(
        current_page => 1,
        entries_per_page => 10
        total_entries => 100,
    );

    print "First page: ".$page->first_page."\n";
    print "Last page: ".$page->last_page."\n";
    print "First entry on page: ".$page->first."\n";
    print "Last entry on page: ".$page->last."\n";

DESCRIPTION

This is yet another pagination module. It only exists because none of the other pager modules are written using Moose. Sometimes there is a Moose feature – MooseX::Storage, in my case – that you need. It's a pain when you can't use it with an existing module. This module aims to be completely compatible with the venerable Data::Page. In fact, it's a pretty blatant copy of Data::Page, lifting code from some of it's methods.

SETS

This module provides behavior compatible with Data::PageSet, allowing you to break your pagination into sets. For example, if you have a large number of pages to show and would like to allow the user to 'jump' X pages at a time, you can set the pages_per_set attribute to X and populate the links in your pagination control with the values from previous_set and next_set.

ATTRIBUTES

current_page

The current page. Defaults to 1. If you set this value to to a page number lesser than or greater than the range of the pager, then 1 or the last_page will be returned instead. It is safe to pass this numbers like -1000 or 1000 when there are only 3 pages.

entries_per_page

The number of entries per page, required at instantiation.

last_page

Returns the number of the last page. Lazily computed, so do not set.

total_entries

The total number of entries this pager is covering. Required at instantiation.

METHODS

entries_on_this_page

Returns the number of entries on this page.

first

Returns the number of the first entry on the current page.

first_page

Always returns 1.

first_set

Returns 1 if this Paginator has pages_per_set. Otherwise returns undef.

last

Returns the number of the last entry on the current page.

last_set

Returns the number of the last set if this Paginator has pages_per_set. Otherwise returns undef.

next_page

Returns the page number of the next page if one exists, otherwise returns false.

next_set

Returns the number of the next set or undefined if there is no next.

page_for ($count)

Returns the page number that the $count item appears on. Returns undef if $count is outside the bounds of this Paginator.

previous_page

Returns the page number of the previous page if one exists, otherwise returns undef.

previous_set

Returns the set number of the previous set or undefined if there is no previous set.

set_for $page

Returns the set number of the specified page. Returns undef if the page exceeds the bounds of the Paginator.

skip

This method is useful paging through data in a database using SQL LIMIT clauses. It is simply $page->first - 1:

splice

Takes in an arrayref and returns only the valies which are on the current page.

AUTHOR

Cory G Watson, <gphat at cpan.org>

ACKNOWLEDGEMENTS

Léon Brocard and his work on Data::Page.

COPYRIGHT & LICENSE

Copyright 2009 Cory G Watson.

This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.

See http://dev.perl.org/licenses/ for more information.

1 POD Error

The following errors were encountered while parsing the POD:

Around line 244:

Non-ASCII character seen before =encoding in '–'. Assuming UTF-8