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 CHANGED
@@ -1,6 +1,5 @@
1
1
  require "rake/testtask"
2
- require "jeweler"
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
- Jeweler::Tasks.new do |gem|
13
- gem.name = "paginate"
14
- gem.version = Paginate::Version::STRING
15
- gem.summary = "Paginate collections using SIZE+1 to determine if there is a next page. Includes ActiveRecord and ActionView support."
16
- gem.email = "fnando.vieira@gmail.com"
17
- gem.homepage = "http://github.com/fnando/paginate"
18
- gem.authors = ["Nando Vieira"]
19
- gem.files = FileList["lib/**/*", "Rakefile", "README.rdoc"]
20
- end
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
@@ -16,19 +16,23 @@ module Paginate
16
16
  def url_for(page)
17
17
  url = options[:url] || options[:fullpath]
18
18
 
19
- if url.kind_of?(Proc)
20
- url[page]
19
+ if url.respond_to?(:call)
20
+ url = url.call(page).to_s.dup
21
21
  else
22
- re = Regexp.new("([&?])#{Regexp.escape(options[:param_name].to_s)}=[0-9]+")
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 + connector + page.to_s.to_query(options[:param_name])
30
+ url << (url =~ /\?/ ? "&" : "?")
31
+ url << page.to_query(options[:param_name])
31
32
  end
33
+
34
+ url.gsub!(/&/, "&amp;")
35
+ url
32
36
  end
33
37
 
34
38
  def render
@@ -2,7 +2,7 @@ module Paginate
2
2
  module Version
3
3
  MAJOR = 0
4
4
  MINOR = 1
5
- PATCH = 1
5
+ PATCH = 2
6
6
  STRING = "#{MAJOR}.#{MINOR}.#{PATCH}"
7
7
  end
8
8
  end
@@ -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&amp;b=2&amp;c=3&amp;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&amp;b=2&amp;c=3&amp;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&amp;b=2&amp;c=3&amp;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&amp;b=2&amp;c=3&amp;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&amp;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
- - 1
9
- version: 0.1.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-06-04 00:00:00 -03:00
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.6
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.