pagy 3.3.0 → 3.3.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: 5dc6e1e54d77709fa8f36306dca0b316e10e458e81f770b1655a0b9a56cca78e
4
- data.tar.gz: '092a8554d16d61c661a995acb1104d271e203282316072ddac7649a11616497e'
3
+ metadata.gz: 5e120aa3e069608ec73236cf7814a9b1e1292afd8b20e00208cfd2412e9422f1
4
+ data.tar.gz: fe66d484cc2a926ee36d9b50892f92c3c0437c9fecb74dc3020dc902e2cd1618
5
5
  SHA512:
6
- metadata.gz: b0e2dd58ebc6d1463567f4dff76897e823731605a517da343fa35a80b3f88c3173ab071d6f7b1bbceb870d1fc90b0ea507ac23f708d7a010e45d084d335cc3fd
7
- data.tar.gz: 127a5d06d0fd5058457d43a3473d0d582f96425066f49c3d468307c50cbe847d779d53751097ff72758cacb17e59bf6cb94fee7107ee8ec70448d0166ff41473
6
+ metadata.gz: a519633530e20b2213c8bb8f3b90fd4ed77d64f67057eafdd22620239500de1e2417d9e6a146204b27eab199f0a7c53d58e1e177a72beb5758704b9a12c0076e
7
+ data.tar.gz: 5c99aed2660d0fcd7a43128d524f53655b6a35be55baaf765ba2bffbaed8f7b840e4a0a16f350ebb7a49ab80434d64362fc90b563078bcb048b39ea8095090e4
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
  # frozen_string_literal: true
3
3
 
4
- # Pagy initializer file (3.3.0)
4
+ # Pagy initializer file (3.3.1)
5
5
  # Customize only what you really need and notice that Pagy works also without any of the following lines.
6
6
  # Should you just cherry pick part of this file, please maintain the require-order of the extras
7
7
 
@@ -23,7 +23,7 @@ lambda do |i18n, *args|
23
23
  arg[:filepath] ||= Pagy.root.join('locales', "#{arg[:locale]}.yml")
24
24
  arg[:pluralize] ||= plurals[arg[:locale]]
25
25
  hash = YAML.load(File.read(arg[:filepath], encoding: 'UTF-8')) #rubocop:disable Security/YAMLLoad
26
- hash.key?(arg[:locale]) or raise ArgumentError, %(Pagy::I18n.load: :locale "#{arg[:locale]}" not found in :filepath "#{arg[:filepath].inspect}")
26
+ hash.key?(arg[:locale]) or raise VariableError, %(expected :locale "#{arg[:locale]}" not found in :filepath "#{arg[:filepath].inspect}")
27
27
  i18n[arg[:locale]] = [flatten.call(hash[arg[:locale]]), arg[:pluralize]]
28
28
  end
29
29
  end
@@ -4,9 +4,7 @@
4
4
 
5
5
  require 'pathname'
6
6
 
7
- class Pagy ; VERSION = '3.3.0'
8
-
9
- class OverflowError < StandardError; attr_reader :pagy; def initialize(pagy) @pagy = pagy end; end
7
+ class Pagy ; VERSION = '3.3.1'
10
8
 
11
9
  # Root pathname to get the path of Pagy files like templates or dictionaries
12
10
  def self.root; @root ||= Pathname.new(__FILE__).dirname.freeze end
@@ -21,7 +19,7 @@ class Pagy ; VERSION = '3.3.0'
21
19
  @vars = VARS.merge(vars.delete_if{|_,v| v.nil? || v == '' }) # default vars + cleaned vars
22
20
  { count:0, items:1, outset:0, page:1 }.each do |k,min| # validate instance variables
23
21
  (@vars[k] && instance_variable_set(:"@#{k}", @vars[k].to_i) >= min) \
24
- or raise(ArgumentError, "expected :#{k} >= #{min}; got #{@vars[k].inspect}")
22
+ or raise(VariableError.new(self), "expected :#{k} >= #{min}; got #{@vars[k].inspect}")
25
23
  end
26
24
  @pages = @last = [(@count.to_f / @items).ceil, 1].max # cardinal and ordinal meanings
27
25
  @page <= @last or raise(OverflowError.new(self), "expected :page in 1..#{@last}; got #{@page.inspect}")
@@ -36,7 +34,7 @@ class Pagy ; VERSION = '3.3.0'
36
34
  # Return the array of page numbers and :gap items e.g. [1, :gap, 7, 8, "9", 10, 11, :gap, 36]
