pagy 0.6.0 → 0.7.0

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/pagy.rb +7 -9
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c1f0144a6fd3d7656796cc0811c275402fa66db024bd9dfd08a2f76853b33b3d
4
- data.tar.gz: '09ea67fbafb73195fd9efe1470860884f317800c455a40150ce533b2b1a74574'
3
+ metadata.gz: 2a38bfeb3b81ab4359c9205b9eccd3af61b7413e6b2daa6aff42bd5ad0e13532
4
+ data.tar.gz: d9cd8d3eccf9880895ed9293895a2eff313a8ae996f21f01781e7a718788aca5
5
5
  SHA512:
6
- metadata.gz: 50ce6bb16a1ac0cb961cdbabcdf41065fdecdbccc4d6293b18fd345e34ffba60fd40a1855f4e77036420c46be848d6c4ae614a351418549854cefc51fab63ee7
7
- data.tar.gz: 56f0b36c864d625775bf39ed574ea1996d1bb608a918ba57ef46082b8ae10fc927588fda1955e8b129a68fd97089a32ff3f47ce1abce202a7f037d6710a0b300
6
+ metadata.gz: 8617020e93c6128ebb3ca5e9c4fd4a02540220c71addd1f257f39e48c486780e9f245a4b29c2b059c055ddc07207feb42be02ddf73ea1d33a11ac877909ef20b
7
+ data.tar.gz: 7c69e723095bbea0c267c82cc6efa5c1dc11763668a8929f754fe6cf3b8b3e1265d2058d433b20776b7b78aef1dd32b1e29c9ab348607f23c4dd5cec752779f8
data/lib/pagy.rb CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  require 'pathname'
4
4
 
5
- class Pagy ; VERSION = '0.6.0'
5
+ class Pagy ; VERSION = '0.7.0'
6
6
 
7
7
  autoload :Backend, 'pagy/backend'
8
8
  autoload :Frontend, 'pagy/frontend'
@@ -13,21 +13,19 @@ class Pagy ; VERSION = '0.6.0'
13
13
  def self.root; Pathname.new(__FILE__).dirname end
14
14
 
15
15
  # default core vars
16
- VARS = { items:20, outset:0, size:[1,4,4,1] }
16
+ VARS = { page:1, items:20, outset:0, size:[1,4,4,1] }
17
17
 
18
18
  # default I18n vars
19
- I18N = { file: Pagy.root.join('locales', 'pagy.yml').to_s, plurals: -> (c) {c==0 && 'zero' || c==1 && 'one' || 'other'} }
20
-
19
+ zero_one = [:zero, :one] ; I18N = { file: Pagy.root.join('locales', 'pagy.yml').to_s, plurals: -> (c) {(zero_one[c] || :other).to_s.freeze} }
21
20
 
22
21
  attr_reader :count, :page, :items, :vars, :pages, :last, :offset, :from, :to, :prev, :next
23
22
 
24
23
  # merge and validate the options, do some simple aritmetic and set the instance variables
25
24
  def initialize(vars)
26
- @vars = VARS.merge(vars) # default vars + instance vars
27
- @vars[:page] = (@vars[:page]||1).to_i # set page to 1 if nil
25
+ @vars = VARS.merge(vars.delete_if{|k,v| v.nil? or v == '' }) # default vars + cleaned instance vars
28
26
  { count:0, items:1, outset:0, page:1 }.each do |k,min| # validate core variables
29
- @vars[k] >= min rescue nil || raise(ArgumentError, "expected :#{k} >= #{min}; got #{@vars[k].inspect}")
30
- instance_variable_set(:"@#{k}", @vars.delete(k)) # set instance variables
27
+ (@vars[k] && @vars[k].to_i >= min) or raise(ArgumentError, "expected :#{k} >= #{min}; got #{@vars[k].inspect}")
28
+ instance_variable_set(:"@#{k}", @vars.delete(k).to_i) # set instance variables
31
29
  end
32
30
  @pages = @last = [(@count.to_f / @items).ceil, 1].max # cardinal and ordinal meanings
33
31
  (1..@last).cover?(@page) || raise(OutOfRangeError, "expected :page in 1..#{@last}; got #{@page.inspect}")
@@ -41,7 +39,7 @@ class Pagy ; VERSION = '0.6.0'
41
39
 
42
40
  # return the array of page numbers and :gap items e.g. [1, :gap, 7, 8, "9", 10, 11, :gap, 36]
43
41
  def series(size=@vars[:size])
44
- (0..3).each{|i| size[i]>=0 rescue nil || raise(ArgumentError, "expected 4 items in :size >= 0; got #{size.inspect}")}
42
+ (0..3).each{|i| (size[i]>=0 rescue nil) or raise(ArgumentError, "expected 4 items >= 0 in :size; got #{size.inspect}")}
45
43
  series = []
46
44
  [*0..size[0], *@page-size[1]..@page+size[2], *@last-size[3]+1..@last+1].sort!.each_cons(2) do |a, b|
47
45
  if a<0 || a==b || a>@last # skip out of range and duplicates
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.6.0
4
+ version: 0.7.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-04-22 00:00:00.000000000 Z
11
+ date: 2018-05-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler