paginate 0.1.1 → 0.1.2
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/Rakefile +17 -12
- data/lib/paginate/renderer.rb +12 -8
- data/lib/paginate/version.rb +1 -1
- data/test/paginate/action_view_test.rb +13 -1
- data/test/paginate/renderer_test.rb +35 -0
- metadata +18 -4
data/Rakefile
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
require "rake/testtask"
|
|
2
|
-
require "
|
|
3
|
-
require "lib/paginate/version"
|
|
2
|
+
require "./lib/paginate/version"
|
|
4
3
|
|
|
5
4
|
Rake::TestTask.new do |t|
|
|
6
5
|
t.libs += %w[ test lib ]
|
|
@@ -9,14 +8,20 @@ Rake::TestTask.new do |t|
|
|
|
9
8
|
t.ruby_opts = %w[ -rubygems ]
|
|
10
9
|
end
|
|
11
10
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
11
|
+
begin
|
|
12
|
+
require "jeweler"
|
|
13
|
+
|
|
14
|
+
Jeweler::Tasks.new do |gem|
|
|
15
|
+
gem.name = "paginate"
|
|
16
|
+
gem.version = Paginate::Version::STRING
|
|
17
|
+
gem.summary = "Paginate collections using SIZE+1 to determine if there is a next page. Includes ActiveRecord and ActionView support."
|
|
18
|
+
gem.email = "fnando.vieira@gmail.com"
|
|
19
|
+
gem.homepage = "http://github.com/fnando/paginate"
|
|
20
|
+
gem.authors = ["Nando Vieira"]
|
|
21
|
+
gem.files = FileList["lib/**/*", "Rakefile", "README.rdoc"]
|
|
22
|
+
end
|
|
21
23
|
|
|
22
|
-
Jeweler::GemcutterTasks.new
|
|
24
|
+
Jeweler::GemcutterTasks.new
|
|
25
|
+
rescue LoadError => e
|
|
26
|
+
puts "You don't have Jeweler installed, so you won't be able to build this gem."
|
|
27
|
+
end
|
data/lib/paginate/renderer.rb
CHANGED
|
@@ -16,19 +16,23 @@ module Paginate
|
|
|
16
16
|
def url_for(page)
|
|
17
17
|
url = options[:url] || options[:fullpath]
|
|
18
18
|
|
|
19
|
-
if url.
|
|
20
|
-
url
|
|
19
|
+
if url.respond_to?(:call)
|
|
20
|
+
url = url.call(page).to_s.dup
|
|
21
21
|
else
|
|
22
|
-
|
|
22
|
+
url = url.dup
|
|
23
|
+
|
|
24
|
+
re = Regexp.new("([&?])#{Regexp.escape(options[:param_name].to_s)}=[^&]*")
|
|
23
25
|
url.gsub!(re, "\\1")
|
|
24
|
-
url.gsub!(
|
|
26
|
+
url.gsub!(/[\?&]$/, "")
|
|
27
|
+
url.gsub!(/&+/, "&")
|
|
25
28
|
url.gsub!(/\?&/, "?")
|
|
26
|
-
url = URI.parse(url).to_s
|
|
27
|
-
|
|
28
|
-
connector = (url =~ /\?/) ? "&" : "?"
|
|
29
29
|
|
|
30
|
-
url
|
|
30
|
+
url << (url =~ /\?/ ? "&" : "?")
|
|
31
|
+
url << page.to_query(options[:param_name])
|
|
31
32
|
end
|
|
33
|
+
|
|
34
|
+
url.gsub!(/&/, "&")
|
|
35
|
+
url
|
|
32
36
|
end
|
|
33
37
|
|
|
34
38
|
def render
|
data/lib/paginate/version.rb
CHANGED
|
@@ -60,11 +60,12 @@ class ActionViewTest < Test::Unit::TestCase
|
|
|
60
60
|
end
|
|
61
61
|
|
|
62
62
|
def test_display_previous_page_link
|
|
63
|
+
$DEBUG = 1
|
|
63
64
|
@params[:page] = 2
|
|
64
65
|
@request.fullpath = "/some/path?page=2"
|
|
65
66
|
html = render(:default, Array.new(11))
|
|
66
67
|
link = html.css("li.previous-page > a").first
|
|
67
|
-
|
|
68
|
+
$DEBUG = 0
|
|
68
69
|
assert_not_nil link
|
|
69
70
|
assert_equal "/some/path?page=1", link["href"]
|
|
70
71
|
assert_equal "Previous page", link.text
|
|
@@ -125,6 +126,17 @@ class ActionViewTest < Test::Unit::TestCase
|
|
|
125
126
|
assert_equal items[0, 10], values
|
|
126
127
|
end
|
|
127
128
|
|
|
129
|
+
def test_iterate_with_fewer_records
|
|
130
|
+
values = []
|
|
131
|
+
items = Array.new(8) {|i| "User#{i}" }
|
|
132
|
+
|
|
133
|
+
@helper.iterate items do |item|
|
|
134
|
+
values << item
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
assert_equal items[0, 8], values
|
|
138
|
+
end
|
|
139
|
+
|
|
128
140
|
def test_iterate_with_index
|
|
129
141
|
values = []
|
|
130
142
|
indices = []
|
|
@@ -33,4 +33,39 @@ class RendererTest < Test::Unit::TestCase
|
|
|
33
33
|
|
|
34
34
|
@renderer.render
|
|
35
35
|
end
|
|
36
|
+
|
|
37
|
+
def test_simple_url
|
|
38
|
+
@renderer.options[:url] = "/some/path"
|
|
39
|
+
assert_equal "/some/path?page=1", @renderer.url_for(1)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def test_simple_url_with_page_param
|
|
43
|
+
@renderer.options[:url] = "/some/path?page=3"
|
|
44
|
+
assert_equal "/some/path?page=1", @renderer.url_for(1)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def test_simple_url_with_page_as_first_param
|
|
48
|
+
@renderer.options[:url] = "/some/path?page=3&a=1&b=2&c=3"
|
|
49
|
+
assert_equal "/some/path?a=1&b=2&c=3&page=1", @renderer.url_for(1)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def test_simple_url_with_page_as_last_param
|
|
53
|
+
@renderer.options[:url] = "/some/path?a=1&b=2&c=3&page=3"
|
|
54
|
+
assert_equal "/some/path?a=1&b=2&c=3&page=1", @renderer.url_for(1)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def test_simple_url_with_page_param_in_the_middle
|
|
58
|
+
@renderer.options[:url] = "/some/path?a=1&b=2&page=3&c=3"
|
|
59
|
+
assert_equal "/some/path?a=1&b=2&c=3&page=1", @renderer.url_for(1)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def test_simple_url_with_page_as_text
|
|
63
|
+
@renderer.options[:url] = "/some/path?a=1&b=2&c=3&page=abc"
|
|
64
|
+
assert_equal "/some/path?a=1&b=2&c=3&page=1", @renderer.url_for(1)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def test_escape_url_from_blocks
|
|
68
|
+
@renderer.options[:url] = proc {|page| "/some/path/#{page}?a=1&b=2"}
|
|
69
|
+
assert_equal "/some/path/1?a=1&b=2", @renderer.url_for(1)
|
|
70
|
+
end
|
|
36
71
|
end
|
metadata
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: paginate
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
+
hash: 31
|
|
4
5
|
prerelease: false
|
|
5
6
|
segments:
|
|
6
7
|
- 0
|
|
7
8
|
- 1
|
|
8
|
-
-
|
|
9
|
-
version: 0.1.
|
|
9
|
+
- 2
|
|
10
|
+
version: 0.1.2
|
|
10
11
|
platform: ruby
|
|
11
12
|
authors:
|
|
12
13
|
- Nando Vieira
|
|
@@ -14,7 +15,7 @@ autorequire:
|
|
|
14
15
|
bindir: bin
|
|
15
16
|
cert_chain: []
|
|
16
17
|
|
|
17
|
-
date: 2010-
|
|
18
|
+
date: 2010-09-22 00:00:00 -03:00
|
|
18
19
|
default_executable:
|
|
19
20
|
dependencies: []
|
|
20
21
|
|
|
@@ -40,6 +41,15 @@ files:
|
|
|
40
41
|
- lib/paginate/locales/pt.yml
|
|
41
42
|
- lib/paginate/renderer.rb
|
|
42
43
|
- lib/paginate/version.rb
|
|
44
|
+
- test/paginate/action_view_test.rb
|
|
45
|
+
- test/paginate/active_record_test.rb
|
|
46
|
+
- test/paginate/base_test.rb
|
|
47
|
+
- test/paginate/config_test.rb
|
|
48
|
+
- test/paginate/renderer_test.rb
|
|
49
|
+
- test/resources/controller.rb
|
|
50
|
+
- test/resources/model.rb
|
|
51
|
+
- test/resources/schema.rb
|
|
52
|
+
- test/test_helper.rb
|
|
43
53
|
has_rdoc: true
|
|
44
54
|
homepage: http://github.com/fnando/paginate
|
|
45
55
|
licenses: []
|
|
@@ -50,23 +60,27 @@ rdoc_options:
|
|
|
50
60
|
require_paths:
|
|
51
61
|
- lib
|
|
52
62
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
63
|
+
none: false
|
|
53
64
|
requirements:
|
|
54
65
|
- - ">="
|
|
55
66
|
- !ruby/object:Gem::Version
|
|
67
|
+
hash: 3
|
|
56
68
|
segments:
|
|
57
69
|
- 0
|
|
58
70
|
version: "0"
|
|
59
71
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
72
|
+
none: false
|
|
60
73
|
requirements:
|
|
61
74
|
- - ">="
|
|
62
75
|
- !ruby/object:Gem::Version
|
|
76
|
+
hash: 3
|
|
63
77
|
segments:
|
|
64
78
|
- 0
|
|
65
79
|
version: "0"
|
|
66
80
|
requirements: []
|
|
67
81
|
|
|
68
82
|
rubyforge_project:
|
|
69
|
-
rubygems_version: 1.3.
|
|
83
|
+
rubygems_version: 1.3.7
|
|
70
84
|
signing_key:
|
|
71
85
|
specification_version: 3
|
|
72
86
|
summary: Paginate collections using SIZE+1 to determine if there is a next page. Includes ActiveRecord and ActionView support.
|