pagy 0.13.0 → 0.13.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ce35faa857fbc47879ebacc7f92ca168b402944ce4403c2c18e2b2eecd0a9c57
4
- data.tar.gz: 24f36562a617e7870dc5cd4217979a06faf424f6cf6731d43a2fd6dd7f5e0084
3
+ metadata.gz: ab89e95c75050f7175f135b284ebd2eed4b0f781ec20fa789a2eceb90e6d42ab
4
+ data.tar.gz: 197af0bd45ea2c70ebf5bf9f9718f6fcceacacd8d1849bf6b1e74aa6b506d278
5
5
  SHA512:
6
- metadata.gz: 2fb53ff09042a732205b3b5f262a6157a014b1ac04a69b7e8a6e5d92402468b7e5a8168a2f46f427d6ec696a283c81ad38e0a463c0124ebb4f62fe17237ce95e
7
- data.tar.gz: 2490a4827a62166fbf0a710162bfd8be39aa51b62035053fb08701dd4b01dc0b55200122728588e91bc56e6eaa897290a31fa0b196040720bf0e293476ee959a
6
+ metadata.gz: aee8ad4bfc15d270c6a81a9362d331464a5fe00c18e99fd8a3f0647fa67762e6bb8abaf269c90b1cfea8130ca1097c3747ced0341a99983ab7b70a06650ed1ca
7
+ data.tar.gz: ccd69594044e5e024a9f8151cbe440071c5aaf9021ef6e168a1d1e3d00537d3b53ab2b2bf9168285e273965141860cb8262dd4b4248231f2387de33e6df1b0b4
data/lib/pagy.rb CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  require 'pathname'
5
5
 
6
- class Pagy ; VERSION = '0.13.0'
6
+ class Pagy ; VERSION = '0.13.1'
7
7
 
8
8
  class OutOfRangeError < StandardError; attr_reader :pagy; def initialize(pagy) @pagy = pagy end; end
9
9
 
@@ -4,26 +4,42 @@ class Pagy
4
4
 
5
5
  def out_of_range?; @out_of_range end
6
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
7
+ module OutOfRange
8
+
9
+ def initialize(vars)
10
+ super
11
+ rescue OutOfRangeError
12
+ @out_of_range = true # add the out_of_range flag
13
+ case @vars[:out_of_range_mode]
14
+ when :exception
15
+ raise # same as without the extra
16
+ when :last_page
17
+ initial_page = @vars[:page] # save the very initial page (even after re-run)
18
+ super(vars.merge!(page: @last)) # re-run with the last page
19
+ @vars[:page] = initial_page # restore the inital page
20
+ when :empty_page
21
+ @offset = @items = @from = @to = 0 # vars relative to the actual page
22
+ @prev = @last # prev relative to the actual page
23
+ extend(Series) # special series for :empty_page
24
+ else
25
+ raise ArgumentError, "expected :out_of_range_mode variable in [:last_page, :empty_page, :exception]; got #{@vars[:out_of_range_mode].inspect}"
25
26
  end
26
27
  end
28
+
27
29
  end
28
30
 
31
+ module Series
32
+
33
+ def series(size=@vars[:size])
34
+ @page = @last # series for last page
35
+ super(size).tap do |s| # call original series
36
+ s[s.index(@page.to_s)] = @page # string to integer (i.e. no current page)
37
+ @page = @vars[:page] # restore the actual page
38
+ end
39
+ end
40
+
41
+ end
42
+
43
+ prepend OutOfRange
44
+
29
45
  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.13.0
4
+ version: 0.13.1
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-13 00:00:00.000000000 Z
11
+ date: 2018-07-14 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,