kaminari-core 1.0.0 → 1.2.1
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 +5 -5
- data/CHANGELOG.md +1 -0
- data/README.md +2 -2
- data/app/views/kaminari/_paginator.html.erb +1 -1
- data/kaminari-core.gemspec +3 -2
- data/lib/generators/kaminari/config_generator.rb +1 -0
- data/lib/generators/kaminari/templates/kaminari_config.rb +2 -0
- data/lib/generators/kaminari/views_generator.rb +3 -0
- data/lib/kaminari/config.rb +26 -14
- data/lib/kaminari/core.rb +1 -0
- data/lib/kaminari/core/version.rb +2 -1
- data/lib/kaminari/engine.rb +1 -0
- data/lib/kaminari/exceptions.rb +1 -0
- data/lib/kaminari/helpers/helper_methods.rb +108 -35
- data/lib/kaminari/helpers/paginator.rb +10 -8
- data/lib/kaminari/helpers/tags.rb +29 -2
- data/lib/kaminari/models/array_extension.rb +2 -1
- data/lib/kaminari/models/configuration_methods.rb +4 -1
- data/lib/kaminari/models/page_scope_methods.rb +15 -6
- data/lib/kaminari/railtie.rb +1 -0
- metadata +6 -6
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 | 
            -
             | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 2 | 
            +
            SHA256:
         | 
| 3 | 
            +
              metadata.gz: 073f49d2cee52f15a94e03ea16932a7a35c140e21126fcaf32be27b16dd9126b
         | 
| 4 | 
            +
              data.tar.gz: d18374c251ef627e9ddb5b57cd0350c0092b139f2926d578b8f006f07db3403c
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 4d22379f9e5189f50288741c894323d9e36d5dc983e7eda26034db2f1900f4593223c53a3084b03fcacd391af039680bf9a22d41a3d503c291f7e7513a964b02
         | 
| 7 | 
            +
              data.tar.gz: a1b5d908d102b3929e58e8cbeec729b07c8a1b084aac2675562db0580bdc9970d41ef9c37e6d085781f78dc1510c0b41f78f0d5a1592df518129129aaa80747d
         | 
    
        data/CHANGELOG.md
    ADDED
    
    | @@ -0,0 +1 @@ | |
| 1 | 
            +
            See https://github.com/kaminari/kaminari/tree/master/CHANGELOG.md for changes.
         | 
    
        data/README.md
    CHANGED
    
    | @@ -18,12 +18,12 @@ And bundle. | |
| 18 18 |  | 
| 19 19 | 
             
            This gem is basically an internal gem that will be automatically bundled from kaminari gem or kaminari adapter gems.
         | 
