decisiv-will_paginate 2.3.6.1 → 2.3.8.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/Rakefile CHANGED
@@ -32,18 +32,9 @@ desc %{Update ".manifest" with the latest list of project filenames. Respect\
32
32
  .gitignore by excluding everything that git ignores. Update `files` and\
33
33
  `test_files` arrays in "*.gemspec" file if it's present.}
34
34
  task :manifest do
35
- list = Dir['**/*'].sort
36
- spec_file = Dir['*.gemspec'].first
37
- list -= [spec_file] if spec_file
35
+ list = `git ls-files --full-name --exclude=*.gemspec --exclude=.*`.chomp.split("\n")
38
36
 
39
- File.read('.gitignore').each_line do |glob|
40
- glob = glob.chomp.sub(/^\//, '')
41
- list -= Dir[glob]
42
- list -= Dir["#{glob}/**/*"] if File.directory?(glob) and !File.symlink?(glob)
43
- puts "excluding #{glob}"
44
- end
45
-
46
- if spec_file
37
+ if spec_file = Dir['*.gemspec'].first
47
38
  spec = File.read spec_file
48
39
  spec.gsub! /^(\s* s.(test_)?files \s* = \s* )( \[ [^\]]* \] | %w\( [^)]* \) )/mx do
49
40
  assignment = $1
@@ -51,9 +42,9 @@ task :manifest do
51
42
  '%s%%w(%s)' % [assignment, bunch.join(' ')]
52
43
  end
53
44
 
54
- File.open(spec_file, 'w') {|f| f << spec }
45
+ File.open(spec_file, 'w') { |f| f << spec }
55
46
  end
56
- File.open('.manifest', 'w') {|f| f << list.join("\n") }
47
+ File.open('.manifest', 'w') { |f| f << list.join("\n") }
57
48
  end
58
49
 
59
50
  task :examples do
@@ -68,11 +68,7 @@ module WillPaginate
68
68
 
69
69
  def self.warn(message, callstack = caller)
70
70
  message = 'WillPaginate: ' + message.strip.gsub(/\s+/, ' ')
71
- behavior.call(message, callstack) if behavior && !silenced?
72
- end
73
-
74
- def self.silenced?
75
- ActiveSupport::Deprecation.silenced?
71
+ ActiveSupport::Deprecation.warn(message, callstack)
76
72
  end
77
73
  end
78
74
  end
@@ -82,7 +82,7 @@ module WillPaginate
82
82
  #
83
83
  # The Array#paginate API has since then changed, but this still serves as a
84
84
  # fine example of WillPaginate::Collection usage.
85
- def self.create(page, per_page, total = nil, &block)
85
+ def self.create(page, per_page, total = nil)
86
86
  pager = new(page, per_page, total)
87
87
  yield pager
88
88
  pager
@@ -61,7 +61,7 @@ module WillPaginate
61
61
  #
62
62
  # All other options (+conditions+, +order+, ...) are forwarded to +find+
63
63
  # and +count+ calls.
64
- def paginate(*args, &block)
64
+ def paginate(*args)
65
65
  options = args.pop
66
66
  page, per_page, total_entries = wp_parse_options(options)
67
67
  finder = (options[:finder] || 'find').to_s
@@ -79,7 +79,7 @@ module WillPaginate
79
79
 
80
80
  args << find_options
81
81
  # @options_from_last_find = nil
82
- pager.replace send(finder, *args, &block)
82
+ pager.replace(send(finder, *args) { |*a| yield(*a) if block_given? })
83
83
 
84
84
  # magic counting for user convenience:
85
85
  pager.total_entries = wp_count(count_options, args, finder) unless pager.total_entries
@@ -96,7 +96,7 @@ module WillPaginate
96
96
  #
97
97
  # See {Faking Cursors in ActiveRecord}[http://weblog.jamisbuck.org/2007/4/6/faking-cursors-in-activerecord]
98
98
  # where Jamis Buck describes this and a more efficient way for MySQL.
99
- def paginated_each(options = {}, &block)
99
+ def paginated_each(options = {})
100
100
  options = { :order => 'id', :page => 1 }.merge options
101
101
  options[:page] = options[:page].to_i
102
102
  options[:total_entries] = 0 # skip the individual count queries
