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)
現在のページ番号。
139 140 141 |
# File 'lib/groonga/pagination.rb', line 139 def current_page @current_page end |
#n_pages ⇒ Object (readonly)
全ページ数。
143 144 145 |
# File 'lib/groonga/pagination.rb', line 143 def n_pages @n_pages end |
#n_records ⇒ Object (readonly)
全レコード数。
145 146 147 |
# File 'lib/groonga/pagination.rb', line 145 def n_records @n_records end |
#page_size ⇒ Object (readonly)
1ページあたりのレコード数。
141 142 143 |
# File 'lib/groonga/pagination.rb', line 141 def page_size @page_size end |
Instance Method Details
#end_offset ⇒ Object
現在のページに含まれているレコードのうち、最後のレコー ドが何番目のレコードかを返す。0ベースではなく1ベースで あることに注意。つまり、最初のレコードは0番目のレコー ドではなく、1番目のレコードになる。
レコードが1つもない場合は nil
を返す。
216 217 218 219 |
# File 'lib/groonga/pagination.rb', line 216 def end_offset return nil if @n_records.zero? [start_offset + @page_size - 1, @n_records].min end |
#first_page ⇒ Object
最初のページ番号。常に1を返す。
153 154 155 |
# File 'lib/groonga/pagination.rb', line 153 def first_page 1 end |
#first_page? ⇒ Boolean
現在のページが最初のページなら true
を返す。
158 159 160 |
# File 'lib/groonga/pagination.rb', line 158 def first_page? @current_page == first_page end |
#have_next_page? ⇒ Boolean
次のページがあるなら true
を返す。
173 174 175 |
# File 'lib/groonga/pagination.rb', line 173 def have_next_page? @current_page < @n_pages end |
#have_pages? ⇒ Boolean
2ページ以上ある場合は true
を返す。
148 149 150 |
# File 'lib/groonga/pagination.rb', line 148 def have_pages? @n_pages > 1 end |
#have_previous_page? ⇒ Boolean
前のページがあるなら true
を返す。
184 185 186 |
# File 'lib/groonga/pagination.rb', line 184 def have_previous_page? @current_page > 1 end |
#last_page ⇒ Object
最後のページ番号。
163 164 165 |
# File 'lib/groonga/pagination.rb', line 163 def last_page @n_pages end |
#last_page? ⇒ Boolean
現在のページが最後のページなら true
を返す。
168 169 170 |
# File 'lib/groonga/pagination.rb', line 168 def last_page? @current_page == last_page end |
#n_records_in_page ⇒ Object
1ページあたりのレコード数を返す。
195 196 197 |
# File 'lib/groonga/pagination.rb', line 195 def n_records_in_page size end |
#next_page ⇒ Object
次のページ番号を返す。次のページがない場合は nil
を返す。
179 180 181 |
# File 'lib/groonga/pagination.rb', line 179 def next_page have_next_page? ? @current_page + 1 : nil end |
#pages ⇒ Object
最初のページから最後のページまでを含んだRangeを返す。
例えば、10ページある場合は以下を返す。
1..10
225 226 227 |
# File 'lib/groonga/pagination.rb', line 225 def pages first_page..last_page end |
#previous_page ⇒ Object
前のページ番号を返す。前のページがない場合は nil
を返す。
190 191 192 |
# File 'lib/groonga/pagination.rb', line 190 def previous_page have_previous_page? ? @current_page - 1 : nil end |
#start_offset ⇒ Object
現在のページに含まれているレコードのうち、先頭のレコー ドが何番目のレコードかを返す。0ベースではなく1ベースで あることに注意。つまり、最初のレコードは0番目のレコー ドではなく、1番目のレコードになる。
レコードが1つもない場合は nil
を返す。
205 206 207 208 |
# File 'lib/groonga/pagination.rb', line 205 def start_offset return nil if @n_records.zero? 1 + (@current_page - 1) * @page_size end |