37
35
  def series(size=@vars[:size])
38
36
  (series = []) and size.empty? and return series
39
- 4.times{|i| (size[i]>=0 rescue nil) or raise(ArgumentError, "expected 4 items >= 0 in :size; got #{size.inspect}")}
37
+ 4.times{|i| (size[i]>=0 rescue nil) or raise(VariableError.new(self), "expected 4 items >= 0 in :size; got #{size.inspect}")}
40
38
  [*0..size[0], *@page-size[1]..@page+size[2], *@last-size[3]+1..@last+1].sort!.each_cons(2) do |a, b|
41
39
  if a<0 || a==b || a>@last # skip out of range and duplicates
42
40
  elsif a+1 == b; series.push(a) # no gap -> no additions
@@ -51,3 +49,4 @@ end
51
49
 
52
50
  require 'pagy/backend'
53
51
  require 'pagy/frontend'
52
+ require 'pagy/exceptions'
@@ -12,7 +12,7 @@ class Pagy
12
12
  @vars = VARS.merge(vars.delete_if{|_,v| v.nil? || v == '' }) # default vars + cleaned vars (can be overridden)
13
13
  { items:1, outset:0, page:1 }.each do |k,min| # validate instance variables
14
14
  (@vars[k] && instance_variable_set(:"@#{k}", @vars[k].to_i) >= min) \
15
- or raise(ArgumentError, "expected :#{k} >= #{min}; got #{@vars[k].inspect}")
15
+ or raise(VariableError.new(self), "expected :#{k} >= #{min}; got #{@vars[k].inspect}")
16
16
  end
17
17
  @offset = @items * (@page - 1) + @outset # pagination offset + outset (initial offset)
18
18
  end
@@ -0,0 +1,22 @@
1
+ class Pagy
2
+
3
+ class VariableError < ArgumentError
4
+ attr_reader :pagy
5
+
6
+ def initialize(pagy)
7
+ @pagy = pagy
8
+ end
9
+
10
+ def variable
11
+ message =~ /expected :([\w]+)/
12
+ $1.to_sym if $1
13
+ end
14
+
15
+ def value
16
+ pagy.vars[variable]
17
+ end
18
+ end
19
+
20
+ class OverflowError < VariableError; end
21
+
22
+ end
@@ -28,7 +28,7 @@ class Pagy
28
28
  @prev = @last # prev relative to the actual page
29
29
  extend(Series) # special series for :empty_page
30
30
  else
31
- raise ArgumentError, "expected :overflow variable in [:last_page, :empty_page, :exception]; got #{@vars[:overflow].inspect}"
31
+ raise VariableError.new(self), "expected :overflow variable in [:last_page, :empty_page, :exception]; got #{@vars[:overflow].inspect}"
32
32
  end
33
33
  end
34
34
  alias_method :initialize, :initialize_with_overflow
@@ -62,7 +62,7 @@ class Pagy
62
62
  @vars[:size] = [] # no page in the series
63
63
  self
64
64
  else
65
- raise ArgumentError, "expected :overflow variable in [:empty_page, :exception]; got #{@vars[:overflow].inspect}"
65
+ raise VariableError.new(self), "expected :overflow variable in [:empty_page, :exception]; got #{@vars[:overflow].inspect}"
66
66
  end
67
67
  end
68
68
  alias_method :finalize, :finalize_with_overflow
@@ -19,7 +19,7 @@ class Pagy
19
19
  # Notice: if :steps is false it will use the single {0 => @vars[:size]} size
20
20
  def sequels
21
21
  steps = @vars[:steps] || {0 => @vars[:size]}
22
- steps.key?(0) or raise(ArgumentError, "expected :steps to define the 0 width; got #{steps.inspect}")
22
+ steps.key?(0) or raise(VariableError.new(self), "expected :steps to define the 0 width; got #{steps.inspect}")
23
23
  sequels = {}; steps.each {|width, size| sequels[width.to_s] = series(size)}; sequels
24
24
  end
25
25
 
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: 3.3.0
4
+ version: 3.3.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: 2019-06-10 00:00:00.000000000 Z
11
+ date: 2019-07-02 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,
@@ -46,6 +46,7 @@ files:
46
46
  - lib/pagy.rb
47
47
  - lib/pagy/backend.rb
48
48
  - lib/pagy/countless.rb
49
+ - lib/pagy/exceptions.rb
49
50
  - lib/pagy/extras/array.rb
50
51
  - lib/pagy/extras/bootstrap.rb
51
52
  - lib/pagy/extras/bulma.rb