pagy 0.13.0 → 0.13.1

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: 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,