jbuilder_pagination_plus 0.0.5 → 1.0.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
- SHA1:
3
- metadata.gz: 5cc64afe36c2c07f15f597880a0b359c78018443
4
- data.tar.gz: 260decbe1eb3f34d4863d6ea33ca8a9cb44dc244
2
+ SHA256:
3
+ metadata.gz: cececb634f26e00fe8a3d65d1144eccef856b13a707529594abde9fc1c27d0da
4
+ data.tar.gz: 3ac8472d5ff0b3c2b5fe9aee0d9585db0e8458bd4ff01477ea0ea01c2dbc0515
5
5
  SHA512:
6
- metadata.gz: 3178350c163c1f0fba32fd2b530acefcc53dd8f987a019d70ab0fcf8d7e0491eb3ea1630f46eb7541d63c824f40950e9957a4c4978588a52aa2fcd5317c21be3
7
- data.tar.gz: f33763dbdfe7dad071898bd3e9de0c21451d48721dc4beb3c3503227861551ab12f4eb0bfb05ec42c561abf0410fabe7bcc0a8957c8ee44498d3444d14d6e100
6
+ metadata.gz: 7069f7c1bbfdabe4d0ed7c617e30867d59e61d32bfdd911661fbd8b95c05ab0ee2d9a38e80a8b78bd00965ff673e96fc1a66b1dfabb313adc2e61d630d5c9b14
7
+ data.tar.gz: c8bce1f559d82dd49a18aa052f5af9692895382331c2cea4e31ddb2f94ea9f5c0849b168f1d59905e2bbd8d3dddd9faff2824ff64d5680d5ecd743bd2fb8386a
@@ -1 +1 @@
1
- ruby-2.4.3
1
+ ruby-2.5.3
@@ -0,0 +1,7 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.5.3
4
+ sudo: false
5
+ install: bin/setup
6
+ script:
7
+ - bundle exec rspec spec
data/Rakefile CHANGED
@@ -1 +1,9 @@
1
1
  require "bundler/gem_tasks"
2
+ require 'rspec/core'
3
+ require 'rspec/core/rake_task'
4
+
5
+ RSpec::Core::RakeTask.new(:spec) do |spec|
6
+ spec.pattern = 'spec/**/*_spec.rb'
7
+ end
8
+
9
+ task default: %i[spec]
@@ -19,8 +19,9 @@ Gem::Specification.new do |spec|
19
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
20
  spec.require_paths = ["lib"]
21
21
 
22
- spec.add_runtime_dependency 'jbuilder', '~> 2.2', '>= 2.2.0'
23
- spec.add_development_dependency 'rspec', '~> 3.2', '>= 3.2.0'
24
- spec.add_development_dependency 'rake', '~> 10.0'
22
+ spec.add_runtime_dependency 'rack', '~> 2.0', '>= 2.0.0'
23
+ spec.add_runtime_dependency 'jbuilder', '~> 2.8', '>= 2.8.0'
24
+ spec.add_development_dependency 'rspec', '~> 3.8', '>= 3.8.0'
25
+ spec.add_development_dependency 'rake', '~> 12.0', '>= 12.0.0'
25
26
  spec.add_development_dependency 'pry', '~> 0'
26
27
  end
@@ -1,5 +1,6 @@
1
- require "jbuilder"
2
- require "jbuilder/pagination/pages"
1
+ require 'rack/utils'
2
+ require 'jbuilder'
3
+ require 'jbuilder/pagination/pages'
3
4
  require 'jbuilder/pagination/exceptions/unpageable_resource_error'
4
5
 
5
6
  module Pagination
@@ -1,41 +1,50 @@
1
1
  class Jbuilder
2
2
  ONE_PAGE = 1
3
3
 
4
- def pages!(collection, options={})
4
+ def pages!(collection, options = {})
5
5
  return unless collection && is_paginated?(collection)
6
6
 
7
+ options_url = options.fetch(:url, nil)
8
+ original_url = nil
9
+ original_params = {}
10
+ if options_url
11
+ original_url, original_params = options_url.split("?")
12
+ original_params = ::Rack::Utils.parse_nested_query(original_params).deep_symbolize_keys
13
+ end
14
+ options_query_parameters = options.fetch(:query_parameters, {})
15
+
7
16
  pages_from(collection).map do |key, value|
8
- params = query_parameters(options).merge(page: { number: value, size: collection.size }).to_query
9
- _set_value key, "#{options.fetch(:url, nil)}?#{params}"
17
+ params = query_parameters(options_query_parameters, original_params).deep_merge(page: { number: value, size: collection.size }).to_query
18
+ _set_value key, "#{original_url}?#{params}"
10
19
  end
11
20
  end
12
21
 
13
22
  private
14
23
 
15
- def pages_from(collection)
16
- {}.tap do |pages|
17
- pages[:self] = collection.current_page
18
- return pages if collection.total_pages <= ONE_PAGE
24
+ def pages_from(collection)
25
+ {}.tap do |pages|
26
+ pages[:self] = collection.current_page
27
+ return pages if collection.total_pages <= ONE_PAGE
19
28
 
