From 219559222c4d681b75518eb849c8d657da3041ec Mon Sep 17 00:00:00 2001 From: Andrew Retmanski Date: Mon, 1 Jun 2020 16:15:03 +0100 Subject: [PATCH] Add support for specifying custom `:meta` options. Currently the pagination implementation completely overwrites the response `:meta` options - I have a use case that requires adding additional options to the meta section but the gem doesn't support that. This change allows something like the following to work as expected: ``` paginate my_collection, meta: { foo: 'bar' } ``` And will include the specified custom metadata in addition to the pagination metadata. --- lib/pager_api/pagination/kaminari.rb | 4 ++-- lib/pager_api/pagination/pagy.rb | 4 ++-- lib/pager_api/pagination/will_paginate.rb | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/pager_api/pagination/kaminari.rb b/lib/pager_api/pagination/kaminari.rb index c32259e..c1b9639 100644 --- a/lib/pager_api/pagination/kaminari.rb +++ b/lib/pager_api/pagination/kaminari.rb @@ -70,7 +70,7 @@ def paginate_collection(collection, options = {}) end def meta(collection, options = {}) - { + options.fetch(:meta, {}).merge( pagination: { per_page: options[:per_page].to_i || params[:per_page].to_i || ::Kaminari.config.default_per_page, @@ -78,7 +78,7 @@ def meta(collection, options = {}) total_objects: collection.total_count, links: pagination_links(collection) } - } + ) end end diff --git a/lib/pager_api/pagination/pagy.rb b/lib/pager_api/pagination/pagy.rb index 45b81f4..ec61ceb 100644 --- a/lib/pager_api/pagination/pagy.rb +++ b/lib/pager_api/pagination/pagy.rb @@ -73,14 +73,14 @@ def paginate_collection(collection, options = {}) end def meta(pagy, options = {}) - { + options.fetch(:meta, {}).merge( pagination: { per_page: pagy.items, total_pages: pagy.pages, total_objects: pagy.count, links: pagination_links(pagy), }, - } + ) end end end diff --git a/lib/pager_api/pagination/will_paginate.rb b/lib/pager_api/pagination/will_paginate.rb index a4e7c5d..eba0f63 100644 --- a/lib/pager_api/pagination/will_paginate.rb +++ b/lib/pager_api/pagination/will_paginate.rb @@ -71,7 +71,7 @@ def paginate_collection(collection, options = {}) end def meta(collection, options = {}) - { + options.fetch(:meta, {}).merge( pagination: { per_page: options[:per_page] || params[:per_page] || ::WillPaginate.per_page, @@ -79,7 +79,7 @@ def meta(collection, options = {}) total_objects: collection.total_entries, links: pagination_links(collection) } - } + ) end end end