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)

現在のページ番号。



139
140
141
# File 'lib/groonga/pagination.rb', line 139

def current_page
  @current_page
end

#n_pagesObject (readonly)

全ページ数。



143
144
145
# File 'lib/groonga/pagination.rb', line 143

def n_pages
  @n_pages
end

#n_recordsObject (readonly)

全レコード数。



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

def n_records
  @n_records
end

#page_sizeObject (readonly)

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



141
142
143
# File 'lib/groonga/pagination.rb', line 141

def page_size
  @page_size
end

Instance Method Details

#end_offsetObject

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

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



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

def first_page
  1
end

#first_page?Boolean

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

Returns:

  • (Boolean)


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

def first_page?
  @current_page == first_page
end

#have_next_page?Boolean

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

Returns:

  • (Boolean)


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

def have_next_page?
  @current_page < @n_pages
end

#have_pages?Boolean

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

Returns:

  • (Boolean)


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

def have_pages?
  @n_pages > 1
end

#have_previous_page?Boolean

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

Returns:

  • (Boolean)


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

def have_previous_page?
  @current_page > 1
end

#last_pageObject

最後のページ番号。



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

def last_page
  @n_pages
end

#last_page?Boolean

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

Returns:

  • (Boolean)


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

def last_page?
  @current_page == last_page
end

#n_records_in_pageObject

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



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

def n_records_in_page
  size
end

#next_pageObject

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



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

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

#pagesObject

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

例えば、10ページある場合は以下を返す。

1..10


225
226
227
# File 'lib/groonga/pagination.rb', line 225

def pages
  first_page..last_page
end

#previous_pageObject

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



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

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

#start_offsetObject

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