Data-Page-1.01 > Data::Page

名前

Data::Page - 結果集合に対するページング支援

概要

  use Data::Page;

  my $page = Data::Page->new($total_entries, $entries_per_page, $current_page);

  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";

説明

When searching through large amounts of data, it is often the case that a result set is returned that is larger than we want to display on one page. This results in wanting to page through various pages of data. The maths behind this is unfortunately fiddly, hence this module.

大量のデータを検索する場合、1ページに表示させたい以上に多くの 結果集合が帰ってくることが、しばしばある。この結果、幾ページにも わたるデータを繰る必要が生じる。あいにくと、この作業の背後にある 数学は面倒だ。そこでこのモジュールが登場する。

The main concept is that you pass in the number of total entries, the number of entries per page, and the current page number. You can then call methods to find out how many pages of information there are, and what number the first and last entries on the current page really are.

コンセプトは次の通り。あなたが渡すのは全要素数、1ページあたりの要素数、 そして現在のページだ。すると、インフォメーション用のページが何ページ あるのか、また、実際に現在のページにある最初と最後の要素は何なのかを 知るためのメソッドが呼び出せる。

メソッド

new

This is the constructor. It currently takes two mandatory arguments, the total number of entries and the number of entries per page. It also optionally takes the current page number (which defaults to 1).

これはコンストラクタだ。現在のところ二つの必須の引数、要素全体の数、 ページあたりの要素数をとる。また、オプションとして現在のページ数を とる(デフォルトは1)。

  my $page = Data::Page->new($total_entries, $entries_per_page, $current_page);

  my $page = Data::Page->new(134, 10);

  my $page = Data::Page->new(134, 10, 5);

total_entries

This method returns the total number of entries.

このメソッドは全要素数を返す。

  print "Entries:", $page->total_entries, "\n";

entries_per_page

This method returns the total number of entries per page.

このメソッドはページあたりの全要素数を返す。

  print "Per page:", $page->entries_per_page, "\n";

entries_on_this_page

This methods returns the number of entries on the current page.

このメソッドは現在のページにある要素数を返す。

  print "There are ", $page->entries_on_this_page, " entries displayed\n";

current_page

This method returns the current page number.

このメソッドは現在のページ番号を返す。

  print "Page: ", $page->current_page, "\n";

first_page

This method returns the first page. This is put in for reasons of symmetry with last_page, as it always returns 1.

このメソッドは最初のページを返す。last_pageと対称をなすために 存在し、常に1を返す。

  print "Pages range from: ", $page->first_page, "\n";

last_page

This method returns the total number of pages of information.

このメソッドはインフォメーション用の全ページ数を返す。

  print "Pages range to: ", $page->last_page, "\n";

first

This method returns the number of the first entry on the current page.

このメソッドは現在のページにある最初の要素番号を返す。

  print "Showing entries from: ", $page->first, "\n";

last

This method returns the number of the last entry on the current page.

このメソッドは現在のページにある最後の要素番号を返す。

  print "Showing entries to: ", $page->last, "\n";

previous_page

This method returns the previous page number, if one exists. Otherwise it returns undefined.

このメソッドは、存在していれば前のページ番号を返す。そうでない 場合はundefを返す。

  if ($page->previous_page) {
    print "Previous page number: ", $page->previous_page, "\n";
  }

next_page

This method returns the next page number, if one exists. Otherwise it returns undefined.

このメソッドは、存在していれば次のページ番号を返す。そうでない 場合はundefを返す。

  if ($page->next_page) {
    print "Next page number: ", $page->next_page, "\n";
  }

splice

This method takes in a listref, and returns only the values which are on the current page.

このメソッドはリストリファレンスをとり、現在のページにある値だけを 返す。

  @visible_holidays = $page->splice(\@holidays);

覚書

It has been said before that this code is "too simple" for CPAN, but I must disagree. I have seen people write this kind of code over and over again and they always get it wrong. Perhaps now they will spend more time getting the rest of their code right...

CPANモジュールにしてはこのコードは"単純すぎやしないか"とは、 以前から言われてきたことだ。だが、私は同意しかねる。この種の コードを何度も何度も書いては、いつも間違えている人々を見てきた。 おそらく、こうしている今も彼らはコードを直すために、さらなる時間を 費やしているだろう……

作者

Based on code originally by Leo Lapworth, with many changes added by by Leon Brocard <acme@astray.com>.

著作権

Copyright (C) 2000-2, Leon Brocard

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