jbuilder_pagination_plus 0.0.5 → 1.0.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
- 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