@@ -106,7 +106,7 @@ module WillPaginate
106
106
  collection = paginate(options)
107
107
  with_exclusive_scope(:find => {}) do
108
108
  # using exclusive scope so that the block is yielded in scope-free context
109
- total += collection.each(&block).size
109
+ total += collection.each { |item| yield item }.size
110
110
  end
111
111
  options[:page] += 1
112
112
  end until collection.size < collection.per_page
@@ -161,10 +161,14 @@ module WillPaginate
161
161
 
162
162
  protected
163
163
 
164
- def method_missing_with_paginate(method, *args, &block) #:nodoc:
164
+ def method_missing_with_paginate(method, *args) #:nodoc:
165
165
  # did somebody tried to paginate? if not, let them be
166
166
  unless method.to_s.index('paginate') == 0
167
- return method_missing_without_paginate(method, *args, &block)
167
+ if block_given?
168
+ return method_missing_without_paginate(method, *args) { |*a| yield(*a) }
169
+ else
170
+ return method_missing_without_paginate(method, *args)
171
+ end
168
172
  end
169
173
 
170
174
  # paginate finders are really just find_* with limit and offset
@@ -177,7 +181,7 @@ module WillPaginate
177
181
  options[:finder] = finder
178
182
  args << options
179
183
 
180
- paginate(*args, &block)
184
+ paginate(*args) { |*a| yield(*a) if block_given? }
181
185
  end
182
186
 
183
187
  # Does the not-so-trivial job of finding out the total number of entries
@@ -83,7 +83,7 @@ module WillPaginate
83
83
  #
84
84
  # expected_options = { :conditions => { :colored => 'red' } }
85
85
  # assert_equal expected_options, Shirt.colored('red').proxy_options
86
- def named_scope(name, options = {}, &block)
86
+ def named_scope(name, options = {})
87
87
  name = name.to_sym
88
88
  scopes[name] = lambda do |parent_scope, *args|
89
89
  Scope.new(parent_scope, case options
@@ -91,7 +91,7 @@ module WillPaginate
91
91
  options
92
92
  when Proc
93
93
  options.call(*args)
94
- end, &block)
94
+ end) { |*a| yield(*a) if block_given? }
95
95
  end
96
96
  (class << self; self end).instance_eval do
97
97
  define_method name do |*args|
@@ -112,9 +112,9 @@ module WillPaginate
112
112
 
113
113
  delegate :scopes, :with_scope, :to => :proxy_scope
114
114
 
115
- def initialize(proxy_scope, options, &block)
115
+ def initialize(proxy_scope, options)
116
116
  [options[:extend]].flatten.each { |extension| extend extension } if options[:extend]
117
- extend Module.new(&block) if block_given?
117
+ extend Module.new { |*args| yield(*args) } if block_given?
118
118
  @proxy_scope, @proxy_options = proxy_scope, options.except(:extend)
119
119
  end
120
120
 
@@ -152,12 +152,12 @@ module WillPaginate
152
152
  end
153
153
 
154
154
  private
155
- def method_missing(method, *args, &block)
155
+ def method_missing(method, *args)
156
156
  if scopes.include?(method)
157
157
  scopes[method].call(self, *args)
158
158
  else
159
159
  with_scope :find => proxy_options do
160
- proxy_scope.send(method, *args, &block)
160
+ proxy_scope.send(method, *args) { |*a| yield(*a) if block_given? }
161
161
  end
162
162
  end
163
163
  end
@@ -1,7 +1,7 @@
1
1
  ActiveRecord::Associations::AssociationProxy.class_eval do
2
2
  protected
3
- def with_scope(*args, &block)
4
- @reflection.klass.send :with_scope, *args, &block
3
+ def with_scope(*args)
4
+ @reflection.klass.send(:with_scope, *args) { |*a| yield(*a) if block_given? }
5
5
  end
6
6
  end
7
7
 
@@ -10,11 +10,11 @@ end
10
10
  klass.class_eval do
11
11
  protected
12
12
  alias :method_missing_without_scopes :method_missing_without_paginate
13
- def method_missing_without_paginate(method, *args, &block)
13
+ def method_missing_without_paginate(method, *args)
14
14
  if @reflection.klass.scopes.include?(method)
