will_paginate 3.1.8 → 3.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/will_paginate/locale/en.yml +2 -0
- data/lib/will_paginate/mongoid.rb +2 -0
- data/lib/will_paginate/page_number.rb +7 -10
- data/lib/will_paginate/railtie.rb +1 -2
- data/lib/will_paginate/version.rb +2 -2
- data/lib/will_paginate/view_helpers/action_view.rb +1 -1
- data/lib/will_paginate/view_helpers/hanami.rb +41 -0
- data/lib/will_paginate/view_helpers/link_renderer.rb +7 -3
- data/spec/page_number_spec.rb +0 -1
- data/spec/view_helpers/action_view_spec.rb +20 -8
- data/spec/view_helpers/view_example_group.rb +1 -1
- metadata +11 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 751b354f97d844f6679cec31ce90298e6d6ff77217446d77e729421caa52c8da
|
4
|
+
data.tar.gz: 5a18d970f3e6b0ca1e1949aa3eb14856ee80f1feea4b919f808e5d02f623bf58
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1196350bf1e40de517c21fd8f085df09c682709894d1edd688402d33fab8d15c2b9af91b84c0df5dc5aad2eda9e6e8fbc006474b8ee3829af13879a6c66f24ed
|
7
|
+
data.tar.gz: 5ef9ce7f70c5cc3ba0b1e024e4c4cfeb8e8afbb20cea2b983abfb31cb29eb850931b652f68d95579acaa5b69b71ffdfc384716640e4168e49c108fe3a525441d
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# will_paginate
|
2
2
|
|
3
|
-
will_paginate is a pagination library that integrates with Ruby on Rails, Sinatra, Merb, DataMapper and Sequel.
|
3
|
+
will_paginate is a pagination library that integrates with Ruby on Rails, Sinatra, Hanami::View, Merb, DataMapper and Sequel.
|
4
4
|
|
5
5
|
Installation:
|
6
6
|
|
@@ -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
|
@@ -6,7 +6,7 @@ module WillPaginate
|
|
6
6
|
module InvalidPage; end
|
7
7
|
|
8
8
|
# integer representing a page number
|
9
|
-
class PageNumber <
|
9
|
+
class PageNumber < Numeric
|
10
10
|
# a value larger than this is not supported in SQL queries
|
11
11
|
BIGINT = 9223372036854775807
|
12
12
|
|
@@ -18,13 +18,17 @@ module WillPaginate
|
|
18
18
|
raise RangeError, "invalid #{name}: #{value.inspect}"
|
19
19
|
end
|
20
20
|
@name = name
|
21
|
-
|
21
|
+
@value = value
|
22
22
|
rescue ArgumentError, TypeError, RangeError => error
|
23
23
|
error.extend InvalidPage
|
24
24
|
raise error
|
25
25
|
end
|
26
26
|
|
27
|
-
|
27
|
+
def to_i
|
28
|
+
@value
|
29
|
+
end
|
30
|
+
|
31
|
+
def_delegators :@value, :coerce, :==, :<=>, :to_s, :+, :-, :*, :/
|
28
32
|
|
29
33
|
def inspect
|
30
34
|
"#{@name} #{to_i}"
|
@@ -40,13 +44,6 @@ module WillPaginate
|
|
40
44
|
alias is_a? kind_of?
|
41
45
|
end
|
42
46
|
|
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
47
|
# An idemptotent coercion method
|
51
48
|
def self.PageNumber(value, name = 'page')
|
52
49
|
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
|
@@ -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>
|
@@ -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
|
|
data/spec/page_number_spec.rb
CHANGED
@@ -14,7 +14,8 @@ Routes.draw do
|
|
14
14
|
get 'ibocorp(/:page)' => 'ibocorp#index',
|
15
15
|
:constraints => { :page => /\d+/ }, :defaults => { :page => 1 }
|
16
16
|
|
17
|
-
get '
|
17
|
+
get 'foo/bar' => 'foo#bar'
|
18
|
+
get 'baz/list' => 'baz#list'
|
18
19
|
end
|
19
20
|
|
20
21
|
describe WillPaginate::ActionView do
|
@@ -38,7 +39,14 @@ describe WillPaginate::ActionView do
|
|
38
39
|
attr_reader :assigns, :controller, :request
|
39
40
|
|
40
41
|
def render(locals)
|
41
|
-
|
42
|
+
lookup_context = []
|
43
|
+
if defined? ActionView::LookupContext
|
44
|
+
lookup_context = ActionView::LookupContext.new(lookup_context)
|
45
|
+
end
|
46
|
+
|
47
|
+
klass = ActionView::Base
|
48
|
+
klass = klass.with_empty_template_cache if klass.respond_to?(:with_empty_template_cache)
|
49
|
+
@view = klass.new(lookup_context, @assigns, @controller)
|
42
50
|
@view.request = @request
|
43
51
|
@view.singleton_class.send(:include, @controller._routes.url_helpers)
|
44
52
|
@view.render(:inline => @template, :locals => locals)
|
@@ -120,16 +128,20 @@ describe WillPaginate::ActionView do
|
|
120
128
|
it "should match expected markup" do
|
121
129
|
paginate
|
122
130
|
expected = <<-HTML
|
123
|
-
<div class="pagination"><span class="previous_page disabled">← Previous</span>
|
124
|
-
<em class="current">1</em>
|
125
|
-
<a href="/foo/bar?page=2" rel="next">2</a>
|
126
|
-
<a href="/foo/bar?page=3">3</a>
|
131
|
+
<div class="pagination" role="navigation" aria-label="Pagination"><span class="previous_page disabled">← Previous</span>
|
132
|
+
<em class="current" aria-label="Page 1" aria-current="page">1</em>
|
133
|
+
<a href="/foo/bar?page=2" aria-label="Page 2" rel="next">2</a>
|
134
|
+
<a href="/foo/bar?page=3" aria-label="Page 3">3</a>
|
127
135
|
<a href="/foo/bar?page=2" class="next_page" rel="next">Next →</a></div>
|
128
136
|
HTML
|
129
137
|
expected.strip!.gsub!(/\s{2,}/, ' ')
|
130
|
-
expected_dom = parse_html_document(expected)
|
138
|
+
expected_dom = parse_html_document(expected)
|
131
139
|
|
132
|
-
|
140
|
+
if expected_dom.respond_to?(:canonicalize)
|
141
|
+
html_document.canonicalize.should == expected_dom.canonicalize
|
142
|
+
else
|
143
|
+
html_document.root.should == expected_dom.root
|
144
|
+
end
|
133
145
|
end
|
134
146
|
|
135
147
|
it "should output escaped URLs" do
|
@@ -50,7 +50,7 @@ module ViewExampleGroup
|
|
50
50
|
end
|
51
51
|
|
52
52
|
def parse_html_document(html)
|
53
|
-
|
53
|
+
if defined?(Rails::Dom::Testing::Assertions)
|
54
54
|
Nokogiri::HTML::Document.parse(html)
|
55
55
|
else
|
56
56
|
HTML::Document.new(html, true, false)
|
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: 3.
|
4
|
+
version: 3.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mislav Marohnić
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-10-09 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: will_paginate provides a simple API for performing paginated queries
|
14
14
|
with Active Record, DataMapper and Sequel, and includes helpers for rendering pagination
|
15
|
-
links in Rails, Sinatra and Merb web apps.
|
15
|
+
links in Rails, Sinatra, Hanami, and Merb web apps.
|
16
16
|
email: mislav.marohnic@gmail.com
|
17
17
|
executables: []
|
18
18
|
extensions: []
|
@@ -39,6 +39,7 @@ files:
|
|
39
39
|
- lib/will_paginate/version.rb
|
40
40
|
- lib/will_paginate/view_helpers.rb
|
41
41
|
- lib/will_paginate/view_helpers/action_view.rb
|
42
|
+
- lib/will_paginate/view_helpers/hanami.rb
|
42
43
|
- lib/will_paginate/view_helpers/link_renderer.rb
|
43
44
|
- lib/will_paginate/view_helpers/link_renderer_base.rb
|
44
45
|
- lib/will_paginate/view_helpers/merb.rb
|
@@ -77,10 +78,15 @@ files:
|
|
77
78
|
- spec/view_helpers/base_spec.rb
|
78
79
|
- spec/view_helpers/link_renderer_base_spec.rb
|
79
80
|
- spec/view_helpers/view_example_group.rb
|
80
|
-
homepage: https://github.com/mislav/will_paginate
|
81
|
+
homepage: https://github.com/mislav/will_paginate
|
81
82
|
licenses:
|
82
83
|
- MIT
|
83
|
-
metadata:
|
84
|
+
metadata:
|
85
|
+
bug_tracker_uri: https://github.com/mislav/will_paginate/issues
|
86
|
+
changelog_uri: https://github.com/mislav/will_paginate/releases/tag/v3.2.0
|
87
|
+
documentation_uri: https://www.rubydoc.info/gems/will_paginate/3.2.0
|
88
|
+
source_code_uri: https://github.com/mislav/will_paginate/tree/v3.2.0
|
89
|
+
wiki_uri: https://github.com/mislav/will_paginate/wiki
|
84
90
|
post_install_message:
|
85
91
|
rdoc_options:
|
86
92
|
- "--main"
|