Module: Groonga::Pagination

Defined in:
lib/groonga/pagination.rb

Overview

ページネーション機能を追加するモジュール。

ページ番号やレコードが何番目かは0ベースではなく1ベースで あることに注意すること。

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#current_pageObject (readonly)

現在のページ番号。



145
146
147
# File 'lib/groonga/pagination.rb', line 145

def current_page
  @current_page
end

#n_pagesObject (readonly)

全ページ数。



149
150
151
# File 'lib/groonga/pagination.rb', line 149

def n_pages
  @n_pages
end

#n_recordsObject (readonly)

全レコード数。



151
152
153
# File 'lib/groonga/pagination.rb', line 151

def n_records
  @n_records
end

#page_sizeObject (readonly)

1ページあたりのレコード数。



147
148
149
# File 'lib/groonga/pagination.rb', line 147

def page_size
  @page_size
end

Instance Method Details

#end_offsetObject

現在のページに含まれているレコードのうち、最後のレコー ドが何番目のレコードかを返す。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_pageObject

最初のページ番号。常に1を返す。



159
160
161
# File 'lib/groonga/pagination.rb', line 159

def first_page
  1
end

#first_page?Boolean

現在のページが最初のページなら +true+ を返す。

Returns:

  • (Boolean)


164
165
166
# File 'lib/groonga/pagination.rb', line 164

def first_page?
  @current_page == first_page
end

#have_next_page?Boolean

次のページがあるなら +true+ を返す。

Returns:

  • (Boolean)


179
180
181
# File 'lib/groonga/pagination.rb', line 179

def have_next_page?
  @current_page < @n_pages
end

#have_pages?Boolean

2ページ以上ある場合は +true+ を返す。

Returns:

  • (Boolean)


154
155
156
# File 'lib/groonga/pagination.rb', line 154

def have_pages?
  @n_pages > 1
end

#have_previous_page?Boolean

前のページがあるなら +true+ を返す。

Returns:

  • (Boolean)


190
191
192
# File 'lib/groonga/pagination.rb', line 190

def have_previous_page?
  @current_page > 1
end

#last_pageObject

最後のページ番号。



169
170
171
# File 'lib/groonga/pagination.rb', line 169

def last_page
  @n_pages
end

#last_page?Boolean

現在のページが最後のページなら +true+ を返す。

Returns:

  • (Boolean)


174
175
176
# File 'lib/groonga/pagination.rb', line 174

def last_page?
  @current_page == last_page
end

#n_records_in_pageObject

1ページあたりのレコード数を返す。



201
202
203
# File 'lib/groonga/pagination.rb', line 201

def n_records_in_page
  size
end

#next_pageObject

次のページ番号を返す。次のページがない場合は +nil+ を返す。



185
186
187
# File 'lib/groonga/pagination.rb', line 185

def next_page
  have_next_page? ? @current_page + 1 : nil
end

#pagesObject

最初のページから最後のページまでを含んだRangeを返す。

Examples:

10ページある場合は以下を返す。

1..10


231
232
233
# File 'lib/groonga/pagination.rb', line 231

def pages
  first_page..last_page
end

#previous_pageObject

前のページ番号を返す。前のページがない場合は +nil+ を返す。



196
197
198
# File 'lib/groonga/pagination.rb', line 196

def previous_page
  have_previous_page? ? @current_page - 1 : nil
end

#start_offsetObject

現在のページに含まれているレコードのうち、先頭のレコー ドが何番目のレコードかを返す。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