lib/active_set/processors/paginate/enumerable_adapter.rb in activeset-0.5.1 vs lib/active_set/processors/paginate/enumerable_adapter.rb in activeset-0.5.2

- old
+ new

@@ -5,25 +5,37 @@ class ActiveSet class PaginateProcessor < BaseProcessor class EnumerableAdapter < BaseAdapter def process - return return_set if @set.count < pagesize return_set(paginated_set) end private def paginated_set - @set.each_slice(pagesize).take(page_number).last + return [] if @set.count <= page_size && page_number > 1 + + @set[page_start..page_end] || [] end - def pagesize + def page_start + return 0 if page_number == 1 + page_size * (page_number - 1) + end + + def page_end + return page_start if page_size == 1 + page_start + page_size - 1 + end + + def page_size @instruction.value end def page_number - @instruction.attribute.to_i + num = @instruction.attribute.to_i + (num.to_i - 1).negative? ? 0 : num end end end end