15
- @reflection.klass.scopes[method].call(self, *args, &block)
15
+ @reflection.klass.scopes[method].call(self, *args) { |*a| yield(*a) if block_given? }
16
16
  else
17
- method_missing_without_scopes(method, *args, &block)
17
+ method_missing_without_scopes(method, *args) { |*a| yield(*a) if block_given? }
18
18
  end
19
19
  end
20
20
  end
@@ -23,14 +23,14 @@ end
23
23
  # Rails 1.2.6
24
24
  ActiveRecord::Associations::HasAndBelongsToManyAssociation.class_eval do
25
25
  protected
26
- def method_missing(method, *args, &block)
26
+ def method_missing(method, *args)
27
27
  if @target.respond_to?(method) || (!@reflection.klass.respond_to?(method) && Class.respond_to?(method))
28
28
  super
29
29
  elsif @reflection.klass.scopes.include?(method)
30
30
  @reflection.klass.scopes[method].call(self, *args)
31
31
  else
32
32
  @reflection.klass.with_scope(:find => { :conditions => @finder_sql, :joins => @join_sql, :readonly => false }) do
33
- @reflection.klass.send(method, *args, &block)
33
+ @reflection.klass.send(method, *args) { |*a| yield(*a) if block_given? }
34
34
  end
35
35
  end
36
36
  end
@@ -2,7 +2,7 @@ module WillPaginate
2
2
  module VERSION
3
3
  MAJOR = 2
4
4
  MINOR = 3
5
- TINY = 5
5
+ TINY = 8
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
@@ -99,7 +99,7 @@ module WillPaginate
99
99
 
100
100
  options = options.symbolize_keys.reverse_merge WillPaginate::ViewHelpers.pagination_options
101
101
  if options[:prev_label]
102
- WillPaginate::Deprecation::warn(":prev_label view parameter is now :previous_label; the old name has been deprecated.")
102
+ WillPaginate::Deprecation::warn(":prev_label view parameter is now :previous_label; the old name has been deprecated", caller)
103
103
  options[:previous_label] = options.delete(:prev_label)
104
104
  end
105
105
 
@@ -185,12 +185,11 @@ module WillPaginate
185
185
 
186
186
  def self.total_pages_for_collection(collection) #:nodoc:
187
187
  if collection.respond_to?('page_count') and !collection.respond_to?('total_pages')
188
- WillPaginate::Deprecation.warn <<-MSG
188
+ WillPaginate::Deprecation.warn %{
189
189
  You are using a paginated collection of class #{collection.class.name}
190
190
  which conforms to the old API of WillPaginate::Collection by using
191
191
  `page_count`, while the current method name is `total_pages`. Please
192
- upgrade yours or 3rd-party code that provides the paginated collection.
193
- MSG
192
+ upgrade yours or 3rd-party code that provides the paginated collection}, caller
194
193
  class << collection
195
194
  def total_pages; page_count; end
196
195
  end
@@ -322,8 +321,7 @@ module WillPaginate
322
321
  stringified_merge @url_params, @options[:params] if @options[:params]
323
322
 
324
323
  if complex = param_name.index(/[^\w-]/)
325
- page_param = (defined?(CGIMethods) ? CGIMethods : ActionController::AbstractRequest).
326
- parse_query_parameters("#{param_name}=#{page}")
324
+ page_param = parse_query_parameters("#{param_name}=#{page}")
327
325
 
328
326
  stringified_merge @url_params, page_param
329
327
  else
@@ -386,5 +384,19 @@ module WillPaginate
386
384
  end
387
385
  end
388
386
  end
387
+
388
+ def parse_query_parameters(params)
389
+ if defined?(CGIMethods)
390
+ CGIMethods.parse_query_parameters(params)
391
+ elsif defined?(ActionController::AbstractRequest)
392
+ ActionController::AbstractRequest.parse_query_parameters(params)
393
+ elsif defined?(ActionController::UrlEncodedPairParser)
394
+ # For Rails > 2.2
395
+ ActionController::UrlEncodedPairParser.parse_query_parameters(params)
396
+ else
397
+ # For Rails > 2.3
398
+ Rack::Utils.parse_nested_query(params)
399
+ end
400
+ end
389
401
  end
390
402
  end
@@ -29,7 +29,10 @@ end
29
29
 
