simple_paginator 0.0.4 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8f2849b7d941f9af41dde4fd22ae539ac1d505d5
4
- data.tar.gz: e2f4c9261b998d51238de7df7a4ec0db0479f2e9
3
+ metadata.gz: 16438bedf85b6b691f53f25b47e0afd4fcf38c73
4
+ data.tar.gz: 69a2c23b02fb29566bb83bcf0782ea7289dc0902
5
5
  SHA512:
6
- metadata.gz: c8d1ba19069ac6568ca32daa524b940e5dc290c45c6e41115b6b688ca41c510780665d581a84f3cdf943d3a92e12454fdcfb411ca9f4f1b0b9ff96232c4c0322
7
- data.tar.gz: 1ca4e949eea9baf78583c1f3f2825658521a29c04ed49868696a0bfd89e52a151c4ee939c5d8e9f86d6f02a367f06ba5c38a9fd5d6a351d3640c303c85c2604c
6
+ metadata.gz: d3e14abc254343d5774775d4c80f731bdc1d53a65ecf825c7f49bb661b824f0617cc6103bae6fb4b96e7ce5b59cf14ef1daad1eb4dd8ddc9491be1f46676c8b0
7
+ data.tar.gz: a6edc6b289fb3a1fa7f6182038d7efc41ba6da9291a0ced9af5218d1885b8de665a06c036ffc9f6bced919ef89cd2b9ffeb4712f46b397fd5e2529eb24d45a08
data/.gitignore CHANGED
@@ -15,3 +15,4 @@ spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
+ vendor/bundle
@@ -1,5 +1,5 @@
1
1
  language: ruby
2
2
  rvm:
3
+ - 2.1.1
3
4
  - 2.0.0
4
5
  - 1.9.3
5
- - rbx-19mode
data/README.md CHANGED
@@ -39,7 +39,8 @@ You will get 26 (per_page + 1) records when you can get next page.
39
39
 
40
40
  ```
41
41
  Post.paged(1) #=> returns 26 records at most.
42
- Post.paged(11) #=> returns 0 records if page is more than max_page.
42
+ Post.paged #=> same as above.
43
+ Post.paged(11) #=> returns 0 records if page (argument) > max_page.
43
44
  ```
44
45
 
45
46
  You can use `per_page`, `max_page` to change default behavior.
@@ -52,6 +53,13 @@ class Post < ActiveRecord::Base
52
53
  end
