The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
NAME
    WWW::Ruler - a helper for building rulers for visual presentation (in
    WWW applictions for example)

SYNOPSIS
    Now this module is beta. Not all documentation is finished yet.

        use WWW::Ruler;

        my $ruler = WWW::Ruler->new( page_size => $page_size, ruler_size => 15 );

        # $page_number - a number of current page
        # $array_length - a dimension of array of data
        my $piece = $ruler->cut_off( page_number => $page_number, amount => $array_length );

        # Detail in manual WWW::Ruler::Piece(3)
        $piece->outside;                    # true if piece are located outside of array of data. You can test before next methods
        $ruler_array = $piece->ruler;       # An array of ruler items for drawing
        $start_index = $piece->start;       # A start index of array (a base is zero) for cutting
        $end_index   = $piece->end;         # An end index  of array (a base is zero) for cutting
        $size        = $piece->size;        # A size (dimension) of piece of current page.

DESCRIPTION
    This class will help to make a ruler with a following layouts and
    calculate start and end indices. Ruler can look like these examples:

    [ << ] [ 1 ] [ ... ] [ 4 ] [ 5 ] ( 6 ) [ 7 ] [ 8 ] [ ... ] [ 999 ]
    [ >> ]

    [ 1 ] [ 4 ] [ 5 ] ( 6 ) [ 7 ] [ 8 ] [ ... ] [ 999 ] [ >> ]

    [ << ] [ 1 ] [ ... ] [ 4 ] [ 5 ] ( 6 ) [ 7 ] [ 8 ] [ >> ]

    Here ( 1 ) and ( 6 ) are "current" pages. A [ << ], [ >> ] and [ DIGIT ]
    - linked buttons for other pages for example. And the [ ... ] is an
    ellipse figure of span between page numbers (not linked).

CONSTRUCTOR
        $ruler = WWW::Ruler->new( page_size => $page_size, ruler_size => 15 );
        $ruler = WWW::Ruler->new;

    You can construct object with and without options.

OPTIONS
    These options can be passed in "new" and "cut_off" methods. Options in
    "cut_off" method redefine constructor's options.

    page_size
        Number. How many do you have items in one page?

    ruler_size
        A desired maximum number of buttons (not included button [<<], [>>]
        and [...]). It is only desired amount! Please notice that real items
        in ruler can be up 3-4 items! It option will be improved in next
        versions.

    page_number
        A current number of page for which this ruler to be builded. It
        starts from 1.

    amount
        An amount of items in whole array.

METHODS
    new( %opts )
        The constructor. The %opts are optional. Any options can be
        redefined in "cut_off" method.

    cut_off ( %opts )
        This method makes virtual *cut off* of array and contructs array of
        ruler items. Any options passed into this method redefine options of
        constructor (to see "SYNOPSIS").

        Returns an instance of WWW::Ruler::Piece object. You can test a
        validation of piece bounds by "outside" in WWW::Ruler::Piece method.

AUTHOR
    This module has been written by Perlover <perlover@perlover.com>

LICENSE
    This module is free software and is published under the same terms as
    Perl itself.