---
name: "Data::Paginator"
section: "3pm"
platform: "linux"
package: "libdata-paginator-perl"
version: "0.08-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Data::Paginator"
---

# Data::Paginator(3pm)

Pagination with Moose

## NAME

Data::Paginator - Pagination with Moose

## VERSION

version 0.08

## SYNOPSIS

```
    use Data::Paginator;
    my $pager = Data::Paginator->new(
        current_page => 1,
        entries_per_page => 10,
        total_entries => 100,
    );
    print "First page: ".$pager->first_page."\n";
    print "Last page: ".$pager->last_page."\n";
    print "First entry on page: ".$pager->first."\n";
    print "Last entry on page: ".$pager->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.

### next\_set

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

### pages\_per\_set

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"`.

### previous\_set

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

### total\_entries

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

### first

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

### first\_page

Always returns 1.

## METHODS

### entries\_on\_this\_page

Returns the number of entries on this page.

### 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.

### next\_page

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

### 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.

### set\_for $page

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

### splice

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

## ACKNOWLEDGEMENTS

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

## AUTHOR

Cory G Watson \<gphat@cpan.org\>

## COPYRIGHT AND LICENSE

This software is copyright (c) 2014 by Cory G Watson.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
