pagy 0.4.1 → 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 45ce91ee38e0d07518e33c4f2a16cc19c65c2848193ad545fbec38ebee5be5d9
4
- data.tar.gz: b340e01c042fbefd0874c88395a5c9a93e020dc422725d700a21ea996287b907
3
+ metadata.gz: 60384daf0fd49d4815f49d4ab0bf65840835bb42f7c9c38979fae883f9e0c4c5
4
+ data.tar.gz: 4aaa58eba02a590254ecf82d80f750aa4cd0b3bf7da1d745f92d8a7125c19fc9
5
5
  SHA512:
6
- metadata.gz: e3639fa6a75f4204277281c49e0579dc02304a3e11d32029508b81e624dba6a494ad90af1440d15db884e84015282e61bd2e3497c7cb2354197dda95e037f452
7
- data.tar.gz: b406ef5bad8f0bd50d2065ffce5c04673ad0858eb293337bdaa03057aa80abef014550279db963a27e757e1393de13fa7f77e8a350bb7a8c04d00c4784afe8c3
6
+ metadata.gz: 3006bd929cce65f58b5d0fd4c512e791fc939de6661055359c918f035f981645ce705d3d5e02f55aa7c43816d309000ee10991c54b89144768f986f6e6f18c0d
7
+ data.tar.gz: 4ad8a43b6138a671e84e074155e60f80713cd68a41f71fab6ac69d5a88bc5a48fbac0b49cb0a9b50e6c15b416c72373ceafe01e9bc841f9fe2b72965deb9dfaa
@@ -7,7 +7,7 @@ require 'ostruct'
7
7
  # Notice that it doesn't actually do any pagination, nor navigation... that is
8
8
  # done with a few helpers in the Pagy::Backend and Pagy::Frontend modules.
9
9
 
10
- class Pagy ; VERSION = '0.4.1'
10
+ class Pagy ; VERSION = '0.4.2'
11
11
 
12
12
  autoload :Backend, 'pagy/backend'
13
13
  autoload :Frontend, 'pagy/frontend'
@@ -39,8 +39,8 @@ class Pagy ; VERSION = '0.4.1'
39
39
  @pages = @last = [(@count.to_f / @limit).ceil, 1].max # cardinal and ordinal meanings
40
40
  (1..@last).cover?(@page) || raise(OutOfRangeError, "expected :page in 1..#{@last}; got #{@page.inspect}")
41
41
  @offset += @limit * (@page - 1) # initial offset + offset for pagination
42
- @limit = @count % @limit if @page == @last # adjust limit for last page (for pre-limit(ed) collection)
43
- @from = @count.zero? ? 0 : @offset+1 # page begins from item
42
+ @limit = @count % @limit if @page == @last # adjust limit for last page (for pre-limit(ed) collections)
43
+ @from = @count == 0 ? 0 : @offset+1 # page begins from item
44
44
  @to = @offset + @limit # page ends to item
45
45
  @prev = (@page-1 unless @page == 1) # nil if no prev page
46
46
  @next = (@page+1 unless @page == @last) # nil if no next page
@@ -49,9 +49,9 @@ class Pagy ; VERSION = '0.4.1'
49
49
  around = ([@page-@before, 1].max .. [@page+@after, @last].min).to_a # before..after pages
50
50
  row = (all.first(@initial+1) | around | all.last(@final+1)).sort # row of pages with boundaries
51
51
  row.each_cons(2) do |a, b| # loop in consecutive pairs
52
- if a+1 == b; @series.push(a) # no gap -> no additions
53
- elsif a+2 == b; @series.push(a, a+1) # 1 page gap -> fill with missing page
54
- else @series.push(a, :gap) # n page gap -> add :gap
52
+ if a+1 == b ; @series.push(a) # no gap -> no additions
53
+ elsif a+2 == b ; @series.push(a, a+1) # 1 page gap -> fill with missing page
54
+ else @series.push(a, :gap) # n page gap -> add :gap
55
55
  end # skip the end-boundary (last+1)
