will_paginate 3.1.6 → 4.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 +5 -5
- data/README.md +6 -9
- data/lib/will_paginate/active_record.rb +7 -11
- data/lib/will_paginate/deprecation.rb +2 -2
- data/lib/will_paginate/i18n.rb +3 -3
- data/lib/will_paginate/locale/en.yml +4 -0
- data/lib/will_paginate/mongoid.rb +2 -0
- data/lib/will_paginate/page_number.rb +7 -11
- data/lib/will_paginate/railtie.rb +3 -4
- data/lib/will_paginate/version.rb +3 -3
- data/lib/will_paginate/view_helpers/action_view.rb +8 -4
- data/lib/will_paginate/view_helpers/hanami.rb +41 -0
- data/lib/will_paginate/view_helpers/link_renderer.rb +14 -8
- data/lib/will_paginate.rb +0 -12
- metadata +17 -48
- data/lib/will_paginate/data_mapper.rb +0 -100
- data/lib/will_paginate/view_helpers/merb.rb +0 -26
- data/spec/collection_spec.rb +0 -139
- data/spec/console +0 -12
- data/spec/console_fixtures.rb +0 -28
- data/spec/database.yml +0 -29
- data/spec/fake_rubygems.rb +0 -18
- data/spec/finders/active_record_spec.rb +0 -417
- data/spec/finders/activerecord_test_connector.rb +0 -127
- data/spec/finders/data_mapper_spec.rb +0 -114
- data/spec/finders/data_mapper_test_connector.rb +0 -54
- data/spec/finders/mongoid_spec.rb +0 -145
- data/spec/finders/sequel_spec.rb +0 -65
- data/spec/finders/sequel_test_connector.rb +0 -15
- data/spec/fixtures/admin.rb +0 -3
- data/spec/fixtures/developer.rb +0 -9
- data/spec/fixtures/developers_projects.yml +0 -13
- data/spec/fixtures/project.rb +0 -13
- data/spec/fixtures/projects.yml +0 -6
- data/spec/fixtures/replies.yml +0 -29
- data/spec/fixtures/reply.rb +0 -8
- data/spec/fixtures/schema.rb +0 -38
- data/spec/fixtures/topic.rb +0 -8
- data/spec/fixtures/topics.yml +0 -30
- data/spec/fixtures/user.rb +0 -2
- data/spec/fixtures/users.yml +0 -35
- data/spec/matchers/deprecation_matcher.rb +0 -27
- data/spec/matchers/phrase_matcher.rb +0 -19
- data/spec/matchers/query_count_matcher.rb +0 -36
- data/spec/page_number_spec.rb +0 -83
- data/spec/per_page_spec.rb +0 -41
- data/spec/spec_helper.rb +0 -46
- data/spec/view_helpers/action_view_spec.rb +0 -468
- data/spec/view_helpers/base_spec.rb +0 -143
- data/spec/view_helpers/link_renderer_base_spec.rb +0 -87
- data/spec/view_helpers/view_example_group.rb +0 -146
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 95d6a838948c59686c5768a47e8e7e52b99c55868775645285022bc0d7c0e280
|
4
|
+
data.tar.gz: c92449392a8191a656e19d5e722314a2f2c1c50d646f5d98359b0d8193539dd2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4511c22cbbf023ab6e32fc457c487ec393c2fdf6f8a3910ee0c0d8385061a98307b6a8a8f02a25af33f9f648f735c5d20d942412b3a7ff5a40d2d7ba67491917
|
7
|
+
data.tar.gz: a062b0bce8e25a24b818b926957b98f970e86b79f89fbb1e2cdfbce382a030d02b3f02800cce6dd1671d84d3251e33879095a1bbe669a7348df90a3664be95ec
|
data/README.md
CHANGED
@@ -1,25 +1,23 @@
|
|
1
1
|
# will_paginate
|
2
2
|
|
3
|
-
will_paginate is a pagination library that integrates with Ruby on Rails, Sinatra,
|
4
|
-
|
5
|
-
Installation:
|
3
|
+
will_paginate is a pagination library that integrates with Ruby on Rails, Sinatra, Hanami::View, and Sequel.
|
6
4
|
|
7
5
|
``` ruby
|
8
|
-
|
9
|
-
gem 'will_paginate', '~> 3.1.0'
|
6
|
+
gem 'will_paginate', '~> 3.3'
|
10
7
|
```
|
11
8
|
|
12
9
|
See [installation instructions][install] on the wiki for more info.
|
13
10
|
|
11
|
+
ℹ️ will_paginate is now in _maintenance mode_ and it will not be receiving new features. [See alternatives](https://www.ruby-toolbox.com/categories/pagination)
|
14
12
|
|
15
13
|
## Basic will_paginate use
|
16
14
|
|
17
15
|
``` ruby
|
18
16
|
## perform a paginated query:
|
19
|
-
@posts = Post.paginate(:
|
17
|
+
@posts = Post.paginate(page: params[:page])
|
20
18
|
|
21
19
|
# or, use an explicit "per page" limit:
|
22
|
-
Post.paginate(:
|
20
|
+
Post.paginate(page: params[:page], per_page: 30)
|
23
21
|
|
24
22
|
## render page links in the view:
|
25
23
|
<%= will_paginate @posts %>
|
@@ -49,13 +47,12 @@ Post.where(:published => true).paginate(:page => params[:page]).order('id DESC')
|
|
49
47
|
Post.page(params[:page]).order('created_at DESC')
|
50
48
|
```
|
51
49
|
|
52
|
-
See [the wiki][wiki] for more documentation. [
|
50
|
+
See [the wiki][wiki] for more documentation. [Report bugs][issues] on GitHub.
|
53
51
|
|
54
52
|
Happy paginating.
|
55
53
|
|
56
54
|
|
57
55
|
[wiki]: https://github.com/mislav/will_paginate/wiki
|
58
56
|
[install]: https://github.com/mislav/will_paginate/wiki/Installation "will_paginate installation"
|
59
|
-
[group]: http://groups.google.com/group/will_paginate "will_paginate discussion and support group"
|
60
57
|
[issues]: https://github.com/mislav/will_paginate/issues
|
61
58
|
[css]: http://mislav.github.io/will_paginate/
|
@@ -83,7 +83,10 @@ module WillPaginate
|
|
83
83
|
excluded = [:order, :limit, :offset, :reorder]
|
84
84
|
excluded << :includes unless eager_loading?
|
85
85
|
rel = self.except(*excluded)
|
86
|
-
column_name =
|
86
|
+
column_name = if rel.select_values.present?
|
87
|
+
select = rel.select_values.join(", ")
|
88
|
+
select if select !~ /[,*]/
|
89
|
+
end || :all
|
87
90
|
rel.count(column_name)
|
88
91
|
else
|
89
92
|
super(*args)
|
@@ -102,9 +105,7 @@ module WillPaginate
|
|
102
105
|
# overloaded to be pagination-aware
|
103
106
|
def empty?
|
104
107
|
if !loaded? and offset_value
|
105
|
-
|
106
|
-
result = result.size if result.respond_to?(:size) and !result.is_a?(Integer)
|
107
|
-
result <= offset_value
|
108
|
+
total_entries <= offset_value
|
108
109
|
else
|
109
110
|
super
|
110
111
|
end
|
@@ -136,13 +137,6 @@ module WillPaginate
|
|
136
137
|
other.total_entries = nil if defined? @total_entries_queried
|
137
138
|
other
|
138
139
|
end
|
139
|
-
|
140
|
-
def select_for_count(rel)
|
141
|
-
if rel.select_values.present?
|
142
|
-
select = rel.select_values.join(", ")
|
143
|
-
select if select !~ /[,*]/
|
144
|
-
end
|
145
|
-
end
|
146
140
|
end
|
147
141
|
|
148
142
|
module Pagination
|
@@ -216,6 +210,8 @@ module WillPaginate
|
|
216
210
|
WHERE rownum <= #{pager.offset + pager.per_page}
|
217
211
|
) WHERE rnum >= #{pager.offset}
|
218
212
|
SQL
|
213
|
+
elsif (self.connection.adapter_name =~ /^sqlserver/i)
|
214
|
+
query << " OFFSET #{pager.offset} ROWS FETCH NEXT #{pager.per_page} ROWS ONLY"
|
219
215
|
else
|
220
216
|
query << " LIMIT #{pager.per_page} OFFSET #{pager.offset}"
|
221
217
|
end
|
@@ -31,8 +31,8 @@ module WillPaginate::Deprecation
|
|
31
31
|
super
|
32
32
|
end
|
33
33
|
|
34
|
-
def deprecate_key(*keys)
|
35
|
-
message = block_given? ?
|
34
|
+
def deprecate_key(*keys, &block)
|
35
|
+
message = block_given? ? block : keys.pop
|
36
36
|
Array(keys).each { |key| @deprecated[key] = message }
|
37
37
|
end
|
38
38
|
|
data/lib/will_paginate/i18n.rb
CHANGED
@@ -8,11 +8,11 @@ module WillPaginate
|
|
8
8
|
Dir["#{locale_dir}/*.{rb,yml}"]
|
9
9
|
end
|
10
10
|
|
11
|
-
def will_paginate_translate(keys, options = {})
|
11
|
+
def will_paginate_translate(keys, options = {}, &block)
|
12
12
|
if defined? ::I18n
|
13
13
|
defaults = Array(keys).dup
|
14
|
-
defaults <<
|
15
|
-
::I18n.translate(defaults.shift, options.merge(:default => defaults, :scope => :will_paginate))
|
14
|
+
defaults << block if block_given?
|
15
|
+
::I18n.translate(defaults.shift, **options.merge(:default => defaults, :scope => :will_paginate))
|
16
16
|
else
|
17
17
|
key = Array === keys ? keys.first : keys
|
18
18
|
yield key, options
|
@@ -1,8 +1,12 @@
|
|
1
1
|
en:
|
2
2
|
will_paginate:
|
3
3
|
previous_label: "← Previous"
|
4
|
+
previous_aria_label: "Previous page"
|
4
5
|
next_label: "Next →"
|
6
|
+
next_aria_label: "Next page"
|
5
7
|
page_gap: "…"
|
8
|
+
container_aria_label: "Pagination"
|
9
|
+
page_aria_label: "Page %{page}"
|
6
10
|
|
7
11
|
page_entries_info:
|
8
12
|
single_page:
|
@@ -8,6 +8,8 @@ module WillPaginate
|
|
8
8
|
extend CollectionMethods
|
9
9
|
@current_page = WillPaginate::PageNumber(options[:page] || @current_page || 1)
|
10
10
|
@page_multiplier = current_page - 1
|
11
|
+
@total_entries = options.delete(:total_entries)
|
12
|
+
|
11
13
|
pp = (options[:per_page] || per_page || WillPaginate.per_page).to_i
|
12
14
|
limit(pp).skip(@page_multiplier * pp)
|
13
15
|
end
|
@@ -1,4 +1,3 @@
|
|
1
|
-
require 'delegate'
|
2
1
|
require 'forwardable'
|
3
2
|
|
4
3
|
module WillPaginate
|
@@ -6,7 +5,7 @@ module WillPaginate
|
|
6
5
|
module InvalidPage; end
|
7
6
|
|
8
7
|
# integer representing a page number
|
9
|
-
class PageNumber <
|
8
|
+
class PageNumber < Numeric
|
10
9
|
# a value larger than this is not supported in SQL queries
|
11
10
|
BIGINT = 9223372036854775807
|
12
11
|
|
@@ -18,13 +17,17 @@ module WillPaginate
|
|
18
17
|
raise RangeError, "invalid #{name}: #{value.inspect}"
|
19
18
|
end
|
20
19
|
@name = name
|
21
|
-
|
20
|
+
@value = value
|
22
21
|
rescue ArgumentError, TypeError, RangeError => error
|
23
22
|
error.extend InvalidPage
|
24
23
|
raise error
|
25
24
|
end
|
26
25
|
|
27
|
-
|
26
|
+
def to_i
|
27
|
+
@value
|
28
|
+
end
|
29
|
+
|
30
|
+
def_delegators :@value, :coerce, :==, :<=>, :to_s, :+, :-, :*, :/, :to_json
|
28
31
|
|
29
32
|
def inspect
|
30
33
|
"#{@name} #{to_i}"
|
@@ -40,13 +43,6 @@ module WillPaginate
|
|
40
43
|
alias is_a? kind_of?
|
41
44
|
end
|
42
45
|
|
43
|
-
# Ultrahax: makes `Integer === current_page` checks pass
|
44
|
-
Numeric.extend Module.new {
|
45
|
-
def ===(obj)
|
46
|
-
obj.instance_of? PageNumber or super
|
47
|
-
end
|
48
|
-
}
|
49
|
-
|
50
46
|
# An idemptotent coercion method
|
51
47
|
def self.PageNumber(value, name = 'page')
|
52
48
|
case value
|
@@ -1,4 +1,3 @@
|
|
1
|
-
require 'will_paginate'
|
2
1
|
require 'will_paginate/page_number'
|
3
2
|
require 'will_paginate/collection'
|
4
3
|
require 'will_paginate/i18n'
|
@@ -39,7 +38,7 @@ module WillPaginate
|
|
39
38
|
end
|
40
39
|
def status_code_with_paginate(exception = @exception)
|
41
40
|
actual_exception = if exception.respond_to?(:cause)
|
42
|
-
exception.cause
|
41
|
+
exception.cause || exception
|
43
42
|
elsif exception.respond_to?(:original_exception)
|
44
43
|
exception.original_exception
|
45
44
|
else
|
@@ -60,11 +59,11 @@ module WillPaginate
|
|
60
59
|
end
|
61
60
|
|
62
61
|
module ControllerRescuePatch
|
63
|
-
def rescue_from(*args, &block)
|
62
|
+
def rescue_from(*args, **kwargs, &block)
|
64
63
|
if idx = args.index(WillPaginate::InvalidPage)
|
65
64
|
args[idx] = args[idx].name
|
66
65
|
end
|
67
|
-
super(*args, &block)
|
66
|
+
super(*args, **kwargs, &block)
|
68
67
|
end
|
69
68
|
end
|
70
69
|
end
|
@@ -43,7 +43,7 @@ module WillPaginate
|
|
43
43
|
# Wrapper for rendering pagination links at both top and bottom of a block
|
44
44
|
# of content.
|
45
45
|
#
|
46
|
-
#
|
46
|
+
# <%= paginated_section @posts do %>
|
47
47
|
# <ol id="posts">
|
48
48
|
# <% for post in @posts %>
|
49
49
|
# <li> ... </li>
|
@@ -80,7 +80,7 @@ module WillPaginate
|
|
80
80
|
defaults = nil
|
81
81
|
key = keys
|
82
82
|
end
|
83
|
-
translate(key, options.merge(:default => defaults, :scope => :will_paginate))
|
83
|
+
translate(key, **options.merge(:default => defaults, :scope => :will_paginate))
|
84
84
|
else
|
85
85
|
super
|
86
86
|
end
|
@@ -119,8 +119,12 @@ module WillPaginate
|
|
119
119
|
end
|
120
120
|
|
121
121
|
def merge_get_params(url_params)
|
122
|
-
if @template.respond_to?
|
123
|
-
|
122
|
+
if @template.respond_to?(:request) and @template.request
|
123
|
+
if @template.request.get?
|
124
|
+
symbolized_update(url_params, @template.params, GET_PARAMS_BLACKLIST)
|
125
|
+
elsif @template.request.respond_to?(:query_parameters)
|
126
|
+
symbolized_update(url_params, @template.request.query_parameters, GET_PARAMS_BLACKLIST)
|
127
|
+
end
|
124
128
|
end
|
125
129
|
url_params
|
126
130
|
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'hanami/view'
|
2
|
+
require 'will_paginate/view_helpers'
|
3
|
+
require 'will_paginate/view_helpers/link_renderer'
|
4
|
+
|
5
|
+
module WillPaginate
|
6
|
+
module Hanami
|
7
|
+
module Helpers
|
8
|
+
include ViewHelpers
|
9
|
+
|
10
|
+
def will_paginate(collection, options = {}) #:nodoc:
|
11
|
+
options = options.merge(:renderer => LinkRenderer) unless options[:renderer]
|
12
|
+
str = super(collection, options)
|
13
|
+
str && raw(str)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
class LinkRenderer < ViewHelpers::LinkRenderer
|
18
|
+
protected
|
19
|
+
|
20
|
+
def url(page)
|
21
|
+
str = File.join(request_env['SCRIPT_NAME'].to_s, request_env['PATH_INFO'])
|
22
|
+
params = request_env['rack.request.query_hash'].merge(param_name.to_s => page.to_s)
|
23
|
+
params.update @options[:params] if @options[:params]
|
24
|
+
str << '?' << build_query(params)
|
25
|
+
end
|
26
|
+
|
27
|
+
def request_env
|
28
|
+
@template.params.env
|
29
|
+
end
|
30
|
+
|
31
|
+
def build_query(params)
|
32
|
+
Rack::Utils.build_nested_query params
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.included(base)
|
37
|
+
base.include Helpers
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
@@ -35,16 +35,20 @@ module WillPaginate
|
|
35
35
|
# Returns the subset of +options+ this instance was initialized with that
|
36
36
|
# represent HTML attributes for the container element of pagination links.
|
37
37
|
def container_attributes
|
38
|
-
@container_attributes ||=
|
38
|
+
@container_attributes ||= {
|
39
|
+
:role => 'navigation',
|
40
|
+
:"aria-label" => @template.will_paginate_translate(:container_aria_label) { 'Pagination' }
|
41
|
+
}.update @options.except(*(ViewHelpers.pagination_options.keys + [:renderer] - [:class]))
|
39
42
|
end
|
40
43
|
|
41
44
|
protected
|
42
45
|
|
43
46
|
def page_number(page)
|
47
|
+
aria_label = @template.will_paginate_translate(:page_aria_label, :page => page.to_i) { "Page #{page}" }
|
44
48
|
if page == current_page
|
45
|
-
tag(:em, page, :class => 'current')
|
49
|
+
tag(:em, page, :class => 'current', :"aria-label" => aria_label, :"aria-current" => 'page')
|
46
50
|
else
|
47
|
-
link(page, page, :rel => rel_value(page))
|
51
|
+
link(page, page, :rel => rel_value(page), :"aria-label" => aria_label)
|
48
52
|
end
|
49
53
|
end
|
50
54
|
|
@@ -55,19 +59,21 @@ module WillPaginate
|
|
55
59
|
|
56
60
|
def previous_page
|
57
61
|
num = @collection.current_page > 1 && @collection.current_page - 1
|
58
|
-
|
62
|
+
aria_label = @template.will_paginate_translate(:previous_aria_label) { "Previous page" }
|
63
|
+
previous_or_next_page(num, @options[:previous_label], 'previous_page', aria_label)
|
59
64
|
end
|
60
65
|
|
61
66
|
def next_page
|
62
67
|
num = @collection.current_page < total_pages && @collection.current_page + 1
|
63
|
-
|
68
|
+
aria_label = @template.will_paginate_translate(:next_aria_label) { "Next page" }
|
69
|
+
previous_or_next_page(num, @options[:next_label], 'next_page', aria_label)
|
64
70
|
end
|
65
71
|
|
66
|
-
def previous_or_next_page(page, text, classname)
|
72
|
+
def previous_or_next_page(page, text, classname, aria_label = nil)
|
67
73
|
if page
|
68
|
-
link(text, page, :class => classname)
|
74
|
+
link(text, page, :class => classname, :'aria-label' => aria_label)
|
69
75
|
else
|
70
|
-
tag(:span, text, :class => classname + ' disabled')
|
76
|
+
tag(:span, text, :class => classname + ' disabled', :'aria-label' => aria_label)
|
71
77
|
end
|
72
78
|
end
|
73
79
|
|
data/lib/will_paginate.rb
CHANGED
@@ -8,18 +8,6 @@ elsif defined?(Rails::Initializer)
|
|
8
8
|
raise "will_paginate 3.0 is not compatible with Rails 2.3 or older"
|
9
9
|
end
|
10
10
|
|
11
|
-
if defined?(Merb::AbstractController)
|
12
|
-
require 'will_paginate/view_helpers/merb'
|
13
|
-
|
14
|
-
Merb::BootLoader.before_app_loads do
|
15
|
-
adapters = { :datamapper => 'data_mapper', :activerecord => 'active_record', :sequel => 'sequel' }
|
16
|
-
# auto-load the right ORM adapter
|
17
|
-
if adapter = adapters[Merb.orm]
|
18
|
-
require "will_paginate/#{adapter}"
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
11
|
if defined?(Sinatra) and Sinatra.respond_to? :register
|
24
12
|
require 'will_paginate/view_helpers/sinatra'
|
25
13
|
end
|
metadata
CHANGED
@@ -1,18 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: will_paginate
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 4.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mislav Marohnić
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-05-29 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: will_paginate provides a simple API for performing paginated queries
|
14
|
-
with Active Record
|
15
|
-
|
14
|
+
with Active Record and Sequel, and includes helpers for rendering pagination links
|
15
|
+
in Rails, Sinatra, and Hanami web apps.
|
16
16
|
email: mislav.marohnic@gmail.com
|
17
17
|
executables: []
|
18
18
|
extensions: []
|
@@ -27,7 +27,6 @@ files:
|
|
27
27
|
- lib/will_paginate/array.rb
|
28
28
|
- lib/will_paginate/collection.rb
|
29
29
|
- lib/will_paginate/core_ext.rb
|
30
|
-
- lib/will_paginate/data_mapper.rb
|
31
30
|
- lib/will_paginate/deprecation.rb
|
32
31
|
- lib/will_paginate/i18n.rb
|
33
32
|
- lib/will_paginate/locale/en.yml
|
@@ -39,49 +38,20 @@ files:
|
|
39
38
|
- lib/will_paginate/version.rb
|
40
39
|
- lib/will_paginate/view_helpers.rb
|
41
40
|
- lib/will_paginate/view_helpers/action_view.rb
|
41
|
+
- lib/will_paginate/view_helpers/hanami.rb
|
42
42
|
- lib/will_paginate/view_helpers/link_renderer.rb
|
43
43
|
- lib/will_paginate/view_helpers/link_renderer_base.rb
|
44
|
-
- lib/will_paginate/view_helpers/merb.rb
|
45
44
|
- lib/will_paginate/view_helpers/sinatra.rb
|
46
|
-
|
47
|
-
- spec/console
|
48
|
-
- spec/console_fixtures.rb
|
49
|
-
- spec/database.yml
|
50
|
-
- spec/fake_rubygems.rb
|
51
|
-
- spec/finders/active_record_spec.rb
|
52
|
-
- spec/finders/activerecord_test_connector.rb
|
53
|
-
- spec/finders/data_mapper_spec.rb
|
54
|
-
- spec/finders/data_mapper_test_connector.rb
|
55
|
-
- spec/finders/mongoid_spec.rb
|
56
|
-
- spec/finders/sequel_spec.rb
|
57
|
-
- spec/finders/sequel_test_connector.rb
|
58
|
-
- spec/fixtures/admin.rb
|
59
|
-
- spec/fixtures/developer.rb
|
60
|
-
- spec/fixtures/developers_projects.yml
|
61
|
-
- spec/fixtures/project.rb
|
62
|
-
- spec/fixtures/projects.yml
|
63
|
-
- spec/fixtures/replies.yml
|
64
|
-
- spec/fixtures/reply.rb
|
65
|
-
- spec/fixtures/schema.rb
|
66
|
-
- spec/fixtures/topic.rb
|
67
|
-
- spec/fixtures/topics.yml
|
68
|
-
- spec/fixtures/user.rb
|
69
|
-
- spec/fixtures/users.yml
|
70
|
-
- spec/matchers/deprecation_matcher.rb
|
71
|
-
- spec/matchers/phrase_matcher.rb
|
72
|
-
- spec/matchers/query_count_matcher.rb
|
73
|
-
- spec/page_number_spec.rb
|
74
|
-
- spec/per_page_spec.rb
|
75
|
-
- spec/spec_helper.rb
|
76
|
-
- spec/view_helpers/action_view_spec.rb
|
77
|
-
- spec/view_helpers/base_spec.rb
|
78
|
-
- spec/view_helpers/link_renderer_base_spec.rb
|
79
|
-
- spec/view_helpers/view_example_group.rb
|
80
|
-
homepage: https://github.com/mislav/will_paginate/wiki
|
45
|
+
homepage: https://github.com/mislav/will_paginate
|
81
46
|
licenses:
|
82
47
|
- MIT
|
83
|
-
metadata:
|
84
|
-
|
48
|
+
metadata:
|
49
|
+
bug_tracker_uri: https://github.com/mislav/will_paginate/issues
|
50
|
+
changelog_uri: https://github.com/mislav/will_paginate/releases/tag/v4.0.0
|
51
|
+
documentation_uri: https://www.rubydoc.info/gems/will_paginate/4.0.0
|
52
|
+
source_code_uri: https://github.com/mislav/will_paginate/tree/v4.0.0
|
53
|
+
wiki_uri: https://github.com/mislav/will_paginate/wiki
|
54
|
+
post_install_message:
|
85
55
|
rdoc_options:
|
86
56
|
- "--main"
|
87
57
|
- README.md
|
@@ -92,16 +62,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
92
62
|
requirements:
|
93
63
|
- - ">="
|
94
64
|
- !ruby/object:Gem::Version
|
95
|
-
version: '0'
|
65
|
+
version: '2.0'
|
96
66
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
97
67
|
requirements:
|
98
68
|
- - ">="
|
99
69
|
- !ruby/object:Gem::Version
|
100
70
|
version: '0'
|
101
71
|
requirements: []
|
102
|
-
|
103
|
-
|
104
|
-
signing_key:
|
72
|
+
rubygems_version: 3.4.6
|
73
|
+
signing_key:
|
105
74
|
specification_version: 4
|
106
75
|
summary: Pagination plugin for web frameworks and other apps
|
107
76
|
test_files: []
|
@@ -1,100 +0,0 @@
|
|
1
|
-
require 'dm-core'
|
2
|
-
require 'dm-aggregates'
|
3
|
-
require 'will_paginate/per_page'
|
4
|
-
require 'will_paginate/page_number'
|
5
|
-
require 'will_paginate/collection'
|
6
|
-
|
7
|
-
module WillPaginate
|
8
|
-
module DataMapper
|
9
|
-
module Pagination
|
10
|
-
def page(num)
|
11
|
-
pagenum = ::WillPaginate::PageNumber(num.nil? ? 1 : num)
|
12
|
-
per_page = query.limit || self.per_page
|
13
|
-
options = {:offset => pagenum.to_offset(per_page).to_i}
|
14
|
-
options[:limit] = per_page unless query.limit
|
15
|
-
col = new_collection(query.merge(options))
|
16
|
-
col.current_page = pagenum
|
17
|
-
col
|
18
|
-
end
|
19
|
-
|
20
|
-
def paginate(options)
|
21
|
-
options = options.dup
|
22
|
-
pagenum = options.fetch(:page) { raise ArgumentError, ":page parameter required" }
|
23
|
-
per_page = options.delete(:per_page) || self.per_page
|
24
|
-
total = options.delete(:total_entries)
|
25
|
-
|
26
|
-
options.delete(:page)
|
27
|
-
options[:limit] = per_page.to_i
|
28
|
-
|
29
|
-
|
30
|
-
col = all(options).page(pagenum)
|
31
|
-
col.total_entries = total.to_i unless total.nil? || (total.kind_of?(String) && total.strip.empty?)
|
32
|
-
col
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
module CollectionMethods
|
37
|
-
include WillPaginate::CollectionMethods
|
38
|
-
|
39
|
-
attr_accessor :current_page
|
40
|
-
attr_writer :total_entries
|
41
|
-
|
42
|
-
def paginated?
|
43
|
-
!current_page.nil?
|
44
|
-
end
|
45
|
-
|
46
|
-
def per_page
|
47
|
-
query.limit || model.per_page
|
48
|
-
end
|
49
|
-
|
50
|
-
def offset
|
51
|
-
query.offset
|
52
|
-
end
|
53
|
-
|
54
|
-
def total_entries
|
55
|
-
@total_entries ||= begin
|
56
|
-
if loaded? and @array.size < per_page and (current_page == 1 or @array.size > 0)
|
57
|
-
offset + @array.size
|
58
|
-
else
|
59
|
-
# :reload prevents Collection.filter from being run, which
|
60
|
-
# would cause a stack overflow
|
61
|
-
clean_query = query.merge(:reload => true)
|
62
|
-
# seems like the only way
|
63
|
-
clean_query.instance_variable_set('@limit', nil)
|
64
|
-
clean_query.instance_variable_set('@offset', 0)
|
65
|
-
new_collection(clean_query).count
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
def to_a
|
71
|
-
if paginated?
|
72
|
-
::WillPaginate::Collection.create(current_page, per_page) do |col|
|
73
|
-
col.replace super
|
74
|
-
col.total_entries ||= total_entries
|
75
|
-
end
|
76
|
-
else
|
77
|
-
super
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
private
|
82
|
-
|
83
|
-
def new_collection(query, resources = nil)
|
84
|
-
col = super
|
85
|
-
col.current_page = self.current_page
|
86
|
-
col
|
87
|
-
end
|
88
|
-
|
89
|
-
def initialize_copy(original)
|
90
|
-
super
|
91
|
-
@total_entries = nil
|
92
|
-
end
|
93
|
-
end
|
94
|
-
|
95
|
-
::DataMapper::Model.append_extensions PerPage
|
96
|
-
::DataMapper::Model.append_extensions Pagination
|
97
|
-
::DataMapper::Collection.send(:include, Pagination)
|
98
|
-
::DataMapper::Collection.send(:include, CollectionMethods)
|
99
|
-
end
|
100
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
require 'will_paginate/core_ext'
|
2
|
-
require 'will_paginate/view_helpers'
|
3
|
-
require 'will_paginate/view_helpers/link_renderer'
|
4
|
-
|
5
|
-
module WillPaginate
|
6
|
-
module Merb
|
7
|
-
include ViewHelpers
|
8
|
-
|
9
|
-
def will_paginate(collection, options = {}) #:nodoc:
|
10
|
-
options = options.merge(:renderer => LinkRenderer) unless options[:renderer]
|
11
|
-
super(collection, options)
|
12
|
-
end
|
13
|
-
|
14
|
-
class LinkRenderer < ViewHelpers::LinkRenderer
|
15
|
-
protected
|
16
|
-
|
17
|
-
def url(page)
|
18
|
-
params = @template.request.params.except(:action, :controller).merge(param_name => page)
|
19
|
-
@template.url(:this, params)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
::Merb::AbstractController.send(:include, self)
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|