next_page 0.1.7 → 0.2.0

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: 91b9a69827f83cb0e3fd5dcbbdab8537c61d859f89cea744a2afccf8afcf3570
4
- data.tar.gz: 4474b5cdb0d3e44473df17a0ae10fbd389abf9a3e372062f5691fb656c8a21e4
3
+ metadata.gz: 816ed22df71f4838cfe99457bec6a62c2b0e01318436a1fa8f03eb927dfb8939
4
+ data.tar.gz: 170578dcc7f6ee852c461fb43597bc0d3a64231016c74498ad674da847296690
5
5
  SHA512:
6
- metadata.gz: bf4b093bb8ae31e75c83416539bd3b9848956e81ff90fcecfd0ed90c08cfdbaf6f84e55651130f6115b3c070f77c0d46a336ce95e74bd785f8a0cd20b5d6dba6
7
- data.tar.gz: b0d3559fc5db3431acf8102471db073e17fc428bd8bfc05bbf1b8f472547d4686b9da0eaed4872e9313b0c3d2600ae58f28b933b23732646d3027c1206fd3ac0
6
+ metadata.gz: 47b95e0134da9e2ff7032e35ca485d0da63fd2c84c8959833e7e1f6338879968d20458ed244553d60d9406a5880f4f8216ad8e5a218b047fcb27fdf113d65a51
7
+ data.tar.gz: 5860bb0ce08448a20625d051bdae952c45a04310a46b10de82d0a758cc0812b4b14e688a9d2732f68a2c11b973d99f08eaf59a7a8da283bf91788c96830fbf9c
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  [![Gem Version](https://badge.fury.io/rb/next_page.svg)](https://badge.fury.io/rb/next_page)
2
+ [![RSpec](https://github.com/RockSolt/next_page/actions/workflows/rspec.yml/badge.svg)](https://github.com/RockSolt/next_page/actions/workflows/rspec.yml)
2
3
  [![RuboCop](https://github.com/RockSolt/next_page/workflows/RuboCop/badge.svg)](https://github.com/RockSolt/next_page/actions?query=workflow%3ARuboCop)
4
+ [![Maintainability](https://api.codeclimate.com/v1/badges/0efe1a9b66a0bf161536/maintainability)](https://codeclimate.com/github/RockSolt/next_page/maintainability)
3
5
 
4
6
  # NextPage
5
7
  Basic pagination for Rails controllers.
@@ -7,10 +7,7 @@ module NextPage
7
7
  def initialize(model, association)
8
8
  @model = model
9
9
  @association = association
10
- end
11
-
12
- def message
13
- "Invalid nested sort: Unable to find association #{@association} on model #{@model}"
10
+ super("Invalid nested sort: Unable to find association #{@association} on model #{@model}")
14
11
  end
15
12
  end
16
13
  end
@@ -6,10 +6,7 @@ module NextPage
6
6
  class InvalidSortParameter < NextPage::Exceptions::NextPageError
7
7
  def initialize(segment)
8
8
  @segment = segment
9
- end
10
-
11
- def message
12
- "Invalid sort parameter (#{@segment}). Must be an attribute or scope."
9
+ super("Invalid sort parameter (#{@segment}). Must be an attribute or scope.")
13
10
  end
14
11
  end
15
12
  end
@@ -44,7 +44,7 @@ module NextPage
44
44
  extend ActiveSupport::Concern
45
45
 
46
46
  class_methods do
47
- def next_page_paginator #:nodoc:
47
+ def next_page_paginator # :nodoc:
48
48
  @next_page_paginator ||= NextPage::Paginator.new(controller_name, controller_path)
49
49
  end
50
50
 
@@ -68,7 +68,7 @@ module NextPage
68
68
  self.class.next_page_paginator.paginate_resource(resource, params.slice(:page, :sort))
69
69
  end
70
70
 
71
- def render(*args) #:nodoc:
71
+ def render(*args) # :nodoc:
72
72
  return super unless action_name == 'index' && request.headers[:Accept] == 'application/vnd.api+json'
73
73
 
74
74
  self.class.next_page_paginator.decorate_meta!(args.first)
@@ -3,8 +3,8 @@
3
3
  module NextPage
4
4
  # = Pagination Attributes
5
5
  #
6
- # Module PaginationAttributes adds in methods required for pagination links: current_page, next_page, and total_pages.
7
- # It reads the offset and limit on the query to determine the values.
6
+ # Module PaginationAttributes adds in methods required for pagination links: previous_page, current_page, next_page,
7
+ # and total_pages. It reads the offset and limit on the query to determine the values.
8
8
  #
9
9
  # In some cases the query will not support count. In that case, there are two ways to override the default behavior:
10
10
  # - provide a count_query that can resolve the attributes
@@ -12,12 +12,16 @@ module NextPage
12
12
  module PaginationAttributes
13
13
  attr_writer :count_query, :current_page, :total_count, :per_page
14
14
 
15
+ def previous_page
16
+ current_page > 1 ? current_page - 1 : nil
17
+ end
18
+
15
19
  def current_page
16
- @current_page ||= count_query.offset_value + 1
20
+ @current_page ||= (count_query.offset_value || 0) + 1
17
21
  end
18
22
 
19
23
  def next_page
20
- current_page + 1
24
+ total_pages > current_page ? current_page + 1 : nil
21
25
  end
22
26
 
23
27
  def total_count
@@ -8,7 +8,7 @@ module NextPage
8
8
  class SegmentParser
9
9
  attr_reader :direction, :associations, :name
10
10
 
11
- SEGMENT_REGEX = /(?<sign>[+|-]?)(?<names>.+)/.freeze
11
+ SEGMENT_REGEX = /(?<sign>[+|-]?)(?<names>.+)/
12
12
 
13
13
  def initialize(segment)
14
14
  @segment = segment
@@ -1,3 +1,3 @@
1
1
  module NextPage
2
- VERSION = '0.1.7'
2
+ VERSION = '0.2.0'
3
3
  end
metadata CHANGED
@@ -1,119 +1,127 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: next_page
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Todd Kummer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-08-12 00:00:00.000000000 Z
11
+ date: 2024-01-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: 6.0.2
20
17
  - - ">="
21
18
  - !ruby/object:Gem::Version
22
- version: 6.0.2.2
19
+ version: 6.1.7
23
20
  type: :runtime
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 6.1.7
27
+ - !ruby/object:Gem::Dependency
28
+ name: appraisal
29
+ requirement: !ruby/object:Gem::Requirement
26
30
  requirements:
27
31
  - - "~>"
28
32
  - !ruby/object:Gem::Version
29
- version: 6.0.2
30
- - - ">="
33
+ version: 2.5.0
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
31
39
  - !ruby/object:Gem::Version
32
- version: 6.0.2.2
40
+ version: 2.5.0
33
41
  - !ruby/object:Gem::Dependency
34
42
  name: guard
35
43
  requirement: !ruby/object:Gem::Requirement
36
44
  requirements:
37
45
  - - "~>"
38
46
  - !ruby/object:Gem::Version
39
- version: '2.16'
47
+ version: 2.18.0
40
48
  type: :development
41
49
  prerelease: false
42
50
  version_requirements: !ruby/object:Gem::Requirement
43
51
  requirements:
44
52
  - - "~>"
45
53
  - !ruby/object:Gem::Version
46
- version: '2.16'
54
+ version: 2.18.0
47
55
  - !ruby/object:Gem::Dependency
48
56
  name: guard-rspec
49
57
  requirement: !ruby/object:Gem::Requirement
50
58
  requirements:
51
59
  - - "~>"
52
60
  - !ruby/object:Gem::Version
53
- version: '4.7'
61
+ version: 4.7.3
54
62
  type: :development
55
63
  prerelease: false
56
64
  version_requirements: !ruby/object:Gem::Requirement
57
65
  requirements:
58
66
  - - "~>"
59
67
  - !ruby/object:Gem::Version
60
- version: '4.7'
68
+ version: 4.7.3
61
69
  - !ruby/object:Gem::Dependency
62
70
  name: guard-rubocop
63
71
  requirement: !ruby/object:Gem::Requirement
64
72
  requirements:
65
73
  - - "~>"
66
74
  - !ruby/object:Gem::Version
67
- version: 1.3.0
75
+ version: 1.5.0
68
76
  type: :development
69
77
  prerelease: false
70
78
  version_requirements: !ruby/object:Gem::Requirement
71
79
  requirements:
72
80
  - - "~>"
73
81
  - !ruby/object:Gem::Version
74
- version: 1.3.0
82
+ version: 1.5.0
75
83
  - !ruby/object:Gem::Dependency
76
84
  name: pg
77
85
  requirement: !ruby/object:Gem::Requirement
78
86
  requirements:
79
87
  - - "~>"
80
88
  - !ruby/object:Gem::Version
81
- version: 1.2.3
89
+ version: 1.5.4
82
90
  type: :development
83
91
  prerelease: false
84
92
  version_requirements: !ruby/object:Gem::Requirement
85
93
  requirements:
86
94
  - - "~>"
87
95
  - !ruby/object:Gem::Version
88
- version: 1.2.3
96
+ version: 1.5.4
89
97
  - !ruby/object:Gem::Dependency
90
98
  name: rspec-rails
91
99
  requirement: !ruby/object:Gem::Requirement
92
100
  requirements:
93
101
  - - "~>"
94
102
  - !ruby/object:Gem::Version
95
- version: '3.9'
103
+ version: 5.1.2
96
104
  type: :development
97
105
  prerelease: false
98
106
  version_requirements: !ruby/object:Gem::Requirement
99
107
  requirements:
100
108
  - - "~>"
101
109
  - !ruby/object:Gem::Version
102
- version: '3.9'
110
+ version: 5.1.2
103
111
  - !ruby/object:Gem::Dependency
104
112
  name: rubocop
105
113
  requirement: !ruby/object:Gem::Requirement
106
114
  requirements:
107
115
  - - "~>"
108
116
  - !ruby/object:Gem::Version
109
- version: 0.82.0
117
+ version: 1.60.1
110
118
  type: :development
111
119
  prerelease: false
112
120
  version_requirements: !ruby/object:Gem::Requirement
113
121
  requirements:
114
122
  - - "~>"
115
123
  - !ruby/object:Gem::Version
116
- version: 0.82.0
124
+ version: 1.60.1
117
125
  - !ruby/object:Gem::Dependency
118
126
  name: simplecov
119
127
  requirement: !ruby/object:Gem::Requirement
@@ -172,7 +180,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
172
180
  - !ruby/object:Gem::Version
173
181
  version: '0'
174
182
  requirements: []
175
- rubygems_version: 3.0.8
183
+ rubygems_version: 3.4.17
176
184
  signing_key:
177
185
  specification_version: 4
178
186
  summary: Pagination for Rails Controllers