30
30
  # Wrap tests that use Mocha and skip if unavailable.
31
31
  def uses_mocha(test_name)
32
- require 'mocha' unless Object.const_defined?(:Mocha)
32
+ unless Object.const_defined?(:Mocha)
33
+ gem 'mocha', '>= 0.9.5'
34
+ require 'mocha'
35
+ end
33
36
  rescue LoadError => load_error
34
37
  $stderr.puts "Skipping #{test_name} tests. `gem install mocha` and try again."
35
38
  else
@@ -1,6 +1,13 @@
1
1
  require 'lib/activerecord_test_connector'
2
2
 
3
3
  class ActiveRecordTestCase < Test::Unit::TestCase
4
+ if defined?(ActiveSupport::Testing::SetupAndTeardown)
5
+ include ActiveSupport::Testing::SetupAndTeardown
6
+ end
7
+
8
+ if defined?(ActiveRecord::TestFixtures)
9
+ include ActiveRecord::TestFixtures
10
+ end
4
11
  # Set our fixture path
5
12
  if ActiveRecordTestConnector.able_to_connect
6
13
  self.fixture_path = File.join(File.dirname(__FILE__), '..', 'fixtures')
@@ -17,6 +17,13 @@ end
17
17
  ActionController::Base.perform_caching = false
18
18
 
19
19
  class WillPaginate::ViewTestCase < Test::Unit::TestCase
20
+ if defined?(ActionController::TestCase::Assertions)
21
+ include ActionController::TestCase::Assertions
22
+ end
23
+ if defined?(ActiveSupport::Testing::Deprecation)
24
+ include ActiveSupport::Testing::Deprecation
25
+ end
26
+
20
27
  def setup
21
28
  super
22
29
  @controller = DummyController.new
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: decisiv-will_paginate
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.6.1
4
+ version: 2.3.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - "Mislav Marohni\xC4\x87"
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2008-10-27 00:00:00 -07:00
13
+ date: 2009-05-05 00:00:00 -07:00
14
14
  default_executable:
15
15
  dependencies: []
16
16
 
@@ -29,15 +29,12 @@ files:
29
29
  - LICENSE
30
30
  - README.rdoc
31
31
  - Rakefile
32
- - examples
33
32
  - examples/apple-circle.gif
34
33
  - examples/index.haml
35
34
  - examples/index.html
36
35
  - examples/pagination.css
37
36
  - examples/pagination.sass
38
37
  - init.rb
39
- - lib
40
- - lib/will_paginate
41
38
  - lib/will_paginate.rb
42
39
  - lib/will_paginate/array.rb
43
40
  - lib/will_paginate/collection.rb
@@ -47,13 +44,11 @@ files:
47
44
  - lib/will_paginate/named_scope_patch.rb
48
45
  - lib/will_paginate/version.rb
49
46
  - lib/will_paginate/view_helpers.rb
50
- - test
51
47
  - test/boot.rb
52
48
  - test/collection_test.rb
53
49
  - test/console
54
50
  - test/database.yml
55
51
  - test/finder_test.rb
56
- - test/fixtures
57
52
  - test/fixtures/admin.rb
58
53
  - test/fixtures/developer.rb
59
54
  - test/fixtures/developers_projects.yml
@@ -67,7 +62,6 @@ files:
67
62
  - test/fixtures/user.rb
68
63
  - test/fixtures/users.yml
69
64
  - test/helper.rb
70
- - test/lib
71
65
  - test/lib/activerecord_test_case.rb
72
66
  - test/lib/activerecord_test_connector.rb
73
67
  - test/lib/load_fixtures.rb
@@ -109,7 +103,6 @@ test_files:
109
103
  - test/console
110
104
  - test/database.yml
111
105
  - test/finder_test.rb
112
- - test/fixtures
113
106
  - test/fixtures/admin.rb
114
107
  - test/fixtures/developer.rb
115
108
  - test/fixtures/developers_projects.yml
@@ -123,7 +116,6 @@ test_files:
123
116
  - test/fixtures/user.rb
124
117
  - test/fixtures/users.yml
125
118
  - test/helper.rb
126
- - test/lib
127
119
  - test/lib/activerecord_test_case.rb
128
120
  - test/lib/activerecord_test_connector.rb
129
121
  - test/lib/load_fixtures.rb