No commit activity in last 3 years
No release in over 3 years
This gem is a simple paginator for Enumerable collections
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.3
>= 0
>= 0
 Project Readme

SimplyPaginate

Build Status Code Climate

Simply paginate will do just that, give me a collection and you will be able to use a pagination logic (no extra html boilerplate or dependecies).

Installation

Add this line to your application's Gemfile:

gem 'simply_paginate'

And then execute:

$ bundle

Or install it yourself as:

$ gem install simply_paginate

Motivation

When dealing with pagination most known gems come bundled with lots of extra functionality I usually don't need (like html boilerplate), this is my attempt to create just the pagination logic, as simple as that. So if you need pagiation but don't want to reinvent the wheel and keep your collections Pagination Agnostic, this is the gem you need. The only requirement is the adoption of the popular ruby Enumerable interface.

Usage

require 'simply_paginate'

include SimplyPaginate

collection = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

pages = Paginator.new(collection, 3)

# retrieve a certain page
pages[1]

#move through the pages freely
pages[1].next
pages[1].previous

#you might want the first element on the 3rd page
pages[1].next.next.next.previous.elements[0]

#or maybe all of them
pages[0].next.next.next.previous.elements

#you can also iterate the ruby way
pages.each do |page|
  puts page.elements
end

#or in a more old fashion way
pages.start

while pages.next? do
  puts pages.current.elements
  
  pages.next!
end

Changes on this branch

Well this branch introduced a better design about the relationship between pages and page, and also an improvement on the API.

Now a Page can be used without the need of having a Paginator, and also a Paginator could be transversed without need to access pages directly.

require 'simply_paginate'

include SimplyPaginate

collection = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# Give me the first page of the collection with a size of 3
first_page = Page.new(1, collection, 3)

first_page.elements
#=> [1, 2, 3]
first_page.next.elements
#=> [4, 5, 6]

##0.0.4 - Changelog:

  • Redesign on relation between paginator and pages. You can use them togheter or separately.
  • Improved API for Paginator, now including:
    • each iteration
    • next!, next?, current and start methods for manual iteration
    • first and last accessors
  • Test improvement

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request