56
56
  end
57
57
  @series.shift # remove the start-boundary (0)
@@ -1,4 +1,5 @@
1
1
  class Pagy
2
+
2
3
  # Including this module (usually in your controller) is handy but totally optional.
3
4
  # It basically just encapsulates a couple of verbose statements in one single slick
4
5
  # #pagy method, but it does not add any functionality on its own.
@@ -15,7 +16,7 @@ class Pagy
15
16
  # return pagy, scope.offset(pagy.offset).limit(pagy.limit)
16
17
  # end
17
18
 
18
- module Backend ; private # the whole module is private so no problem including it in a controller
19
+ module Backend ; private # the whole module is private so no problem with including it in a controller
19
20
 
20
21
  def pagy(obj, opts={})
21
22
  pagy = Pagy.new(count: pagy_get_count(obj), page: pagy_get_page, i18n_key: pagy_get_i18n_key(obj), **opts)
@@ -1,5 +1,6 @@
1
1
  require 'yaml'
2
2
  class Pagy
3
+
3
4
  # This module supplies a few methods to deal with the navigation aspect of the pagination.
4
5
  # You will usually include it in some helper module, eventually overriding the #pagy_url_for
5
6
  # in order to fit its behavior with your app needs (e.g.: removing and adding some param or
@@ -67,6 +68,7 @@ class Pagy
67
68
  url << '?' << Rack::Utils.build_nested_query(params)
68
69
  end
69
70
 
71
+
70
72
  # The :pagy_t method is the internal implementation of I18n.t, used when I18n is missing or
71
73
  # not needed (for example when your application is a single-locale app, e.g. only 'en', or only 'fr'...).
72
74
  #
@@ -100,8 +102,9 @@ class Pagy
100
102
  sprintf value, Hash.new{|h,k| "%{#{k}}"}.merge!(vars) # interpolation
101
103
  end
102
104
 
105
+
103
106
  # NOTICE: This method is used internally, so you need to know about it only if you
104
- # are going to override a *_nav helper or a template AND changing the link tags.
107
+ # are going to override a *_nav helper or a template AND change the link tags.
105
108
  #
106
109
  # You call this method in order to get a proc that you will call to produce the page links.
107
110
  # The reasaon it is a 2 step process instead of a single method call is performance.
@@ -153,9 +156,9 @@ class Pagy
153
156
  def pagy_link_proc(pagy, lx=''.freeze) # link extra
154
157
  p_prev, p_next, p_lx = pagy.prev, pagy.next, pagy.opts[:link_extra]
