The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Data::Page::Pagination - calculates the pagination view

VERSION

0.005

SYNOPSIS

    require Data::Page::Pagination;
    require Data::Page;

    my $p = Data::Page::Pagination->new(
        page         => Data::Page->new(110, 10, 6),
        page_numbers => 11,
    );

    $p->visible_previous_page;    # 5<    ( $p->previous_page )
    $p->visible_first_page;       # 1     ( $p->first_page )
    $p->visible_hidden_previous;  # ..
    @{ $p->previous_pages };      # 3 4 5 ( max_length = $p->max_list_length )
    $p->page->current_page;       # 6     ( $p->current_page )
    @{ $p->next_pages };          # 7 8 9 ( max_length = $p->max_list_length )
    $p->visible_hidden_next,      # ..
    $p->visible_last_page;        # 11    ( $p->last_page )
    $p->visible_next_page;        # >7    ( $p->next_page )

    $p->render_plaintext eq '5< 1 .. 3 4 5 [6] 7 8 9 .. 11 >7';

EXAMPLE

Inside of this Distribution is a directory named example. Run this *.pl files.

DESCRIPTION

This module calculates the pagination view using a Date::Page object. The provided methods are simple enough to use them in a template system.

SUBROUTINES/METHODS

method new

"page_numbers" is the count of pages for directly access.

    my $pagination = Data::Page::Pagination->new(
        page         => Data::Page->new(...),
        page_numbers => $integer_greater_than_2,
    );

method current_page

Returns the number of the current page

    $positive_integer = $pagination->current_page;

method max_list_length

Returns the maximal length of the list that can be left or right of the current page.

    $positive_integer_or_zero = $pagination->max_list_length;

method visible_previous_page, visible_last_page

Returns boolean true if there is a previous/last page.

    $boolean = $pagination->visible_previous_page;
    $boolean = $pagination->visible_last_page;

method previous_page, last_page

Returns the number of the previous/last page.

    $positive_integer = $pagination->previous_page;
    $positive_integer = $pagination->last_page;

method visible_first_page, visible_last_page

Returns boolean true if the current page is not the fist/last page.

    $boolean = $pagination->visible_first_page;
    $boolean = $pagination->visible_last_page;

method first_page, last_page

Returns the number of the first/last page.

    $positive_integer = $pagination->first_page;
    $positive_integer = $pagination->last_page;

method visible_hidden_previous, visible_hidden_next

Returns boolean true if more pages then max_list_length pages are between first/last page and current page.

    $boolean = $pagination->visible_hiddden_previous;
    $boolean = $pagination->visible_hiddden_next;

method previous_pages, next_pages

Returns the page numbers before/after the current page, not more then max_list_length.

    $array_ref = $pagination->previous_pages;
    $array_ref = $pagination->next_pages;

method render_plaintext

Returns the test output.

    $string = $pagination->render_plaintext;

DIAGNOSTICS

Moose exceptions

CONFIGURATION AND ENVIRONMENT

nothing

DEPENDENCIES

Moose

Moose::Util::TypeConstraints

MooseX::StrictConstructor

MooseX::Types::Moose

List::Util

namespace::autoclean

syntax

Syntax::Feature::Method

INCOMPATIBILITIES

none

BUGS AND LIMITATIONS

not known

SEE ALSO

Data::Page

AUTHOR

Steffen Winkler

LICENSE AND COPYRIGHT

Copyright (c) 2012, Steffen Winkler <steffenw at cpan.org>. All rights reserved.

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