20
- unless collection.current_page == ONE_PAGE
21
- pages[:first] = ONE_PAGE
22
- pages[:prev] = collection.current_page - ONE_PAGE
23
- end
29
+ unless collection.current_page == ONE_PAGE
30
+ pages[:first] = ONE_PAGE
31
+ pages[:prev] = collection.current_page - ONE_PAGE
32
+ end
24
33
 
25
- unless collection.current_page == collection.total_pages
26
- pages[:next] = collection.current_page + ONE_PAGE
27
- pages[:last] = collection.total_pages
34
+ unless collection.current_page == collection.total_pages
35
+ pages[:next] = collection.current_page + ONE_PAGE
36
+ pages[:last] = collection.total_pages
37
+ end
28
38
  end
29
39
  end
30
- end
31
40
 
32
- def query_parameters(options)
33
- @query_parameters ||= (options.fetch(:query_parameters, {}) || {}).compact
34
- end
41
+ def query_parameters(query_parameters, original_parameters)
42
+ @query_parameters ||= original_parameters.deep_merge(query_parameters || {}).compact
43
+ end
35
44
 
36
- def is_paginated?(collection)
37
- collection.respond_to?(:current_page) &&
38
- collection.respond_to?(:total_pages) &&
39
- collection.respond_to?(:size)
40
- end
45
+ def is_paginated?(collection)
46
+ collection.respond_to?(:current_page) &&
47
+ collection.respond_to?(:total_pages) &&
48
+ collection.respond_to?(:size)
49
+ end
41
50
  end
@@ -1,5 +1,5 @@
1
1
  module Jbuilder
2
2
  class Pagination
3
- VERSION = "0.0.5"
3
+ VERSION = "1.0.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jbuilder_pagination_plus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bruno Bacarini
@@ -9,62 +9,88 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2018-05-24 00:00:00.000000000 Z
12
+ date: 2019-05-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: jbuilder
15
+ name: rack
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - "~>"
19
- - !ruby/object:Gem::Version
20
- version: '2.2'
21
18
  - - ">="
22
19
  - !ruby/object:Gem::Version
23
- version: 2.2.0
20
+ version: 2.0.0
21
+ - - "~>"
22
+ - !ruby/object:Gem::Version
23
+ version: '2.0'
24
24
  type: :runtime
25
25
  prerelease: false
26
26
  version_requirements: !ruby/object:Gem::Requirement
27
27
  requirements:
28
+ - - ">="
29
+ - !ruby/object:Gem::Version
30
+ version: 2.0.0
28
31
  - - "~>"
29
32
  - !ruby/object:Gem::Version
30
- version: '2.2'
33
+ version: '2.0'
34
+ - !ruby/object:Gem::Dependency
35
+ name: jbuilder
36
+ requirement: !ruby/object:Gem::Requirement
37
+ requirements:
31
38
  - - ">="
32
39
  - !ruby/object:Gem::Version
33
- version: 2.2.0
40
+ version: 2.8.0
41
+ - - "~>"
42
+ - !ruby/object:Gem::Version
43
+ version: '2.8'
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ version: 2.8.0
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '2.8'
34
54
  - !ruby/object:Gem::Dependency
35
55
  name: rspec
36
56
  requirement: !ruby/object:Gem::Requirement
37
57
  requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '3.2'
41
58
  - - ">="
42
59
  - !ruby/object:Gem::Version
43
- version: 3.2.0
60
+ version: 3.8.0
61
+ - - "~>"
62
+ - !ruby/object:Gem::Version
63
+ version: '3.8'
44
64
  type: :development
45
65
  prerelease: false
46
66
  version_requirements: !ruby/object:Gem::Requirement
47
67
  requirements:
48
- - - "~>"
49
- - !ruby/object:Gem::Version
50
- version: '3.2'
51
68
  - - ">="
52
69
  - !ruby/object:Gem::Version
53
- version: 3.2.0
70
+ version: 3.8.0
71
+ - - "~>"
72
+ - !ruby/object:Gem::Version
73
+ version: '3.8'
54
74
  - !ruby/object:Gem::Dependency
55
75
  name: rake
56
76
  requirement: !ruby/object:Gem::Requirement
57
77
  requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: 12.0.0
58
81
  - - "~>"
59
82
  - !ruby/object:Gem::Version
60
- version: '10.0'
83
+ version: '12.0'
61
84
  type: :development
62
85
  prerelease: false
63
86
  version_requirements: !ruby/object:Gem::Requirement
64
87
  requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: 12.0.0
65
91
  - - "~>"
66
92
  - !ruby/object:Gem::Version
67
- version: '10.0'
93
+ version: '12.0'
68
94
  - !ruby/object:Gem::Dependency
69
95
  name: pry
70
96
  requirement: !ruby/object:Gem::Requirement
@@ -93,6 +119,7 @@ files:
93
119
  - ".rspec"
94
120
  - ".ruby-gemset"
95
121
  - ".ruby-version"
122
+ - ".travis.yml"
96
123
  - CODE_OF_CONDUCT.md
97
124
  - Gemfile
98
125
  - LICENSE.txt
@@ -125,7 +152,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
125
152
  version: '0'
126
153
  requirements: []
127
154
  rubyforge_project:
128
- rubygems_version: 2.6.14
155
+ rubygems_version: 2.7.8
129
156
  signing_key:
130
157
  specification_version: 4
131
158
  summary: Jbuilder extension to allows pagination according to JSON API format