155
158
  a, b = %(<a href="#{pagy_url_for(MARKER)}"#{p_lx ? %( #{p_lx}) : ''.freeze}#{lx.empty? ? lx : %( #{lx})}).split(MARKER)
156
- -> (n, text=n, x=''.freeze) { "#{a}#{n}#{b}#{ if n == p_prev; ' rel="prev"'.freeze
157
- elsif n == p_next; ' rel="next"'.freeze
158
- else ''.freeze
159
+ -> (n, text=n, x=''.freeze) { "#{a}#{n}#{b}#{ if n == p_prev ; ' rel="prev"'.freeze
160
+ elsif n == p_next ; ' rel="next"'.freeze
161
+ else ''.freeze
159
162
  end }#{x.empty? ? x : %( #{x})}>#{text}</a>" }
160
163
  end
161
164
 
@@ -6,27 +6,23 @@
6
6
  Usage: link.call( page_number [, text [, extra_attributes_string ]])
7
7
  -%>
8
8
  <% link = pagy_link_proc(pagy, 'class="page-link"') -%>
9
- <nav aria-label="pager" class="pagination" role="navigation">
10
- <ul class="pagination">
11
- <% if pagy.prev -%>
12
- <li class="page-item prev"><%== link.call(pagy.prev, pagy_t('pagy.nav.prev'), 'aria-label="previous"') %></li>
13
- <% else -%>
14
- <li class="page-item prev disabled"><a href="#" class="page-link"><%== pagy_t('pagy.nav.prev') %></a></li>
15
- <% end -%>
16
- <% pagy.series.each do |item| # series example: [1, :gap, 7, 8, "9", 10, 11, :gap, 36] -%>
17
- <% case item
18
- when Integer # page link -%>
19
- <li class="page-item"><%== link.call(item) %></li>
20
- <% when String # current page -%>
21
- <li class="page-item active"><%== link.call(item) %></li>
22
- <% when :gap # page gap -%>
23
- <li class="page-item disabled gap"><a href="#" class="page-link"><%== pagy_t('pagy.nav.gap') %></a></li>
24
- <% end -%>
25
- <% end -%>
26
- <% if pagy.next -%>
27
- <li class="page-item next"><%== link.call(pagy.next, pagy_t('pagy.nav.next'), 'aria-label="next"') %></li>
28
- <% else -%>
29
- <li class="page-item next disabled"><a href="#" class="page-link"><%== pagy_t('pagy.nav.next') %></a></li>
30
- <% end -%>
31
- </ul>
32
- </nav>
9
+ <%# -%><nav aria-label="pager" class="pagination" role="navigation">
10
+ <%# -%> <ul class="pagination">
11
+ <% if pagy.prev -%> <li class="page-item prev"><%== link.call(pagy.prev, pagy_t('pagy.nav.prev'), 'aria-label="previous"') %></li>
12
+ <% else -%> <li class="page-item prev disabled"><a href="#" class="page-link"><%== pagy_t('pagy.nav.prev') %></a></li>
13
+ <% end -%>
14
+ <% pagy.series.each do |item| # series example: [1, :gap, 7, 8, "9", 10, 11, :gap, 36] -%>
15
+ <% case item
16
+ when Integer -%>
17
+ <%# -%> <li class="page-item"><%== link.call(item) %></li>
18
+ <% when String -%>
19
+ <%# -%> <li class="page-item active"><%== link.call(item) %></li>
20
+ <% when :gap -%>
21
+ <%# -%> <li class="page-item disabled gap"><a href="#" class="page-link"><%== pagy_t('pagy.nav.gap') %></a></li>
22
+ <% end -%>
23
+ <% end -%>
24
+ <% if pagy.next -%> <li class="page-item next"><%== link.call(pagy.next, pagy_t('pagy.nav.next'), 'aria-label="next"') %></li>
25
+ <% else -%> <li class="page-item next disabled"><a href="#" class="page-link"><%== pagy_t('pagy.nav.next') %></a></li>
26
+ <% end -%>
27
+ <%# -%> </ul>
28
+ <%# -%></nav>
@@ -19,13 +19,13 @@ nav.pagination role="navigation" aria-label="pager"
19
19
  - pagy.series.each do |item| # series example: [1, :gap, 7, 8, "9", 10, 11, :gap, 36]
20
20
  - case item
21
21
 
22
- - when Integer # page link
22
+ - when Integer # page link
23
23
  li.page-item == link.call(item)
24
24
 
25
- - when String # current page
25
+ - when String # current page
26
26
  li.page-item.active == link.call(item)
27
27
 
28
- - when :gap # page gap
28
+ - when :gap # page gap
29
29
  li.page-item.disabled.gap
30
30
  a.page-link href="#" == pagy_t('pagy.nav.gap')
31
31
 
@@ -4,27 +4,23 @@
4
4
 
5
5
  The link variable is set to a proc that returns the link tag.
6
6
  Usage: link.call( page_number [, text [, extra_attributes_string ]])
7
- -%>
7
+ -%>
8
8
  <% link = pagy_link_proc(pagy) -%>
9
- <nav aria-label="pager" class="pagination" role="navigation">
10
- <% if pagy.prev -%>
11
- <span class="page prev"><%== link.call(pagy.prev, pagy_t('pagy.nav.prev'), 'aria-label="previous"') %></span>
12
- <% else -%>
13
- <span class="page prev disabled"><%== pagy_t('pagy.nav.prev') %></span>
14
- <% end -%>
15
- <% pagy.series.each do |item| # series example: [1, :gap, 7, 8, "9", 10, 11, :gap, 36] -%>
16
- <% case item
17
- when Integer # page link -%>
18
- <span class="page"><%== link.call(item) %></span>
19
- <% when String # current page -%>
20
- <span class="page current"><%= item %></span>
21
- <% when :gap # page gap -%>
22
- <span class="page gap"><%== pagy_t('pagy.nav.gap') %></span>
23
- <% end -%>
24
- <% end -%>
25
- <% if pagy.next -%>
26
- <span class="page next"><%== link.call(pagy.next, pagy_t('pagy.nav.next'), 'aria-label="next"') %></span>
27
- <% else -%>
28
- <span class="page next disabled"><%== pagy_t('pagy.nav.next') %></span>
29
- <% end -%>
30
- </nav>
9
+ <%# -%><nav aria-label="pager" class="pagination" role="navigation">
10
+ <% if pagy.prev -%> <span class="page prev"><%== link.call(pagy.prev, pagy_t('pagy.nav.prev'), 'aria-label="previous"') %></span>
11
+ <% else -%> <span class="page prev disabled"><%== pagy_t('pagy.nav.prev') %></span>
12
+ <% end -%>
13
+ <% pagy.series.each do |item| # series example: [1, :gap, 7, 8, "9", 10, 11, :gap, 36] -%>
14
+ <% case item
15
+ when Integer -%>
16
+ <%# -%> <span class="page"><%== link.call(item) %></span>
17
+ <% when String -%>
18
+ <%# -%> <span class="page current"><%= item %></span>
19
+ <% when :gap -%>
20
+ <%# -%> <span class="page gap"><%== pagy_t('pagy.nav.gap') %></span>
21
+ <% end -%>
22
+ <% end -%>
23
+ <% if pagy.next -%> <span class="page next"><%== link.call(pagy.next, pagy_t('pagy.nav.next'), 'aria-label="next"') %></span>
24
+ <% else -%> <span class="page next disabled"><%== pagy_t('pagy.nav.next') %></span>
25
+ <% end -%>
26
+ <%# -%></nav>
@@ -16,14 +16,14 @@
16
16
  - pagy.series.each do |item| # series example: [1, :gap, 7, 8, "9", 10, 11, :gap, 36]
17
17
  - case item
18
18
 
19
- - when Integer # page link
19
+ - when Integer # page link
20
20
  %span.page
21
21
  != link.call(item)
22
22
 
23
- - when String # current page
23
+ - when String # current page
24
24
  %span.page.current= item
25
25
 
26
- - when :gap # page gap
26
+ - when :gap # page gap
27
27
  %span.page.gap!= pagy_t('pagy.nav.gap')
28
28
 
29
29
  - if pagy.next
@@ -15,13 +15,13 @@ nav.pagination role="navigation" aria-label="pager"
15
15
 
16
16
  - pagy.series.each do |item| # series example: [1, :gap, 7, 8, "9", 10, 11, :gap, 36]
17
17
  - case item
18
- - when Integer # page link
18
+ - when Integer # page link
19
19
  span.page ==> link.call(item)
20
20
 
21
- - when String # current page
21
+ - when String # current page
22
22
  span.page.current ==> item
23
23
 
24
- - when :gap # page gap
24
+ - when :gap # page gap
25
25
  span.page.gap ==> pagy_t('pagy.nav.gap')
26
26
 
27
27
  - if pagy.next
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pagy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Domizio Demichelis
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-02-18 00:00:00.000000000 Z
11
+ date: 2018-02-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler