Class: Ramaze::Helper::Paginate::Paginator::ArrayPager

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/ramaze/helper/paginate.rb

Overview

Wrapper for Array to behave like the Sequel pagination

Instance Method Summary collapse

Constructor Details

#initialize(array, page, limit) ⇒ ArrayPager

Returns a new instance of ArrayPager.



188
189
190
191
# File 'lib/ramaze/helper/paginate.rb', line 188

def initialize(array, page, limit)
  @array, @page, @limit = array, page, limit
  @page = page_count if @page > page_count
end

Instance Method Details

#current_pageObject



206
207
208
# File 'lib/ramaze/helper/paginate.rb', line 206

def current_page
  @page
end

#each(&block) ⇒ Object



226
227
228
229
230
231
232
# File 'lib/ramaze/helper/paginate.rb', line 226

def each(&block)
  from = ((@page - 1) * @limit)
  to = from + @limit

  a = @array[from...to] || []
  a.each(&block)
end

#empty?Boolean

Returns:

  • (Boolean)


197
198
199
# File 'lib/ramaze/helper/paginate.rb', line 197

def empty?
  @array.empty?
end

#first_page?Boolean

Returns:

  • (Boolean)


218
219
220
# File 'lib/ramaze/helper/paginate.rb', line 218

def first_page?
  @page <= 1
end

#last_page?Boolean

Returns:

  • (Boolean)


222
223
224
# File 'lib/ramaze/helper/paginate.rb', line 222

def last_page?
  page_count == @page
end

#next_pageObject



210
211
212
# File 'lib/ramaze/helper/paginate.rb', line 210

def next_page
  page_count == @page ? nil : @page + 1
end

#page_countObject



201
202
203
204
# File 'lib/ramaze/helper/paginate.rb', line 201

def page_count
  pages, rest = @array.size.divmod(@limit)
  rest == 0 ? pages : pages + 1
end

#prev_pageObject



214
215
216
# File 'lib/ramaze/helper/paginate.rb', line 214

def prev_page
  @page <= 1 ? nil : @page - 1
end

#sizeObject



193
194
195
# File 'lib/ramaze/helper/paginate.rb', line 193

def size
  @array.size
end