53
54
  ```
54
55
 
56
+ You are also be able to change them at `.paged` option.
57
+ These parameters will override `per_page`, `max_page` values.
58
+
59
+ ```
60
+ Post.paged(1, per_page: 5, max_page: 10)
61
+ ```
62
+
55
63
  ## Contributing
56
64
 
57
65
  1. Fork it
@@ -1,35 +1,43 @@
1
1
  require "simple_paginator/version"
2
- require 'active_support/concern'
3
2
  require 'active_record'
4
3
 
5
4
  module SimplePaginator
6
- extend ActiveSupport::Concern
7
-
8
5
  DEFAULT_PER_PAGE = 25
9
6
  DEFAULT_MAX_PAGE = 10
10
7
 
11
- included do
12
- per_page DEFAULT_PER_PAGE
13
- max_page DEFAULT_MAX_PAGE
14
- scope :paged, ->(page) {
8
+ def self.included(base)
9
+ base.extend ClassMethods
10
+
11
+ base.class_eval do
12
+ per_page DEFAULT_PER_PAGE
13
+ max_page DEFAULT_MAX_PAGE
14
+ end
15
+ end
16
+
17
+ module ClassMethods
18
+ def paged(page, options = {})
15
19
  num = page_number(page)
16
- if num > @max_page
17
- none
18
- elsif num == @max_page
19
- limit(@per_page).offset((num-1)*@per_page)
20
+ per_page = options[:per_page].presence || @per_page
21
+ max_page = options[:max_page].presence || @max_page
22
+
23
+ if num > max_page
24
+ scoped = none
25
+ elsif num == max_page
26
+ scoped = limit(per_page).offset((num-1)*per_page)
20
27
  else
21
- limit(@per_page+1).offset((num-1)*@per_page)
28
+ scoped = limit(per_page+1).offset((num-1)*per_page)
22
29
  end
23
- }
24
- end
30
+ scoped
31
+ end
25
32
 
26
- module ClassMethods
27
33
  def page_number(raw_page)
28
34
  [raw_page.to_i, 1].max
29
35
  end
36
+
30
37
  def per_page(per_page)
31
38
  @per_page = per_page
32
39
  end
40
+
33
41
  def max_page(max_page)
34
42
  @max_page = max_page
35
43
  end
@@ -1,3 +1,3 @@
1
1
  module SimplePaginator
2
- VERSION = "0.0.4"
2
+ VERSION = "1.0.0"
3
3
  end
@@ -18,10 +18,9 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_development_dependency "bundler", "~> 1.3"
21
+ spec.add_development_dependency "bundler"
22
22
  spec.add_development_dependency "rake"
23
23
  spec.add_development_dependency 'rspec'
24
24
  spec.add_development_dependency 'sqlite3'
25
- spec.add_dependency 'activesupport'
26
25
  spec.add_dependency 'activerecord'
27
26
  end
@@ -57,7 +57,7 @@ describe SimplePaginator do
57
57
  context 'per_page, max_page are default' do
58
58
  context 'page = 1' do
59
59
  let(:page) { 1 }
60
- it 'send :limit, :offset method' do
60
+ it 'should send :limit, :offset method' do
61
61
  Post.should_receive(:limit).with(26).once { Post }
62
62
  Post.should_receive(:offset).with(0).once
63
63
  Post.paged(page)
@@ -65,7 +65,7 @@ describe SimplePaginator do
65
65
  end
66
66
  context 'page = 2' do
67
67
  let(:page) { 2 }
68
- it 'send :limit, :offset method' do
68
+ it 'should send :limit, :offset method' do
69
69
  Post.should_receive(:limit).with(26).once { Post }
70
70
  Post.should_receive(:offset).with(25).once
71
71
  Post.paged(page)
@@ -73,7 +73,7 @@ describe SimplePaginator do
73
73
  end
74
74
  context 'page = 10' do
75
75
  let(:page) { 10 }
76
- it 'send :limit, :offset method' do
76
+ it 'should send :limit, :offset method' do
77
77
  Post.should_receive(:limit).with(25).once { Post }
78
78
  Post.should_receive(:offset).with(25 * (page-1)).once
79
79
  Post.paged(page)
@@ -81,7 +81,7 @@ describe SimplePaginator do
81
81
  end
82
82
  context 'page = 11' do
83
83
  let(:page) { 11 }
84
- it 'send :none method' do
84
+ it 'should send :none method' do
85
85
  Post.should_receive(:none).once
86
86
  Post.paged(page)
87
87
  end
@@ -105,7 +105,7 @@ describe SimplePaginator do
105
105
 
106
106
  context 'page = 1' do
107
107
  let(:page) { 1 }
108
- it 'send :limit, :offset method' do
108
+ it 'should send :limit, :offset method' do
109
109
  Post.should_receive(:limit).with(4).once { Post }
110
110
  Post.should_receive(:offset).with(0).once
111
111
  Post.paged(page)
@@ -113,7 +113,7 @@ describe SimplePaginator do
113
113
  end
114
114
  context 'page = 2' do
115
115
  let(:page) { 2 }
116
- it 'send :limit, :offset method' do
116
+ it 'should send :limit, :offset method' do
117
117
  Post.should_receive(:limit).with(3).once { Post }
118
118
  Post.should_receive(:offset).with(3).once
119
119
  Post.paged(page)
@@ -121,12 +121,96 @@ describe SimplePaginator do
121
121
  end
122
122
  context 'page = 3' do
123
123
  let(:page) { 3 }
124
- it 'send :limit, :offset method' do
124
+ it 'should send :none' do
125
125
  Post.should_receive(:none).once
126
126
  Post.paged(page)
127
127
  end
128
128
  end
129
129
  end
130
+
131
+ context 'change per_page by parameter' do
132
+ let(:per_page) { 5 }
133
+
134
+ before do
135
+ Post.class_eval {
136
+ per_page 3
137
+ max_page 2
138
+ }
139
+ end
140
+
141
+ after do
142
+ Post.class_eval {
143
+ per_page SimplePaginator::DEFAULT_PER_PAGE
144
+ max_page SimplePaginator::DEFAULT_MAX_PAGE
145
+ }
146
+ end
147
+
148
+ context 'page = 1' do
149
+ let(:page) { 1 }
150
+ it 'should send :limit, :offset method' do
151
+ Post.should_receive(:limit).with(6).once { Post }
152
+ Post.should_receive(:offset).with(0).once
153
+ Post.paged(page, per_page: per_page)
154
+ end
155
+ end
156
+ context 'page = 2' do
157
+ let(:page) { 2 }
158
+ it 'should send :limit, :offset method' do
159
+ Post.should_receive(:limit).with(5).once { Post }
160
+ Post.should_receive(:offset).with(5).once
161
+ Post.paged(page, per_page: per_page)
162
+ end
163
+ end
164
+ context 'page = 3' do
165
+ let(:page) { 3 }
166
+ it 'should send :none method' do
167
+ Post.should_receive(:none).once
168
+ Post.paged(page, per_page: per_page)
169
+ end
170
+ end
171
+ end
172
+
173
+ context 'change max_page by parameter' do
174
+ let(:max_page) { 1 }
175
+
176
+ before do
177
+ Post.class_eval {
178
+ per_page 3
179
+ max_page 2
180
+ }
181
+ end
182
+
183
+ after do
184
+ Post.class_eval {
185
+ per_page SimplePaginator::DEFAULT_PER_PAGE
186
+ max_page SimplePaginator::DEFAULT_MAX_PAGE
187
+ }
188
+ end
189
+
190
+ context 'page = 1' do
191
+ let(:page) { 1 }
192
+ it 'should send :limit, :offset method' do
193
+ Post.should_receive(:limit).with(3).once { Post }
194
+ Post.should_receive(:offset).with(0).once
195
+ Post.paged(page, max_page: max_page)
196
+ end
197
+ end
198
+ context 'page = 2' do
199
+ let(:page) { 2 }
200
+ it 'should send :none method' do
201
+ Post.should_receive(:none).once
202
+ Post.paged(page, max_page: max_page)
203
+ end
204
+ end
205
+ context 'page = 3' do
206
+ let(:page) { 3 }
207
+ it 'should send :none method' do
208
+ Post.should_receive(:none).once
209
+ Post.paged(page, max_page: max_page)
210
+ end
211
+ end
212
+ end
213
+
130
214
  end
131
215
  end
132
- end
216
+ end
metadata CHANGED
@@ -1,97 +1,83 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_paginator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Satoshi Ebisawa
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-08 00:00:00.000000000 Z
11
+ date: 2014-05-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.3'
19
+ version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '1.3'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: sqlite3
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: activesupport
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - '>='
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :runtime
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - '>='
66
+ - - ">="
81
67
  - !ruby/object:Gem::Version
82
68
  version: '0'
83
69
  - !ruby/object:Gem::Dependency
84
70
  name: activerecord
85
71
  requirement: !ruby/object:Gem::Requirement
86
72
  requirements:
87
- - - '>='
73
+ - - ">="
88
74
  - !ruby/object:Gem::Version
89
75
  version: '0'
90
76
  type: :runtime
91
77
  prerelease: false
92
78
  version_requirements: !ruby/object:Gem::Requirement
93
79
  requirements:
94
- - - '>='
80
+ - - ">="
95
81
  - !ruby/object:Gem::Version
96
82
  version: '0'
97
83
  description: Useful paginator library for building APIs.
@@ -101,9 +87,9 @@ executables: []
101
87
  extensions: []
102
88
  extra_rdoc_files: []
103
89
  files:
104
- - .gitignore
105
- - .rspec
106
- - .travis.yml
90
+ - ".gitignore"
91
+ - ".rspec"
92
+ - ".travis.yml"
107
93
  - Gemfile
108
94
  - LICENSE.txt
109
95
  - README.ja.md
@@ -124,21 +110,20 @@ require_paths:
124
110
  - lib
125
111
  required_ruby_version: !ruby/object:Gem::Requirement
126
112
  requirements:
127
- - - '>='
113
+ - - ">="
128
114
  - !ruby/object:Gem::Version
129
115
  version: '0'
130
116
  required_rubygems_version: !ruby/object:Gem::Requirement
131
117
  requirements:
132
- - - '>='
118
+ - - ">="
133
119
  - !ruby/object:Gem::Version
134
120
  version: '0'
135
121
  requirements: []
136
122
  rubyforge_project:
137
- rubygems_version: 2.0.3
123
+ rubygems_version: 2.2.2
138
124
  signing_key:
139
125
  specification_version: 4
140
126
  summary: Useful paginator library for building APIs.
141
127
  test_files:
142
128
  - spec/simple_paginator_spec.rb
143
129
  - spec/spec_helper.rb
144
- has_rdoc: