next_page 0.1.7 → 0.2.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.
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