pagination_render_logic 0.0.1

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.
data/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in pagination_render_logic.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2011 filip
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1 @@
1
+ It will hold the logic required for rendering different kinds of pagination templates.
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
@@ -0,0 +1,80 @@
1
+ module PaginationRenderLogic
2
+ # Provides logic for building digg style pagination
3
+ # First Previous 1 2 3 ... 22 23 24 25 26 [27] 28 29 30 31 32 ... 48 49 50 Next Last
4
+ module Digg
5
+ attr_accessor :total_pages, :current_page,
6
+ :after_first_page, :arround_current_page,
7
+ :middle_section, :first_page_section, :last_page_section
8
+
9
+ def config(args = {})
10
+ @total_pages = args[:total_pages] || 0
11
+ @after_first_page = args[:after_first_page] || 3
12
+ @arround_current_page = args[:arround_current_page] || 5
13
+ @current_page = args[:current_page] || 1
14
+ end
15
+
16
+ def config!
17
+ config
18
+ setup
19
+ end
20
+
21
+ def setup
22
+ @middle_section = ([current_page - arround_current_page, 1].max..[current_page + arround_current_page, total_pages].min).to_a
23
+ @first_page_section = (1..[after_first_page, total_pages].min).to_a
24
+ @last_page_section = ([1, total_pages - after_first_page + 1].max..total_pages).to_a
25
+ if (total_pages / 2) > current_page
26
+ merge_left
27
+ merge_right
28
+ else
29
+ merge_right
30
+ merge_left
31
+ end
32
+ end
33
+
34
+ def has_next_page?
35
+ @current_page < @total_pages
36
+ end
37
+
38
+ def has_last_page?
39
+ @current_page < @total_pages
40
+ end
41
+
42
+ def has_first_page?
43
+ @current_page > 1
44
+ end
45
+
46
+ def has_previous_page?
47
+ @current_page > 1
48
+ end
49
+
50
+ def has_links?
51
+ @total_pages > 1
52
+ end
53
+
54
+ def has_first_page_section?
55
+ not @first_page_section.empty?
56
+ end
57
+
58
+ def has_last_page_section?
59
+ not @last_page_section.empty?
60
+ end
61
+
62
+ private
63
+
64
+ def merge_left
65
+ if (not @middle_section.empty?) and @middle_section.first - 1 <= @first_page_section.last
66
+ @middle_section = @first_page_section | @middle_section
67
+ @first_page_section.clear
68
+ end
69
+ end
70
+
71
+ def merge_right
72
+ if (not @middle_section.empty?) and @middle_section.last + 1 >= @last_page_section.first
73
+ @middle_section = @middle_section | @last_page_section
74
+ @last_page_section.clear
75
+ end
76
+ end
77
+
78
+ end
79
+
80
+ end
@@ -0,0 +1,3 @@
1
+ module PaginationRenderLogic
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,3 @@
1
+ module PaginationRenderLogic
2
+ # Your code goes here...
3
+ end
@@ -0,0 +1,31 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "pagination_render_logic/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "pagination_render_logic"
7
+ s.version = PaginationRenderLogic::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["sirfilip"]
10
+ s.email = ["github.sirfilip@gmail.com"]
11
+ s.homepage = "http://github.com/sirfilip/pagination_render_logic"
12
+ s.summary = %q{Will provide logic for rendering different types of pagination}
13
+ s.description = %q{Will provide logic for rendering different types of pagination. ex floating digg style pagination}
14
+
15
+ s.add_development_dependency("bundler")
16
+ s.add_development_dependency("rspec")
17
+
18
+ s.licenses = ["MIT"]
19
+
20
+ s.extra_rdoc_files = [
21
+ "LICENSE.txt",
22
+ "README.rdoc"
23
+ ]
24
+
25
+ s.rubyforge_project = "pagination_render_logic"
26
+
27
+ s.files = `git ls-files`.split("\n")
28
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
29
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
30
+ s.require_paths = ["lib"]
31
+ end
data/specs/digg.spec ADDED
@@ -0,0 +1,300 @@
1
+ require './spec_helper'
2
+ require 'pagination_render_logic/digg'
3
+
4
+ # First Previous 1 2 3 ... 22 23 24 25 26 [27] 28 29 30 31 32 ... 48 49 50 Next Last
5
+
6
+ class DiggRenderer
7
+ extend PaginationRenderLogic::Digg
8
+ end
9
+
10
+ class DiggObject
11
+ include PaginationRenderLogic::Digg
12
+ end
13
+
14
+ describe DiggRenderer do
15
+
16
+ before do
17
+ DiggRenderer.config :total_pages => 10, :current_page => 1,
18
+ :after_first_page => 3, :arround_current_page => 5
19
+ end
20
+
21
+ it "should be awesome" do
22
+ end
23
+
24
+ it "should set sections correctly" do
25
+ # [1] 2 3 4 5 6 ... 8 9 10 Next Last
26
+ DiggRenderer.total_pages = 10
27
+ DiggRenderer.current_page = 1
28
+ DiggRenderer.setup
29
+ DiggRenderer.should have(6).middle_section
30
+ DiggRenderer.should have(0).first_page_section
31
+ DiggRenderer.should have(3).last_page_section
32
+ DiggRenderer.middle_section.should eql((1..6).to_a)
33
+ DiggRenderer.last_page_section.should eql((8..10).to_a)
34
+
35
+ # [1] 2 3 4 5 6 7 8 9 Next Last
36
+ DiggRenderer.total_pages = 9
37
+ DiggRenderer.current_page = 1
38
+ DiggRenderer.setup
39
+ DiggRenderer.should have(9).middle_section
40
+ DiggRenderer.should have(0).first_page_section
41
+ DiggRenderer.should have(0).last_page_section
42
+ DiggRenderer.middle_section.should eql((1..9).to_a)
43
+
44
+ # 1 2 3 ... 5 6 7 8 9 [10] Next Last
45
+ DiggRenderer.total_pages = 10
46
+ DiggRenderer.current_page = 10
47
+ DiggRenderer.setup
48
+ DiggRenderer.should have(6).middle_section
49
+ DiggRenderer.should have(3).first_page_section
50
+ DiggRenderer.should have(0).last_page_section
51
+ DiggRenderer.middle_section.should eql((5..10).to_a)
52
+ DiggRenderer.first_page_section.should eql((1..3).to_a)
53
+
54
+ # First Previous 1 2 3 ... 22 23 24 25 26 [27] 28 29 30 31 32 ... 48 49 50 Next Last
55
+ DiggRenderer.total_pages = 50
56
+ DiggRenderer.current_page = 27
57
+ DiggRenderer.setup
58
+ DiggRenderer.should have(11).middle_section
59
+ DiggRenderer.should have(3).first_page_section
60
+ DiggRenderer.should have(3).last_page_section
61
+ DiggRenderer.middle_section.should eql((22..32).to_a)
62
+ DiggRenderer.first_page_section.should eql((1..3).to_a)
63
+ DiggRenderer.last_page_section.should eql((48..50).to_a)
64
+ end
65
+
66
+ it "should render links properly" do
67
+
68
+ # [1] 2 3 Next Last
69
+ DiggRenderer.total_pages = 3
70
+ DiggRenderer.current_page = 1
71
+ DiggRenderer.setup
72
+ DiggRenderer.should have(3).middle_section
73
+ DiggRenderer.should have(0).first_page_section
74
+ DiggRenderer.should have(0).last_page_section
75
+ DiggRenderer.middle_section.should eql((1..3).to_a)
76
+ DiggRenderer.should have_next_page
77
+ DiggRenderer.should have_last_page
78
+ DiggRenderer.should_not have_first_page
79
+ DiggRenderer.should_not have_previous_page
80
+
81
+ # First Previous 1 [2] 3 Next Last
82
+ DiggRenderer.total_pages = 3
83
+ DiggRenderer.current_page = 2
84
+ DiggRenderer.setup
85
+ DiggRenderer.should have(3).middle_section
86
+ DiggRenderer.should have(0).first_page_section
87
+ DiggRenderer.should have(0).last_page_section
88
+ DiggRenderer.middle_section.should eql((1..3).to_a)
89
+ DiggRenderer.should have_next_page
90
+ DiggRenderer.should have_last_page
91
+ DiggRenderer.should have_first_page
92
+ DiggRenderer.should have_previous_page
93
+
94
+ # First Previous 1 2 [3]
95
+ DiggRenderer.total_pages = 3
96
+ DiggRenderer.current_page = 3
97
+ DiggRenderer.setup
98
+ DiggRenderer.should have(3).middle_section
99
+ DiggRenderer.should have(0).first_page_section
100
+ DiggRenderer.should have(0).last_page_section
101
+ DiggRenderer.middle_section.should eql((1..3).to_a)
102
+ DiggRenderer.should_not have_next_page
103
+ DiggRenderer.should_not have_last_page
104
+ DiggRenderer.should have_first_page
105
+ DiggRenderer.should have_previous_page
106
+
107
+ # First Previous 1 [2] 3 4 5 Next Last
108
+ DiggRenderer.total_pages = 5
109
+ DiggRenderer.current_page = 2
110
+ DiggRenderer.setup
111
+ DiggRenderer.should have(5).middle_section
112
+ DiggRenderer.should have(0).first_page_section
113
+ DiggRenderer.should have(0).last_page_section
114
+ DiggRenderer.middle_section.should eql((1..5).to_a)
115
+ DiggRenderer.should have_next_page
116
+ DiggRenderer.should have_last_page
117
+ DiggRenderer.should have_first_page
118
+ DiggRenderer.should have_previous_page
119
+
120
+ # First Previous 1 [2] 3 4 Next Last
121
+ DiggRenderer.total_pages = 4
122
+ DiggRenderer.current_page = 2
123
+ DiggRenderer.setup
124
+ DiggRenderer.should have(4).middle_section
125
+ DiggRenderer.should have(0).first_page_section
126
+ DiggRenderer.should have(0).last_page_section
127
+ DiggRenderer.middle_section.should eql((1..4).to_a)
128
+ DiggRenderer.should have_next_page
129
+ DiggRenderer.should have_last_page
130
+ DiggRenderer.should have_first_page
131
+ DiggRenderer.should have_previous_page
132
+
133
+ # First Previous 1 [2] 3 4 5 6 7 8 9 Next Last
134
+ DiggRenderer.total_pages = 9
135
+ DiggRenderer.current_page = 2
136
+ DiggRenderer.setup
137
+ DiggRenderer.should have(9).middle_section
138
+ DiggRenderer.should have(0).first_page_section
139
+ DiggRenderer.should have(0).last_page_section
140
+ DiggRenderer.middle_section.should eql((1..9).to_a)
141
+ DiggRenderer.should have_next_page
142
+ DiggRenderer.should have_last_page
143
+ DiggRenderer.should have_first_page
144
+ DiggRenderer.should have_previous_page
145
+
146
+ # First Previous 1 [2] 3 4 5 6 7 8 9 10 Next Last
147
+ DiggRenderer.total_pages = 10
148
+ DiggRenderer.current_page = 2
149
+ DiggRenderer.setup
150
+ DiggRenderer.should have(10).middle_section
151
+ DiggRenderer.should have(0).first_page_section
152
+ DiggRenderer.should have(0).last_page_section
153
+ DiggRenderer.middle_section.should eql((1..10).to_a)
154
+ DiggRenderer.should have_next_page
155
+ DiggRenderer.should have_last_page
156
+ DiggRenderer.should have_first_page
157
+ DiggRenderer.should have_previous_page
158
+
159
+ # First Previous 1 [2] 3 4 5 6 7 ... 9 10 11 Next Last
160
+ DiggRenderer.total_pages = 11
161
+ DiggRenderer.current_page = 2
162
+ DiggRenderer.setup
163
+ DiggRenderer.should have(7).middle_section
164
+ DiggRenderer.should have(0).first_page_section
165
+ DiggRenderer.should have(3).last_page_section
166
+ DiggRenderer.last_page_section.should eql((9..11).to_a)
167
+ DiggRenderer.middle_section.should eql((1..7).to_a)
168
+ DiggRenderer.should have_next_page
169
+ DiggRenderer.should have_last_page
170
+ DiggRenderer.should have_first_page
171
+ DiggRenderer.should have_previous_page
172
+
173
+ # empty
174
+ DiggRenderer.total_pages = 0
175
+ DiggRenderer.current_page = 1
176
+ DiggRenderer.setup
177
+ DiggRenderer.should_not have_links
178
+
179
+ # empty
180
+ DiggRenderer.total_pages = 1
181
+ DiggRenderer.current_page = 1
182
+ DiggRenderer.setup
183
+ DiggRenderer.should_not have_links
184
+
185
+ # First Previous 1 2 [3] 4 5 6 7 8 9 10 11 Next Last
186
+ DiggRenderer.total_pages = 11
187
+ DiggRenderer.current_page = 3
188
+ DiggRenderer.setup
189
+ DiggRenderer.should have(11).middle_section
190
+ DiggRenderer.should have(0).first_page_section
191
+ DiggRenderer.should have(0).last_page_section
192
+ DiggRenderer.middle_section.should eql((1..11).to_a)
193
+ DiggRenderer.should have_next_page
194
+ DiggRenderer.should have_last_page
195
+ DiggRenderer.should have_first_page
196
+ DiggRenderer.should have_previous_page
197
+
198
+ # First Previous 1 2 3 4 5 [6] 7 8 9 10 11 Next Last
199
+ DiggRenderer.total_pages = 11
200
+ DiggRenderer.current_page = 6
201
+ DiggRenderer.setup
202
+ DiggRenderer.should have(11).middle_section
203
+ DiggRenderer.should have(0).first_page_section
204
+ DiggRenderer.should have(0).last_page_section
205
+ DiggRenderer.middle_section.should eql((1..11).to_a)
206
+ DiggRenderer.should have_next_page
207
+ DiggRenderer.should have_last_page
208
+ DiggRenderer.should have_first_page
209
+ DiggRenderer.should have_previous_page
210
+
211
+ # First Previous 1 2 3 4 5 6 [7] 8 9 10 11 Next Last
212
+ DiggRenderer.total_pages = 11
213
+ DiggRenderer.current_page = 7
214
+ DiggRenderer.setup
215
+ DiggRenderer.should have(11).middle_section
216
+ DiggRenderer.should have(0).first_page_section
217
+ DiggRenderer.should have(0).last_page_section
218
+ DiggRenderer.middle_section.should eql((1..11).to_a)
219
+ DiggRenderer.should have_next_page
220
+ DiggRenderer.should have_last_page
221
+ DiggRenderer.should have_first_page
222
+ DiggRenderer.should have_previous_page
223
+
224
+ # First Previous 1 2 3 4 5 6 7 [8] 9 10 11 Next Last
225
+ DiggRenderer.total_pages = 11
226
+ DiggRenderer.current_page = 8
227
+ DiggRenderer.setup
228
+ DiggRenderer.should have(11).middle_section
229
+ DiggRenderer.should have(0).first_page_section
230
+ DiggRenderer.should have(0).last_page_section
231
+ DiggRenderer.middle_section.should eql((1..11).to_a)
232
+ DiggRenderer.should have_next_page
233
+ DiggRenderer.should have_last_page
234
+ DiggRenderer.should have_first_page
235
+ DiggRenderer.should have_previous_page
236
+
237
+ # First Previous 1 2 3 4 5 6 7 8 [9] 10 11 Next Last
238
+ DiggRenderer.total_pages = 11
239
+ DiggRenderer.current_page = 9
240
+ DiggRenderer.setup
241
+ DiggRenderer.should have(11).middle_section
242
+ DiggRenderer.should have(0).first_page_section
243
+ DiggRenderer.should have(0).last_page_section
244
+ DiggRenderer.middle_section.should eql((1..11).to_a)
245
+ DiggRenderer.should have_next_page
246
+ DiggRenderer.should have_last_page
247
+ DiggRenderer.should have_first_page
248
+ DiggRenderer.should have_previous_page
249
+
250
+ # First Previous 1 2 3 ... 5 6 7 8 9 [10] 11 Next Last
251
+ DiggRenderer.total_pages = 11
252
+ DiggRenderer.current_page = 10
253
+ DiggRenderer.setup
254
+ DiggRenderer.should have(7).middle_section
255
+ DiggRenderer.should have_first_page_section
256
+ DiggRenderer.should_not have_last_page_section
257
+ DiggRenderer.should have(3).first_page_section
258
+ DiggRenderer.first_page_section.should eql((1..3).to_a)
259
+ DiggRenderer.should have(0).last_page_section
260
+ DiggRenderer.middle_section.should eql((5..11).to_a)
261
+ DiggRenderer.should have_next_page
262
+ DiggRenderer.should have_last_page
263
+ DiggRenderer.should have_first_page
264
+ DiggRenderer.should have_previous_page
265
+
266
+ # First Previous 1 2 3 ... 6 7 8 9 10 [11]
267
+ DiggRenderer.total_pages = 11
268
+ DiggRenderer.current_page = 11
269
+ DiggRenderer.setup
270
+ DiggRenderer.should have(6).middle_section
271
+ DiggRenderer.should have_first_page_section
272
+ DiggRenderer.should_not have_last_page_section
273
+ DiggRenderer.should have(3).first_page_section
274
+ DiggRenderer.first_page_section.should eql((1..3).to_a)
275
+ DiggRenderer.should have(0).last_page_section
276
+ DiggRenderer.middle_section.should eql((6..11).to_a)
277
+ DiggRenderer.should_not have_next_page
278
+ DiggRenderer.should_not have_last_page
279
+ DiggRenderer.should have_first_page
280
+ DiggRenderer.should have_previous_page
281
+
282
+ # First Previous 1 2 3 ... 22 23 24 25 26 [27] 28 29 30 31 32 ... 48 49 50 Next Last
283
+ DiggRenderer.total_pages = 50
284
+ DiggRenderer.current_page = 27
285
+ DiggRenderer.setup
286
+ DiggRenderer.should have(11).middle_section
287
+ DiggRenderer.middle_section.should eql((22..32).to_a)
288
+ DiggRenderer.should have_first_page_section
289
+ DiggRenderer.should have_last_page_section
290
+ DiggRenderer.should have(3).first_page_section
291
+ DiggRenderer.first_page_section.should eql((1..3).to_a)
292
+ DiggRenderer.should have(3).last_page_section
293
+ DiggRenderer.last_page_section.should eql((48..50).to_a)
294
+ DiggRenderer.should have_next_page
295
+ DiggRenderer.should have_last_page
296
+ DiggRenderer.should have_first_page
297
+ DiggRenderer.should have_previous_page
298
+ end
299
+
300
+ end
@@ -0,0 +1,14 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ begin
4
+ Bundler.setup(:default, :development)
5
+ rescue Bundler::BundlerError => e
6
+ $stderr.puts e.message
7
+ $stderr.puts "Run `bundle install` to install missing gems"
8
+ exit e.status_code
9
+ end
10
+
11
+ require 'rspec'
12
+
13
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
14
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
metadata ADDED
@@ -0,0 +1,89 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pagination_render_logic
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.0.1
6
+ platform: ruby
7
+ authors:
8
+ - sirfilip
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2011-03-06 00:00:00 +01:00
14
+ default_executable:
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: bundler
18
+ prerelease: false
19
+ requirement: &id001 !ruby/object:Gem::Requirement
20
+ none: false
21
+ requirements:
22
+ - - ">="
23
+ - !ruby/object:Gem::Version
24
+ version: "0"
25
+ type: :development
26
+ version_requirements: *id001
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ prerelease: false
30
+ requirement: &id002 !ruby/object:Gem::Requirement
31
+ none: false
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: "0"
36
+ type: :development
37
+ version_requirements: *id002
38
+ description: Will provide logic for rendering different types of pagination. ex floating digg style pagination
39
+ email:
40
+ - github.sirfilip@gmail.com
41
+ executables: []
42
+
43
+ extensions: []
44
+
45
+ extra_rdoc_files:
46
+ - LICENSE.txt
47
+ - README.rdoc
48
+ files:
49
+ - .gitignore
50
+ - Gemfile
51
+ - LICENSE.txt
52
+ - README.rdoc
53
+ - Rakefile
54
+ - lib/pagination_render_logic.rb
55
+ - lib/pagination_render_logic/digg.rb
56
+ - lib/pagination_render_logic/version.rb
57
+ - pagination_render_logic.gemspec
58
+ - specs/digg.spec
59
+ - specs/spec_helper.rb
60
+ has_rdoc: true
61
+ homepage: http://github.com/sirfilip/pagination_render_logic
62
+ licenses:
63
+ - MIT
64
+ post_install_message:
65
+ rdoc_options: []
66
+
67
+ require_paths:
68
+ - lib
69
+ required_ruby_version: !ruby/object:Gem::Requirement
70
+ none: false
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: "0"
75
+ required_rubygems_version: !ruby/object:Gem::Requirement
76
+ none: false
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: "0"
81
+ requirements: []
82
+
83
+ rubyforge_project: pagination_render_logic
84
+ rubygems_version: 1.6.1
85
+ signing_key:
86
+ specification_version: 3
87
+ summary: Will provide logic for rendering different types of pagination
88
+ test_files: []
89
+