| 20 20 |  | 
| 21 | 
            -
            See [Kaminari README](https://github.com/ | 
| 21 | 
            +
            See [Kaminari README](https://github.com/kaminari/kaminari/blob/master/README.md) for the documentation.
         | 
| 22 22 |  | 
| 23 23 |  | 
| 24 24 | 
             
            ## Contributing
         | 
| 25 25 |  | 
| 26 | 
            -
            Pull requests are welcome on GitHub at https://github.com/ | 
| 26 | 
            +
            Pull requests are welcome on GitHub at https://github.com/kaminari/kaminari.
         | 
| 27 27 |  | 
| 28 28 |  | 
| 29 29 | 
             
            ## License
         | 
| @@ -7,7 +7,7 @@ | |
| 7 7 | 
             
                paginator:     the paginator that renders the pagination tags inside
         | 
| 8 8 | 
             
            -%>
         | 
| 9 9 | 
             
            <%= paginator.render do -%>
         | 
| 10 | 
            -
              <nav class="pagination">
         | 
| 10 | 
            +
              <nav class="pagination" role="navigation" aria-label="pager">
         | 
| 11 11 | 
             
                <%= first_page_tag unless current_page.first? %>
         | 
| 12 12 | 
             
                <%= prev_page_tag unless current_page.first? %>
         | 
| 13 13 | 
             
                <% each_page do |page| -%>
         | 
    
        data/kaminari-core.gemspec
    CHANGED
    
    | @@ -1,5 +1,5 @@ | |
| 1 | 
            -
            # coding: utf-8
         | 
| 2 1 | 
             
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 3 | 
             
            lib = File.expand_path('../lib', __FILE__)
         | 
| 4 4 | 
             
            $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
         | 
| 5 5 | 
             
            require 'kaminari/core/version'
         | 
| @@ -12,8 +12,9 @@ Gem::Specification.new do |spec| | |
| 12 12 |  | 
| 13 13 | 
             
              spec.summary       = "Kaminari's core pagination library"
         | 
| 14 14 | 
             
              spec.description   = 'kaminari-core includes pagination logic independent from ORMs and view libraries'
         | 
| 15 | 
            -
              spec.homepage      = 'https://github.com/ | 
| 15 | 
            +
              spec.homepage      = 'https://github.com/kaminari/kaminari'
         | 
| 16 16 | 
             
              spec.license       = "MIT"
         | 
| 17 | 
            +
              spec.required_ruby_version = '>= 2.0.0'
         | 
| 17 18 |  | 
| 18 19 | 
             
              spec.files         = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
         | 
| 19 20 | 
             
              spec.require_paths = ["lib"]
         | 
| @@ -1,4 +1,5 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 2 3 | 
             
            Kaminari.configure do |config|
         | 
| 3 4 | 
             
              # config.default_per_page = 25
         | 
| 4 5 | 
             
              # config.max_per_page = nil
         | 
| @@ -8,5 +9,6 @@ Kaminari.configure do |config| | |
| 8 9 | 
             
              # config.right = 0
         | 
| 9 10 | 
             
              # config.page_method_name = :page
         | 
| 10 11 | 
             
              # config.param_name = :page
         | 
| 12 | 
            +
              # config.max_pages = nil
         | 
| 11 13 | 
             
              # config.params_on_first_page = false
         | 
| 12 14 | 
             
            end
         | 
| @@ -1,4 +1,5 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 2 3 | 
             
            module Kaminari
         | 
| 3 4 | 
             
              module Generators
         | 
| 4 5 | 
             
                # rails g kaminari:views THEME
         | 
| @@ -110,6 +111,8 @@ BANNER | |
| 110 111 | 
             
                end
         | 
| 111 112 |  | 
| 112 113 | 
             
                module GitHubApiHelper
         | 
| 114 | 
            +
                  require 'open-uri'
         | 
| 115 | 
            +
             | 
| 113 116 | 
             
                  def get_files_in_master
         | 
| 114 117 | 
             
                    master_tree_sha = open('https://api.github.com/repos/amatsuda/kaminari_themes/git/refs/heads/master') do |json|
         | 
| 115 118 | 
             
                      ActiveSupport::JSON.decode(json.read)['object']['sha']
         | 
    
        data/lib/kaminari/config.rb
    CHANGED
    
    | @@ -1,28 +1,40 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 | 
            -
            require 'active_support/configurable'
         | 
| 3 2 |  | 
| 4 3 | 
             
            module Kaminari
         | 
| 5 4 | 
             
              # Configures global settings for Kaminari
         | 
| 6 5 | 
             
              #   Kaminari.configure do |config|
         | 
| 7 6 | 
             
              #     config.default_per_page = 10
         | 
| 8 7 | 
             
              #   end
         | 
| 9 | 
            -
               | 
| 8 | 
            +
              class << self
         | 
| 9 | 
            +
                def configure
         | 
| 10 | 
            +
                  yield config
         | 
| 11 | 
            +
                end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                def config
         | 
| 14 | 
            +
                  @_config ||= Config.new
         | 
| 15 | 
            +
                end
         | 
| 16 | 
            +
              end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
              class Config
         | 
| 19 | 
            +
                attr_accessor :default_per_page, :max_per_page, :window, :outer_window, :left, :right, :page_method_name, :max_pages, :params_on_first_page
         | 
| 20 | 
            +
                attr_writer :param_name
         | 
| 10 21 |  | 
| 11 | 
            -
             | 
| 12 | 
            -
             | 
| 13 | 
            -
             | 
| 14 | 
            -
             | 
| 15 | 
            -
             | 
| 16 | 
            -
             | 
| 17 | 
            -
             | 
| 18 | 
            -
             | 
| 19 | 
            -
             | 
| 20 | 
            -
             | 
| 21 | 
            -
             | 
| 22 | 
            +
                def initialize
         | 
| 23 | 
            +
                  @default_per_page = 25
         | 
| 24 | 
            +
                  @max_per_page = nil
         | 
| 25 | 
            +
                  @window = 4
         | 
| 26 | 
            +
                  @outer_window = 0
         | 
| 27 | 
            +
                  @left = 0
         | 
| 28 | 
            +
                  @right = 0
         | 
| 29 | 
            +
                  @page_method_name = :page
         | 
| 30 | 
            +
                  @param_name = :page
         | 
| 31 | 
            +
                  @max_pages = nil
         | 
| 32 | 
            +
                  @params_on_first_page = false
         | 
| 33 | 
            +
                end
         | 
| 22 34 |  | 
| 23 35 | 
             
                # If param_name was given as a callable object, call it when returning
         | 
| 24 36 | 
             
                def param_name
         | 
| 25 | 
            -
                   | 
| 37 | 
            +
                  @param_name.respond_to?(:call) ? @param_name.call : @param_name
         | 
| 26 38 | 
             
                end
         | 
| 27 39 | 
             
              end
         | 
| 28 40 | 
             
            end
         | 
    
        data/lib/kaminari/core.rb
    CHANGED
    
    
    
        data/lib/kaminari/engine.rb
    CHANGED
    
    
    
        data/lib/kaminari/exceptions.rb
    CHANGED
    
    
| @@ -1,6 +1,98 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            module Kaminari
         | 
| 2 4 | 
             
              module Helpers
         | 
| 5 | 
            +
             | 
| 6 | 
            +
                # The Kaminari::Helpers::UrlHelper module provides useful methods for
         | 
| 7 | 
            +
                # generating a path or url to a particlar page. A class must implement the
         | 
| 8 | 
            +
                # following methods:
         | 
| 9 | 
            +
                #
         | 
| 10 | 
            +
                #   * <tt>url_for</tt>: A method that generates an actual path
         | 
| 11 | 
            +
                #   * <tt>params</tt>: A method that returns query string parameters
         | 
| 12 | 
            +
                #   * <tt>request</tt>: A method that returns a Rack::Request object
         | 
| 13 | 
            +
                #
         | 
| 14 | 
            +
                # A normal Rails controller implements all the methods, which makes it
         | 
| 15 | 
            +
                # trivial to use this module:
         | 
| 16 | 
            +
                #
         | 
| 17 | 
            +
                # ==== Examples
         | 
| 18 | 
            +
                #
         | 
| 19 | 
            +
                #   class UsersController < ApplicationController
         | 
| 20 | 
            +
                #     include Kaminari::Helpers::UrlHelper
         | 
| 21 | 
            +
                #
         | 
| 22 | 
            +
                #     def index
         | 
| 23 | 
            +
                #      @users = User.page(1)
         | 
| 24 | 
            +
                #
         | 
| 25 | 
            +
                #      path_to_next_page(@items)
         | 
| 26 | 
            +
                #      # => /items?page=2
         | 
| 27 | 
            +
                #     end
         | 
| 28 | 
            +
                #   end
         | 
| 29 | 
            +
                #
         | 
| 30 | 
            +
                module UrlHelper
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                  # A helper that calculates the url to the next page.
         | 
| 33 | 
            +
                  #
         | 
| 34 | 
            +
                  # ==== Examples
         | 
| 35 | 
            +
                  # Basic usage:
         | 
| 36 | 
            +
                  #
         | 
| 37 | 
            +
                  #   <%= next_page_url @items %>
         | 
| 38 | 
            +
                  #   #-> http://www.example.org/items?page=2
         | 
| 39 | 
            +
                  #
         | 
| 40 | 
            +
                  # It will return `nil` if there is no next page.
         | 
| 41 | 
            +
                  def next_page_url(scope, options = {})
         | 
| 42 | 
            +
                    "#{request.base_url}#{next_page_path(scope, options)}" if scope.next_page
         | 
| 43 | 
            +
                  end
         | 
| 44 | 
            +
                  alias path_to_next_url next_page_url
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                  # A helper that calculates the url to the previous page.
         | 
| 47 | 
            +
                  #
         | 
| 48 | 
            +
                  # ==== Examples
         | 
| 49 | 
            +
                  # Basic usage:
         | 
| 50 | 
            +
                  #
         | 
| 51 | 
            +
                  #   <%= prev_page_url @items %>
         | 
| 52 | 
            +
                  #   #-> http://www.example.org/items
         | 
| 53 | 
            +
                  #
         | 
| 54 | 
            +
                  # It will return `nil` if there is no previous page.
         | 
| 55 | 
            +
                  def prev_page_url(scope, options = {})
         | 
| 56 | 
            +
                    "#{request.base_url}#{prev_page_path(scope, options)}" if scope.prev_page
         | 
| 57 | 
            +
                  end
         | 
| 58 | 
            +
                  alias previous_page_url     prev_page_url
         | 
| 59 | 
            +
                  alias url_to_prev_page      prev_page_url
         | 
| 60 | 
            +
                  alias url_to_previous_page  prev_page_url
         | 
| 61 | 
            +
             | 
| 62 | 
            +
                  # A helper that calculates the path to the next page.
         | 
| 63 | 
            +
                  #
         | 
| 64 | 
            +
                  # ==== Examples
         | 
| 65 | 
            +
                  # Basic usage:
         | 
| 66 | 
            +
                  #
         | 
| 67 | 
            +
                  #   <%= path_to_next_page @items %>
         | 
| 68 | 
            +
                  #   #-> /items?page=2
         | 
| 69 | 
            +
                  #
         | 
| 70 | 
            +
                  # It will return `nil` if there is no next page.
         | 
| 71 | 
            +
                  def next_page_path(scope, options = {})
         | 
| 72 | 
            +
                    Kaminari::Helpers::NextPage.new(self, **options.reverse_merge(current_page: scope.current_page)).url if scope.next_page
         | 
| 73 | 
            +
                  end
         | 
| 74 | 
            +
                  alias path_to_next_page next_page_path
         | 
| 75 | 
            +
             | 
| 76 | 
            +
                  # A helper that calculates the path to the previous page.
         | 
| 77 | 
            +
                  #
         | 
| 78 | 
            +
                  # ==== Examples
         | 
| 79 | 
            +
                  # Basic usage:
         | 
| 80 | 
            +
                  #
         | 
| 81 | 
            +
                  #   <%= path_to_prev_page @items %>
         | 
| 82 | 
            +
                  #   #-> /items
         | 
| 83 | 
            +
                  #
         | 
| 84 | 
            +
                  # It will return `nil` if there is no previous page.
         | 
| 85 | 
            +
                  def prev_page_path(scope, options = {})
         | 
| 86 | 
            +
                    Kaminari::Helpers::PrevPage.new(self, **options.reverse_merge(current_page: scope.current_page)).url if scope.prev_page
         | 
| 87 | 
            +
                  end
         | 
| 88 | 
            +
                  alias previous_page_path     prev_page_path
         | 
| 89 | 
            +
                  alias path_to_previous_page  prev_page_path
         | 
| 90 | 
            +
                  alias path_to_prev_page      prev_page_path
         | 
| 91 | 
            +
                end
         | 
| 92 | 
            +
             | 
| 3 93 | 
             
                module HelperMethods
         | 
| 94 | 
            +
                  include UrlHelper
         | 
| 95 | 
            +
             | 
| 4 96 | 
             
                  # A helper that renders the pagination links.
         | 
| 5 97 | 
             
                  #
         | 
| 6 98 | 
             
                  #   <%= paginate @articles %>
         | 
| @@ -20,7 +112,7 @@ module Kaminari | |
| 20 112 | 
             
                    options[:total_pages] ||= scope.total_pages
         | 
| 21 113 | 
             
                    options.reverse_merge! current_page: scope.current_page, per_page: scope.limit_value, remote: false
         | 
| 22 114 |  | 
| 23 | 
            -
                    paginator = paginator_class.new (template || self), options
         | 
| 115 | 
            +
                    paginator = paginator_class.new (template || self), **options
         | 
| 24 116 | 
             
                    paginator.to_s
         | 
| 25 117 | 
             
                  end
         | 
| 26 118 |  | 
| @@ -47,8 +139,10 @@ module Kaminari | |
| 47 139 | 
             
                    options.except! :params, :param_name
         | 
| 48 140 | 
             
                    options[:rel] ||= 'prev'
         | 
| 49 141 |  | 
| 50 | 
            -
                     | 
| 51 | 
            -
                       | 
| 142 | 
            +
                    if prev_page
         | 
| 143 | 
            +
                      link_to name, prev_page, options
         | 
| 144 | 
            +
                    elsif block_given?
         | 
| 145 | 
            +
                      yield
         | 
| 52 146 | 
             
                    end
         | 
| 53 147 | 
             
                  end
         | 
| 54 148 | 
             
                  alias link_to_prev_page link_to_previous_page
         | 
| @@ -76,8 +170,10 @@ module Kaminari | |
| 76 170 | 
             
                    options.except! :params, :param_name
         | 
| 77 171 | 
             
                    options[:rel] ||= 'next'
         | 
| 78 172 |  | 
| 79 | 
            -
                     | 
| 80 | 
            -
                       | 
| 173 | 
            +
                    if next_page
         | 
| 174 | 
            +
                      link_to name, next_page, options
         | 
| 175 | 
            +
                    elsif block_given?
         | 
| 176 | 
            +
                      yield
         | 
| 81 177 | 
             
                    end
         | 
| 82 178 | 
             
                  end
         | 
| 83 179 |  | 
| @@ -99,7 +195,7 @@ module Kaminari | |
| 99 195 | 
             
                  #   #-> Displaying items 6 - 10 of 26 in total
         | 
| 100 196 | 
             
                  def page_entries_info(collection, entry_name: nil)
         | 
| 101 197 | 
             
                    entry_name = if entry_name
         | 
| 102 | 
            -
                                   entry_name.pluralize(collection.size)
         | 
| 198 | 
            +
                                   entry_name.pluralize(collection.size, I18n.locale)
         | 
| 103 199 | 
             
                                 else
         | 
| 104 200 | 
             
                                   collection.entry_name(count: collection.size).downcase
         | 
| 105 201 | 
             
                                 end
         | 
| @@ -107,7 +203,10 @@ module Kaminari | |
| 107 203 | 
             
                    if collection.total_pages < 2
         | 
| 108 204 | 
             
                      t('helpers.page_entries_info.one_page.display_entries', entry_name: entry_name, count: collection.total_count)
         | 
| 109 205 | 
             
                    else
         | 
| 110 | 
            -
                       | 
| 206 | 
            +
                      from = collection.offset_value + 1
         | 
| 207 | 
            +
                      to   = collection.offset_value + (collection.respond_to?(:records) ? collection.records : collection.to_a).size
         | 
| 208 | 
            +
             | 
| 209 | 
            +
                      t('helpers.page_entries_info.more_pages.display_entries', entry_name: entry_name, first: from, last: to, total: collection.total_count)
         | 
| 111 210 | 
             
                    end.html_safe
         | 
| 112 211 | 
             
                  end
         | 
| 113 212 |  | 
| @@ -134,36 +233,10 @@ module Kaminari | |
| 134 233 | 
             
                    prev_page = path_to_prev_page(scope, options)
         | 
| 135 234 |  | 
| 136 235 | 
             
                    output = String.new
         | 
| 137 | 
            -
                    output <<  | 
| 138 | 
            -
                    output <<  | 
| 236 | 
            +
                    output << %Q|<link rel="next" href="#{next_page}"></link>| if next_page
         | 
| 237 | 
            +
                    output << %Q|<link rel="prev" href="#{prev_page}"></link>| if prev_page
         | 
| 139 238 | 
             
                    output.html_safe
         | 
| 140 239 | 
             
                  end
         | 
| 141 | 
            -
             | 
| 142 | 
            -
                  # A helper that calculates the path to the next page.
         | 
| 143 | 
            -
                  #
         | 
| 144 | 
            -
                  # ==== Examples
         | 
| 145 | 
            -
                  # Basic usage:
         | 
| 146 | 
            -
                  #
         | 
| 147 | 
            -
                  #   <%= path_to_next_page @items %>
         | 
| 148 | 
            -
                  #   #-> /items?page=2
         | 
| 149 | 
            -
                  #
         | 
| 150 | 
            -
                  # It will return `nil` if there is no next page.
         | 
| 151 | 
            -
                  def path_to_next_page(scope, options = {})
         | 
| 152 | 
            -
                    Kaminari::Helpers::NextPage.new(self, options.reverse_merge(current_page: scope.current_page)).url if scope.next_page
         | 
| 153 | 
            -
                  end
         | 
| 154 | 
            -
             | 
| 155 | 
            -
                  # A helper that calculates the path to the previous page.
         | 
| 156 | 
            -
                  #
         | 
| 157 | 
            -
                  # ==== Examples
         | 
| 158 | 
            -
                  # Basic usage:
         | 
| 159 | 
            -
                  #
         | 
| 160 | 
            -
                  #   <%= path_to_prev_page @items %>
         | 
| 161 | 
            -
                  #   #-> /items
         | 
| 162 | 
            -
                  #
         | 
| 163 | 
            -
                  # It will return `nil` if there is no previous page.
         | 
| 164 | 
            -
                  def path_to_prev_page(scope, options = {})
         | 
| 165 | 
            -
                    Kaminari::Helpers::PrevPage.new(self, options.reverse_merge(current_page: scope.current_page)).url if scope.prev_page
         | 
| 166 | 
            -
                  end
         | 
| 167 240 | 
             
                end
         | 
| 168 241 | 
             
              end
         | 
| 169 242 | 
             
            end
         | 
| @@ -1,4 +1,5 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 2 3 | 
             
            require 'active_support/inflector'
         | 
| 3 4 | 
             
            require 'kaminari/helpers/tags'
         | 
| 4 5 |  | 
| @@ -6,11 +7,8 @@ module Kaminari | |
| 6 7 | 
             
              module Helpers
         | 
| 7 8 | 
             
                # The main container tag
         | 
| 8 9 | 
             
                class Paginator < Tag
         | 
| 9 | 
            -
                  def initialize(template, window: nil, outer_window:  | 
| 10 | 
            -
                    outer_window  | 
| 11 | 
            -
                    left ||= Kaminari.config.left
         | 
| 12 | 
            -
                    right ||= Kaminari.config.right
         | 
| 13 | 
            -
                    @window_options = {window: window || inner_window || Kaminari.config.window, left: left.zero? ? outer_window : left, right: right.zero? ? outer_window : right}
         | 
| 10 | 
            +
                  def initialize(template, window: nil, outer_window: Kaminari.config.outer_window, left: Kaminari.config.left, right: Kaminari.config.right, inner_window: Kaminari.config.window, **options) #:nodoc:
         | 
| 11 | 
            +
                    @window_options = {window: window || inner_window, left: left.zero? ? outer_window : left, right: right.zero? ? outer_window : right}
         | 
| 14 12 |  | 
| 15 13 | 
             
                    @template, @options, @theme, @views_prefix, @last = template, options, options[:theme], options[:views_prefix], nil
         | 
| 16 14 | 
             
                    @window_options.merge! @options
         | 
| @@ -29,7 +27,11 @@ module Kaminari | |
| 29 27 | 
             
                  # render given block as a view template
         | 
| 30 28 | 
             
                  def render(&block)
         | 
| 31 29 | 
             
                    instance_eval(&block) if @options[:total_pages] > 1
         | 
| 32 | 
            -
             | 
| 30 | 
            +
             | 
| 31 | 
            +
                    # This allows for showing fall-back HTML when there's only one page:
         | 
| 32 | 
            +
                    #
         | 
| 33 | 
            +
                    #   <%= paginate(@search_results) || "Showing all search results" %>
         | 
| 34 | 
            +
                    @output_buffer.presence
         | 
| 33 35 | 
             
                  end
         | 
| 34 36 |  | 
| 35 37 | 
             
                  # enumerate each page providing PageProxy object as the block parameter
         | 
| @@ -57,13 +59,13 @@ module Kaminari | |
| 57 59 | 
             
                  private :relevant_pages
         | 
| 58 60 |  | 
| 59 61 | 
             
                  def page_tag(page)
         | 
| 60 | 
            -
                    @last = Page.new @template,  | 
| 62 | 
            +
                    @last = Page.new @template, **@options.merge(page: page)
         | 
| 61 63 | 
             
                  end
         | 
| 62 64 |  | 
| 63 65 | 
             
                  %w[first_page prev_page next_page last_page gap].each do |tag|
         | 
| 64 66 | 
             
                    eval <<-DEF, nil, __FILE__, __LINE__ + 1
         | 
| 65 67 | 
             
                      def #{tag}_tag
         | 
| 66 | 
            -
                        @last = #{tag.classify}.new @template,  | 
| 68 | 
            +
                        @last = #{tag.classify}.new @template, **@options
         | 
| 67 69 | 
             
                      end
         | 
| 68 70 | 
             
                    DEF
         | 
| 69 71 | 
             
                  end
         | 
| @@ -1,7 +1,8 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 2 3 | 
             
            module Kaminari
         | 
| 3 4 | 
             
              module Helpers
         | 
| 4 | 
            -
                 | 
| 5 | 
            +
                PARAM_KEY_EXCEPT_LIST = [:authenticity_token, :commit, :utf8, :_method, :script_name, :original_script_name].freeze
         | 
| 5 6 |  | 
| 6 7 | 
             
                # A tag stands for an HTML tag inside the paginator.
         | 
| 7 8 | 
             
                # Basically, a tag has its own partial template file, so every tag can be
         | 
| @@ -23,7 +24,7 @@ module Kaminari | |
| 23 24 | 
             
                    # @params in Rails 5 no longer inherits from Hash
         | 
| 24 25 | 
             
                    @params = @params.to_unsafe_h if @params.respond_to?(:to_unsafe_h)
         | 
| 25 26 | 
             
                    @params = @params.with_indifferent_access
         | 
| 26 | 
            -
                    @params.except!(* | 
| 27 | 
            +
                    @params.except!(*PARAM_KEY_EXCEPT_LIST)
         | 
| 27 28 | 
             
                    @params.merge! params
         | 
| 28 29 | 
             
                  end
         | 
| 29 30 |  | 
| @@ -117,6 +118,19 @@ module Kaminari | |
| 117 118 | 
             
                # The "previous" page of the current page
         | 
| 118 119 | 
             
                class PrevPage < Tag
         | 
| 119 120 | 
             
                  include Link
         | 
| 121 | 
            +
             | 
| 122 | 
            +
                  # TODO: Remove this initializer before 1.3.0.
         | 
| 123 | 
            +
                  def initialize(template, params: {}, param_name: nil, theme: nil, views_prefix: nil, **options) #:nodoc:
         | 
| 124 | 
            +
                    # params in Rails 5 may not be a Hash either,
         | 
| 125 | 
            +
                    # so it must be converted to a Hash to be merged into @params
         | 
| 126 | 
            +
                    if params && params.respond_to?(:to_unsafe_h)
         | 
| 127 | 
            +
                      ActiveSupport::Deprecation.warn 'Explicitly passing params to helpers could be omitted.'
         | 
| 128 | 
            +
                      params = params.to_unsafe_h
         | 
| 129 | 
            +
                    end
         | 
| 130 | 
            +
             | 
| 131 | 
            +
                    super(template, params: params, param_name: param_name, theme: theme, views_prefix: views_prefix, **options)
         | 
| 132 | 
            +
                  end
         | 
| 133 | 
            +
             | 
| 120 134 | 
             
                  def page #:nodoc:
         | 
| 121 135 | 
             
                    @options[:current_page] - 1
         | 
| 122 136 | 
             
                  end
         | 
| @@ -125,6 +139,19 @@ module Kaminari | |
| 125 139 | 
             
                # The "next" page of the current page
         | 
| 126 140 | 
             
                class NextPage < Tag
         | 
| 127 141 | 
             
                  include Link
         | 
| 142 | 
            +
             | 
| 143 | 
            +
                  # TODO: Remove this initializer before 1.3.0.
         | 
| 144 | 
            +
                  def initialize(template, params: {}, param_name: nil, theme: nil, views_prefix: nil, **options) #:nodoc:
         | 
| 145 | 
            +
                    # params in Rails 5 may not be a Hash either,
         | 
| 146 | 
            +
                    # so it must be converted to a Hash to be merged into @params
         | 
| 147 | 
            +
                    if params && params.respond_to?(:to_unsafe_h)
         | 
| 148 | 
            +
                      ActiveSupport::Deprecation.warn 'Explicitly passing params to helpers could be omitted.'
         | 
| 149 | 
            +
                      params = params.to_unsafe_h
         | 
| 150 | 
            +
                    end
         | 
| 151 | 
            +
             | 
| 152 | 
            +
                    super(template, params: params, param_name: param_name, theme: theme, views_prefix: views_prefix, **options)
         | 
| 153 | 
            +
                  end
         | 
| 154 | 
            +
             | 
| 128 155 | 
             
                  def page #:nodoc:
         | 
| 129 156 | 
             
                    @options[:current_page] + 1
         | 
| 130 157 | 
             
                  end
         | 
| @@ -1,4 +1,5 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 2 3 | 
             
            require 'active_support/core_ext/module'
         | 
| 3 4 | 
             
            module Kaminari
         | 
| 4 5 | 
             
              # Kind of Array that can paginate
         | 
| @@ -34,7 +35,7 @@ module Kaminari | |
| 34 35 |  | 
| 35 36 | 
             
                # Used for page_entry_info
         | 
| 36 37 | 
             
                def entry_name(options = {})
         | 
| 37 | 
            -
                  I18n.t('helpers.page_entries_info.entry', options.reverse_merge(default: ENTRY.pluralize(options[:count])))
         | 
| 38 | 
            +
                  I18n.t('helpers.page_entries_info.entry', **options.reverse_merge(default: ENTRY.pluralize(options[:count])))
         | 
| 38 39 | 
             
                end
         | 
| 39 40 |  | 
| 40 41 | 
             
                # items at the specified "page"
         | 
| @@ -1,4 +1,7 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'active_support/concern'
         | 
| 4 | 
            +
             | 
| 2 5 | 
             
            module Kaminari
         | 
| 3 6 | 
             
              module ConfigurationMethods #:nodoc:
         | 
| 4 7 | 
             
                extend ActiveSupport::Concern
         | 
| @@ -49,7 +52,7 @@ module Kaminari | |
| 49 52 | 
             
                  end
         | 
| 50 53 |  | 
| 51 54 | 
             
                  def max_pages_per(val)
         | 
| 52 | 
            -
                    ActiveSupport::Deprecation.warn 'max_pages_per is deprecated. Use max_pages instead.' | 
| 55 | 
            +
                    ActiveSupport::Deprecation.warn 'max_pages_per is deprecated. Use max_pages instead.'
         | 
| 53 56 | 
             
                    max_pages val
         | 
| 54 57 | 
             
                  end
         | 
| 55 58 | 
             
                end
         | 
| @@ -1,18 +1,17 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 2 3 | 
             
            module Kaminari
         | 
| 3 4 | 
             
              module PageScopeMethods
         | 
| 4 5 | 
             
                # Specify the <tt>per_page</tt> value for the preceding <tt>page</tt> scope
         | 
| 5 6 | 
             
                #   Model.page(3).per(10)
         | 
| 6 7 | 
             
                def per(num, max_per_page: nil)
         | 
| 7 8 | 
             
                  max_per_page ||= ((defined?(@_max_per_page) && @_max_per_page) || self.max_per_page)
         | 
| 8 | 
            -
                  @_per = num
         | 
| 9 | 
            -
                  if num. | 
| 10 | 
            -
                    limit(max_per_page).offset(offset_value / limit_value * max_per_page)
         | 
| 11 | 
            -
                  elsif (n = num.to_i) < 0 || !(/^\d/ =~ num.to_s)
         | 
| 9 | 
            +
                  @_per = (num || default_per_page).to_i
         | 
| 10 | 
            +
                  if (n = num.to_i) < 0 || !(/^\d/ =~ num.to_s)
         | 
| 12 11 | 
             
                    self
         | 
| 13 12 | 
             
                  elsif n.zero?
         | 
| 14 13 | 
             
                    limit(n)
         | 
| 15 | 
            -
                  elsif max_per_page && max_per_page < n
         | 
| 14 | 
            +
                  elsif max_per_page && (max_per_page < n)
         | 
| 16 15 | 
             
                    limit(max_per_page).offset(offset_value / limit_value * max_per_page)
         | 
| 17 16 | 
             
                  else
         | 
| 18 17 | 
             
                    limit(n).offset(offset_value / limit_value * n)
         | 
| @@ -21,7 +20,8 @@ module Kaminari | |
| 21 20 |  | 
| 22 21 | 
             
                def max_paginates_per(new_max_per_page)
         | 
| 23 22 | 
             
                  @_max_per_page = new_max_per_page
         | 
| 24 | 
            -
             | 
| 23 | 
            +
             | 
| 24 | 
            +
                  per (defined?(@_per) && @_per) || default_per_page, max_per_page: new_max_per_page
         | 
| 25 25 | 
             
                end
         | 
| 26 26 |  | 
| 27 27 | 
             
                def padding(num)
         | 
| @@ -54,6 +54,15 @@ module Kaminari | |
| 54 54 | 
             
                  raise ZeroPerPageOperation, "Current page was incalculable. Perhaps you called .per(0)?"
         | 
| 55 55 | 
             
                end
         | 
| 56 56 |  | 
| 57 | 
            +
                # Current per-page number
         | 
| 58 | 
            +
                def current_per_page
         | 
| 59 | 
            +
                  ActiveSupport::Deprecation.warn '#current_per_page is deprecated and will be removed in the next major ' \
         | 
| 60 | 
            +
                                                  'version. Please use #limit_value instead.'
         | 
| 61 | 
            +
             | 
| 62 | 
            +
                  limit_value
         | 
| 63 | 
            +
                  # (defined?(@_per) && @_per) || default_per_page
         | 
| 64 | 
            +
                end
         | 
| 65 | 
            +
             | 
| 57 66 | 
             
                # Next page number in the collection
         | 
| 58 67 | 
             
                def next_page
         | 
| 59 68 | 
             
                  current_page + 1 unless last_page? || out_of_range?
         | 
    
        data/lib/kaminari/railtie.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: kaminari-core
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1. | 
| 4 | 
            +
              version: 1.2.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Akira Matsuda
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2020-05-27 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bundler
         | 
| @@ -46,6 +46,7 @@ executables: [] | |
| 46 46 | 
             
            extensions: []
         | 
| 47 47 | 
             
            extra_rdoc_files: []
         | 
| 48 48 | 
             
            files:
         | 
| 49 | 
            +
            - CHANGELOG.md
         | 
| 49 50 | 
             
            - MIT-LICENSE
         | 
| 50 51 | 
             
            - README.md
         | 
| 51 52 | 
             
            - app/views/kaminari/_first_page.html.erb
         | 
| @@ -86,7 +87,7 @@ files: | |
| 86 87 | 
             
            - lib/kaminari/models/configuration_methods.rb
         | 
| 87 88 | 
             
            - lib/kaminari/models/page_scope_methods.rb
         | 
| 88 89 | 
             
            - lib/kaminari/railtie.rb
         | 
| 89 | 
            -
            homepage: https://github.com/ | 
| 90 | 
            +
            homepage: https://github.com/kaminari/kaminari
         | 
| 90 91 | 
             
            licenses:
         | 
| 91 92 | 
             
            - MIT
         | 
| 92 93 | 
             
            metadata: {}
         | 
| @@ -98,15 +99,14 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 98 99 | 
             
              requirements:
         | 
| 99 100 | 
             
              - - ">="
         | 
| 100 101 | 
             
                - !ruby/object:Gem::Version
         | 
| 101 | 
            -
                  version:  | 
| 102 | 
            +
                  version: 2.0.0
         | 
| 102 103 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 103 104 | 
             
              requirements:
         | 
| 104 105 | 
             
              - - ">="
         | 
| 105 106 | 
             
                - !ruby/object:Gem::Version
         | 
| 106 107 | 
             
                  version: '0'
         | 
| 107 108 | 
             
            requirements: []
         | 
| 108 | 
            -
             | 
| 109 | 
            -
            rubygems_version: 2.6.8
         | 
| 109 | 
            +
            rubygems_version: 3.2.0.pre1
         | 
| 110 110 | 
             
            signing_key: 
         | 
| 111 111 | 
             
            specification_version: 4
         | 
| 112 112 | 
             
            summary: Kaminari's core pagination library
         |