Module: Groonga::Pagination
- Defined in:
- lib/groonga/pagination.rb
Overview
ページネーション機能を追加するモジュール。
ページ番号やレコードが何番目かは0ベースではなく1ベースで あることに注意すること。
Instance Attribute Summary collapse
-
#current_page ⇒ Object
readonly
現在のページ番号。.
-
#n_pages ⇒ Object
readonly
全ページ数。.
-
#n_records ⇒ Object
readonly
全レコード数。.
-
#page_size ⇒ Object
readonly
1ページあたりのレコード数。.
Instance Method Summary collapse
-
#end_offset ⇒ Object
現在のページに含まれているレコードのうち、最後のレコー ドが何番目のレコードかを返す。0ベースではなく1ベースで あることに注意。つまり、最初のレコードは0番目のレコー ドではなく、1番目のレコードになる。.
-
#first_page ⇒ Object
最初のページ番号。常に1を返す。.
-
#first_page? ⇒ Boolean
現在のページが最初のページなら +true+ を返す。.
-
#have_next_page? ⇒ Boolean
次のページがあるなら +true+ を返す。.
-
#have_pages? ⇒ Boolean
2ページ以上ある場合は +true+ を返す。.
-
#have_previous_page? ⇒ Boolean
前のページがあるなら +true+ を返す。.
-
#last_page ⇒ Object
最後のページ番号。.
-
#last_page? ⇒ Boolean
現在のページが最後のページなら +true+ を返す。.
-
#n_records_in_page ⇒ Object
1ページあたりのレコード数を返す。.
-
#next_page ⇒ Object
次のページ番号を返す。次のページがない場合は +nil+ を返す。.
-
#pages ⇒ Object
最初のページから最後のページまでを含んだRangeを返す。.
-
#previous_page ⇒ Object
前のページ番号を返す。前のページがない場合は +nil+ を返す。.
-
#start_offset ⇒ Object
現在のページに含まれているレコードのうち、先頭のレコー ドが何番目のレコードかを返す。0ベースではなく1ベースで あることに注意。つまり、最初のレコードは0番目のレコー ドではなく、1番目のレコードになる。.
Instance Attribute Details
#current_page ⇒ Object (readonly)
現在のページ番号。
145 146 147 |
# File 'lib/groonga/pagination.rb', line 145 def current_page @current_page end |
#n_pages ⇒ Object (readonly)
全ページ数。
149 150 151 |
# File 'lib/groonga/pagination.rb', line 149 def n_pages @n_pages end |
#n_records ⇒ Object (readonly)
全レコード数。
151 152 153 |
# File 'lib/groonga/pagination.rb', line 151 def n_records @n_records end |
#page_size ⇒ Object (readonly)
1ページあたりのレコード数。
147 148 149 |
# File 'lib/groonga/pagination.rb', line 147 def page_size @page_size end |
Instance Method Details
#end_offset ⇒ Object
現在のページに含まれているレコードのうち、最後のレコー ドが何番目のレコードかを返す。0ベースではなく1ベースで あることに注意。つまり、最初のレコードは0番目のレコー ドではなく、1番目のレコードになる。
レコードが1つもない場合は +nil+ を返す。
222 223 224 225 |
# File 'lib/groonga/pagination.rb', line 222 def end_offset return nil if @n_records.zero? [start_offset + @page_size - 1, @n_records].min end |
#first_page ⇒ Object
最初のページ番号。常に1を返す。
159 160 161 |
# File 'lib/groonga/pagination.rb', line 159 def first_page 1 end |
#first_page? ⇒ Boolean
現在のページが最初のページなら +true+ を返す。
164 165 166 |
# File 'lib/groonga/pagination.rb', line 164 def first_page? @current_page == first_page end |
#have_next_page? ⇒ Boolean
次のページがあるなら +true+ を返す。
179 180 181 |
# File 'lib/groonga/pagination.rb', line 179 def have_next_page? @current_page < @n_pages end |
#have_pages? ⇒ Boolean
2ページ以上ある場合は +true+ を返す。
154 155 156 |
# File 'lib/groonga/pagination.rb', line 154 def have_pages? @n_pages > 1 end |
#have_previous_page? ⇒ Boolean
前のページがあるなら +true+ を返す。
190 191 192 |
# File 'lib/groonga/pagination.rb', line 190 def have_previous_page? @current_page > 1 end |
#last_page ⇒ Object
最後のページ番号。
169 170 171 |
# File 'lib/groonga/pagination.rb', line 169 def last_page @n_pages end |
#last_page? ⇒ Boolean
現在のページが最後のページなら +true+ を返す。
174 175 176 |
# File 'lib/groonga/pagination.rb', line 174 def last_page? @current_page == last_page end |
#n_records_in_page ⇒ Object
1ページあたりのレコード数を返す。
201 202 203 |
# File 'lib/groonga/pagination.rb', line 201 def n_records_in_page size end |
#next_page ⇒ Object
次のページ番号を返す。次のページがない場合は +nil+ を返す。
185 186 187 |
# File 'lib/groonga/pagination.rb', line 185 def next_page have_next_page? ? @current_page + 1 : nil end |
#pages ⇒ Object
最初のページから最後のページまでを含んだRangeを返す。
231 232 233 |
# File 'lib/groonga/pagination.rb', line 231 def pages first_page..last_page end |
#previous_page ⇒ Object
前のページ番号を返す。前のページがない場合は +nil+ を返す。
196 197 198 |
# File 'lib/groonga/pagination.rb', line 196 def previous_page have_previous_page? ? @current_page - 1 : nil end |
#start_offset ⇒ Object
現在のページに含まれているレコードのうち、先頭のレコー ドが何番目のレコードかを返す。0ベースではなく1ベースで あることに注意。つまり、最初のレコードは0番目のレコー ドではなく、1番目のレコードになる。
レコードが1つもない場合は +nil+ を返す。
211 212 213 214 |
# File 'lib/groonga/pagination.rb', line 211 def start_offset return nil if @n_records.zero? 1 + (@current_page - 1) * @page_size end |