actionpager 0.0.2 → 0.0.3

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: 392d0eef85f05593b217553a4089a99620128beee88340ffb6ce253d98d506e6
4
- data.tar.gz: 55f1bf7d18e55c3527e8942c2c3394b7412c8814b993ba9d6685e74c5b50222e
3
+ metadata.gz: ae90863fad5a3f30f9572dee02a8fb5011b684e6b320efb7229158c70644af08
4
+ data.tar.gz: b7341df2d718988c8e06a8f76ba78421fabb3f305cdcc43e82a87e17b1adc2e7
5
5
  SHA512:
6
- metadata.gz: 9361640ca67575e97f4b47f3c109d70030f3b9065091bf28585a59b497701ac85ce0c2b1849e462ecf28fec09f394551ac1aeef8496fe0980eaa1ba8c6de980b
7
- data.tar.gz: c75cd0322148d6a4db38d30a9bd44304d34548ab5b4f7c5388f2353b8764ff93cfd9c69e2403ce8bff2f699ab8b1f7c379a7018e10725830de7b658ffa7caa91
6
+ metadata.gz: a298e3b66538f5872af6e7c4fe97c1f0cf8f24ca2422ce27753567368d73ad7e906535d7ef7cacd68b81923e4d18f7f06dbd932692e2db38102e6689924898a6
7
+ data.tar.gz: '03509d9f2a60cdd25ccfe50f9080bb56323212f0432ed805f4f4efcc4afde65ec93a54b8fdadb8485951c7ec124ef80e30cc21cda65dbba1070a62efec226ea8'
data/Gemfile.lock ADDED
@@ -0,0 +1,22 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ actionpager (0.0.2)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ minitest (5.11.3)
10
+ rake (10.5.0)
11
+
12
+ PLATFORMS
13
+ ruby
14
+
15
+ DEPENDENCIES
16
+ actionpager!
17
+ bundler (~> 1.16)
18
+ minitest (~> 5.0)
19
+ rake (~> 10.0)
20
+
21
+ BUNDLED WITH
22
+ 1.16.6
@@ -2,19 +2,25 @@
2
2
 
3
3
  module ActionPager
4
4
  class Pager
5
- DEFAULTS = { page: 1, per: 20 }.freeze
5
+ DEFAULTS = { page: 1, per: 20, near: 2 }.freeze
6
6
 
7
- attr_reader :current_page, :per_page, :collection, :options
7
+ attr_reader :current_page, :per_page, :near, :collection, :options
8
8
 
9
9
  def initialize(collection, options={})
10
10
  @options = options
11
11
  opts = DEFAULTS.merge(options)
12
12
  @current_page = opts[:page]
13
13
  @per_page = opts[:per]
14
+ @near = opts[:near]
14
15
  @collection = collection
15
16
  end
16
17
 
17
18
  def scoped
19
+ warn "[DEPRECATION] `scoped` is deprecated. Please use `current_collection` instead."
20
+ current_collection
21
+ end
22
+
23
+ def current_collection
18
24
  if collection.is_a?(Array)
19
25
  collection.drop(offset).first(per_page)
20
26
  else # for ActiveRecord::Relation and other OR mapper collections
@@ -41,6 +47,7 @@ module ActionPager
41
47
  def last_page
42
48
  @last_page ||= collection_count / per_page + 1
43
49
  end
50
+ alias_method :total_pages, :last_page
44
51
 
45
52
  def last_page?
46
53
  current_page == last_page
@@ -55,5 +62,36 @@ module ActionPager
55
62
  page = current_page + 1
56
63
  page <= last_page ? page : nil
57
64
  end
65
+
66
+ def shown_page_count
67
+ near * 2 + 1
68
+ end
69
+
70
+ # pages that numbers are displayed
71
+ def near_pages
72
+ @near_pages ||= begin
73
+ if current_page <= near + 1
74
+ upper_page = shown_page_count >= last_page ? last_page : shown_page_count
75
+ 1..upper_page
76
+ elsif current_page >= last_page - near - 1
77
+ bottom_page = last_page - shown_page_count + 1
78
+ (bottom_page > 1 ? bottom_page : 1)..last_page
79
+ else
80
+ bottom_page = current_page - near
81
+ upper_page = current_page + near
82
+ (bottom_page > 1 ? bottom_page : 1)..(upper_page < last_page ? upper_page : last_page)
83
+ end
84
+ end
85
+ end
86
+
87
+ # show bottom (left) gap mark in pager?
88
+ def bottom_gap?
89
+ near_pages.first > 1
90
+ end
91
+
92
+ # show upper (right) gap mark in pager?
93
+ def upper_gap?
94
+ near_pages.last < last_page
95
+ end
58
96
  end
59
97
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ActionPager
4
- VERSION = "0.0.2"
4
+ VERSION = "0.0.3"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: actionpager
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryo Hashimoto
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-10-27 00:00:00.000000000 Z
11
+ date: 2018-11-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -63,6 +63,7 @@ files:
63
63
  - ".gitignore"
64
64
  - CODE_OF_CONDUCT
65
65
  - Gemfile
66
+ - Gemfile.lock
66
67
  - LICENSE
67
68
  - README.md
68
69
  - Rakefile