lib/grape/kaminari.rb in grape-kaminari-0.1.9 vs lib/grape/kaminari.rb in grape-kaminari-0.2.0
- old
+ new
@@ -1,45 +1,51 @@
-require "grape"
-require "grape/kaminari/version"
-require "grape/kaminari/max_value_validator"
-require "kaminari/grape"
+require 'grape'
+require 'grape/kaminari/version'
+require 'grape/kaminari/max_value_validator'
+require 'kaminari/grape'
module Grape
module Kaminari
- def self.included(base)
- base.class_eval do
- helpers do
- def paginate(collection)
- collection.page(params[:page]).per(params[:per_page]).padding(params[:offset]).tap do |data|
- header "X-Total", data.total_count.to_s
- header "X-Total-Pages", data.total_pages.to_s
- header "X-Per-Page", data.limit_value.to_s
- header "X-Page", data.current_page.to_s
- header "X-Next-Page", data.next_page.to_s
- header "X-Prev-Page", data.prev_page.to_s
- header "X-Offset", params[:offset].to_s
- end
- end
+ module HelperMethods # :nodoc:
+ def paginate(collection)
+ collection.page(params[:page].to_i)
+ .per(params[:per_page].to_i)
+ .padding(params[:offset].to_i)
+ .tap do |data|
+ header 'X-Total', data.total_count.to_s
+ header 'X-Total-Pages', data.total_pages.to_s
+ header 'X-Per-Page', data.limit_value.to_s
+ header 'X-Page', data.current_page.to_s
+ header 'X-Next-Page', data.next_page.to_s
+ header 'X-Prev-Page', data.prev_page.to_s
+ header 'X-Offset', params[:offset].to_s
end
+ end
+ end
- def self.paginate(options = {})
- options.reverse_merge!(
- per_page: ::Kaminari.config.default_per_page || 10,
- max_per_page: ::Kaminari.config.max_per_page,
- offset: 0
- )
- params do
- optional :page, type: Integer, default: 1,
- desc: 'Page offset to fetch.'
- optional :per_page, type: Integer, default: options[:per_page],
- desc: 'Number of results to return per page.',
- max_value: options[:max_per_page]
- if options[:offset].is_a? Numeric
- optional :offset, type: Integer, default: options[:offset],
- desc: 'Pad a number of results.'
- end
+ module ClassMethods # :nodoc:
+ def paginate(**options)
+ options.reverse_merge!(
+ per_page: ::Kaminari.config.default_per_page || 10,
+ max_per_page: ::Kaminari.config.max_per_page,
+ offset: 0,
+ )
+ params do
+ optional :page, type: Integer, default: 1,
+ desc: 'Page offset to fetch.'
+ optional :per_page, type: Integer, default: options[:per_page],
+ desc: 'Number of results to return per page.',
+ max_value: options[:max_per_page]
+ if options[:offset].is_a? Numeric
+ optional :offset, type: Integer, default: options[:offset],
+ desc: 'Pad a number of results.'
end
end
end
+ end
+
+ def self.included(base)
+ base.helpers HelperMethods
+ base.extend ClassMethods
end
end
end