pagy 0.12.0 → 0.13.0

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: 8b8d6cfce02eec245f179798d265ceecf15461806e45d254ad12fbce2472ed92
4
- data.tar.gz: 11515e85f3c0281155cbaddb1b30e2849da61b7ee469eaab7e82b5809c1bc99c
3
+ metadata.gz: ce35faa857fbc47879ebacc7f92ca168b402944ce4403c2c18e2b2eecd0a9c57
4
+ data.tar.gz: 24f36562a617e7870dc5cd4217979a06faf424f6cf6731d43a2fd6dd7f5e0084
5
5
  SHA512:
6
- metadata.gz: 2cc64afce98144eaa7d6e289a12b6be726c593d1f0f60f2d32b12123d64c44a51e43b2a5e48a6e33a5630a173a98dd27e27a53cda46c27da48f490ed98c51e09
7
- data.tar.gz: e213157c371571deb954235a07950144c61f406b7f47c7b99f137b7951bb73f7f978c4606d6d584d7b7f41df8c0bfed95d68720e06aea97b8fb14254ccc3d908
6
+ metadata.gz: 2fb53ff09042a732205b3b5f262a6157a014b1ac04a69b7e8a6e5d92402468b7e5a8168a2f46f427d6ec696a283c81ad38e0a463c0124ebb4f62fe17237ce95e
7
+ data.tar.gz: 2490a4827a62166fbf0a710162bfd8be39aa51b62035053fb08701dd4b01dc0b55200122728588e91bc56e6eaa897290a31fa0b196040720bf0e293476ee959a
data/lib/pagy.rb CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  require 'pathname'
5
5
 
6
- class Pagy ; VERSION = '0.12.0'
6
+ class Pagy ; VERSION = '0.13.0'
7
7
 
8
8
  class OutOfRangeError < StandardError; attr_reader :pagy; def initialize(pagy) @pagy = pagy end; end
9
9
 
@@ -22,8 +22,8 @@ class Pagy ; VERSION = '0.12.0'
22
22
  (@vars[k] && instance_variable_set(:"@#{k}", @vars[k].to_i) >= min) \
23
23
  or raise(ArgumentError, "expected :#{k} >= #{min}; got #{instance_variable_get(:"@#{k}").inspect}")
24
24
  end
25
- @pages = @last = [(@count.to_f / @items).ceil, 1].max # cardinal and ordinal meanings
26
- @page >= 1 && @page <= @last or raise(OutOfRangeError.new(self), "expected :page in 1..#{@last}; got #{@page.inspect}")
25
+ @pages = @last = [(@count.to_f / @items).ceil, 1].max # cardinal and ordinal meanings
26
+ @page <= @last or raise(OutOfRangeError.new(self), "expected :page in 1..#{@last}; got #{@page.inspect}")
27
27
  @offset = @items * (@page - 1) + @outset # pagination offset + outset (initial offset)
28
28
  @items = @count - ((@pages-1) * @items) if @page == @last # adjust items for last page
29
29
  @from = @count == 0 ? 0 : @offset+1 - @outset # page begins from item
@@ -13,6 +13,10 @@
13
13
  # See https://ddnexus.github.io/pagy/extras/bootstrap
14
14
  # require 'pagy/extras/bootstrap'
15
15
 
16
+ # Bulma: Nav helper and templates for Bulma pagination
17
+ # See https://ddnexus.github.io/pagy/extras/bulma
18
+ # require 'pagy/extras/bulma'
19
+
16
20
  # Compact: An alternative UI that combines the pagination with the nav info in one compact element
17
21
  # See https://ddnexus.github.io/pagy/extras/compact
18
22
  # require 'pagy/extras/compact'
@@ -23,6 +27,10 @@
23
27
  # Pagy::VARS[:items_param] = :items # default
24
28
  # Pagy::VARS[:max_items] = 100 # default
25
29
 
30
+ # Out Of Range: Allow for easy handling of out of range pages
31
+ # See https://ddnexus.github.io/pagy/extras/out_of_range
32
+ # Pagy::VARS[:out_of_range_mode] = :last_page # default (other options :empty_page and :exception )
33
+
26
34
  # Responsive: On resize, the number of page links will adapt in real-time to the available window or container width
27
35
  # See https://ddnexus.github.io/pagy/extras/responsive
28
36
  # require 'pagy/extras/responsive'
@@ -0,0 +1,29 @@
1
+ class Pagy
2
+
3
+ VARS[:out_of_range_mode] = :last_page
4
+
5
+ def out_of_range?; @out_of_range end
6
+
7
+ alias :create :initialize
8
+
9
+ def initialize(vars)
10
+ create(vars)
11
+ rescue OutOfRangeError => e
12
+ raise e if @vars[:out_of_range_mode] == :exception
13
+ @out_of_range = true
14
+ if @vars[:out_of_range_mode] == :last_page
15
+ @page = @last # set as last page
16
+ elsif @vars[:out_of_range_mode] == :empty_page
17
+ @offset = @items = @from = @to = 0 # vars relative to the actual page
18
+ @prev = @last # the prev is the last page
19
+ define_singleton_method(:series) do |size=@vars[:size]|
20
+ @page = @last # series for last page
21
+ super(size).tap do |s| # call original series
22
+ s[s.index(@page.to_s)] = @page # string to integer (i.e. no current page)
23
+ @page = @vars[:page] # restore the actual page
24
+ end
25
+ end
26
+ end
27
+ end
28
+
29
+ end
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.12.0
4
+ version: 0.13.0
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-07-09 00:00:00.000000000 Z
11
+ date: 2018-07-13 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: 'Agnostic pagination in plain ruby: it works with any framework, ORM
14
14
  and DB type, with all kinds of collections, even pre-paginated, scopes, Arrays,
@@ -33,6 +33,7 @@ files:
33
33
  - lib/pagy/extras/initializer_example.rb
34
34
  - lib/pagy/extras/items.rb
35
35
  - lib/pagy/extras/javascripts/pagy.js
36
+ - lib/pagy/extras/out_of_range.rb
36
37
  - lib/pagy/extras/responsive.rb
37
38
  - lib/pagy/extras/templates/nav.html.erb
38
39
  - lib/pagy/extras/templates/nav.html.haml