Skip to content

Commit 7ef3037

Browse files
committed
Merge pull request #1 from mislav/will_paginate
Add support for will_paginate
2 parents 143b36e + c645e2d commit 7ef3037

38 files changed

+82
-356
lines changed

api-pagination.gemspec

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,6 @@ Gem::Specification.new do |s|
1616
s.test_files = Dir['spec/**/*']
1717
s.require_paths = ['lib']
1818

19-
s.add_dependency 'rails', '>= 3.0.0'
20-
s.add_dependency 'kaminari', '>= 0.13.0'
21-
22-
s.add_development_dependency 'bundler', '~> 1.3'
23-
s.add_development_dependency 'rspec-rails'
19+
s.add_development_dependency 'actionpack'
20+
s.add_development_dependency 'rspec'
2421
end

lib/api-pagination.rb

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
require 'api-pagination/version'
2-
require 'kaminari'
32

43
module ApiPagination
54
protected
@@ -29,3 +28,10 @@ def paginate(scope)
2928

3029
ActionController::Base.send(:include, ApiPagination) if defined?(ActionController::Base)
3130
ActionController::API.send(:include, ApiPagination) if defined?(ActionController::API)
31+
32+
if defined?(WillPaginate::CollectionMethods)
33+
WillPaginate::CollectionMethods.module_eval do
34+
def first_page?() !previous_page end
35+
def last_page?() !next_page end
36+
end
37+
end

spec/controllers/numbers_controller_spec.rb

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,35 @@
11
require 'spec_helper'
22

3-
describe NumbersController do
3+
Rails.application.routes.draw do
4+
resources :numbers, only: [:index]
5+
end
6+
7+
# quacks like Kaminari
8+
PaginatedSet = Struct.new(:current_page, :total_count) do
9+
def limit_value() 25 end
10+
11+
def total_pages
12+
total_count.zero? ? 1 : (total_count.to_f / limit_value).ceil
13+
end
14+
15+
def first_page?() current_page == 1 end
16+
def last_page?() current_page == total_pages end
17+
end
18+
19+
class NumbersController < ActionController::Base
20+
include Rails.application.routes.url_helpers
21+
22+
after_filter only: [:index] { paginate(:numbers) }
23+
24+
def index
25+
page = params.fetch(:page, 1).to_i
26+
total = params.fetch(:count).to_i
27+
@numbers = PaginatedSet.new(page, total)
28+
render json: @numbers
29+
end
30+
end
31+
32+
describe NumbersController, :type => :controller do
433
describe 'GET #index' do
534
context 'without enough items to give more than one page' do
635
it 'should not paginate' do

spec/dummy/Rakefile

Lines changed: 0 additions & 6 deletions
This file was deleted.

spec/dummy/app/assets/.keep

Whitespace-only changes.

spec/dummy/app/controllers/application_controller.rb

Lines changed: 0 additions & 5 deletions
This file was deleted.

spec/dummy/app/controllers/concerns/.keep

Whitespace-only changes.

spec/dummy/app/controllers/numbers_controller.rb

Lines changed: 0 additions & 8 deletions
This file was deleted.

spec/dummy/app/helpers/application_helper.rb

Lines changed: 0 additions & 2 deletions
This file was deleted.

spec/dummy/app/mailers/.keep

Whitespace-only changes.

0 commit comments

Comments
 (0)