Sha256: b4732940dd16b57a32a1cbd63b9a473847a802ef7f4f8e00f8ef98090b6472d1

Contents?: true

Size: 1.92 KB

Versions: 45

Compression:

Stored size: 1.92 KB

Contents

# ~*~ encoding: utf-8 ~*~
module Gollum
  module Pagination
    def self.included(klass)
      klass.extend ClassMethods
      class << klass
        # Default Integer max count of items to return in git commands.
        attr_accessor :per_page
      end
      klass.per_page = 30
    end

    module ClassMethods
      # Turns a page number into an offset number for the git skip option.
      #
      # page - Integer page number.
      #
      # Returns an Integer.
      def page_to_skip(page)
        ([1, page.to_i].max - 1) * per_page
      end

      # Fills in git-specific options for the log command using simple
      # pagination options.
      #
      # options - Hash of options:
      #           page - Optional Integer page number (default: 1)
      #           per_page - Optional Integer max count of items to return.
      #                      Defaults to #per_class class method.
      #
      # Returns Hash with :max_count and :skip keys.
      def log_pagination_options(options = {})
        skip                = page_to_skip(options.delete(:page))
        options[:max_count] = [options.delete(:per_page).to_i, per_page].max
        options[:skip]      = skip if skip > 0
        options
      end
    end

    # Turns a page number into an offset number for the git skip option.
    #
    # page - Integer page number.
    #
    # Returns an Integer.
    def page_to_skip(page)
      self.class.page_to_skip(page)
    end

    # Fills in git-specific options for the log command using simple
    # pagination options.
    #
    # options - Hash of options:
    #           page - Optional Integer page number (default: 1)
    #           per_page - Optional Integer max count of items to return.
    #                      Defaults to #per_class class method.
    #
    # Returns Hash with :max_count and :skip keys.
    def log_pagination_options(options = {})
      self.class.log_pagination_options(options)
    end
  end
end

Version data entries

45 entries across 45 versions & 2 rubygems

Version Path
gitlab-gollum-lib-4.2.7.10.gitlab.2 lib/gollum-lib/pagination.rb
gitlab-gollum-lib-4.2.7.10.gitlab.1 lib/gollum-lib/pagination.rb
gitlab-gollum-lib-4.2.7.9 lib/gollum-lib/pagination.rb
gitlab-gollum-lib-4.2.7.8 lib/gollum-lib/pagination.rb
gitlab-gollum-lib-4.2.7.7 lib/gollum-lib/pagination.rb
gitlab-gollum-lib-4.2.7.6 lib/gollum-lib/pagination.rb
gollum-lib-4.2.10-java lib/gollum-lib/pagination.rb
gollum-lib-4.2.10 lib/gollum-lib/pagination.rb
gollum-lib-4.2.9-java lib/gollum-lib/pagination.rb
gollum-lib-4.2.9 lib/gollum-lib/pagination.rb
gollum-lib-5.0.a.4-java lib/gollum-lib/pagination.rb
gollum-lib-5.0.a.4 lib/gollum-lib/pagination.rb
gitlab-gollum-lib-4.2.7.5 lib/gollum-lib/pagination.rb
gitlab-gollum-lib-4.2.7.4 lib/gollum-lib/pagination.rb
gitlab-gollum-lib-4.2.7.3 lib/gollum-lib/pagination.rb
gitlab-gollum-lib-4.2.7.2 lib/gollum-lib/pagination.rb
gitlab-gollum-lib-4.2.7.1 lib/gollum-lib/pagination.rb
gitlab-gollum-lib-4.2.7 lib/gollum-lib/pagination.rb
gollum-lib-4.2.7-java lib/gollum-lib/pagination.rb
gollum-lib-4.2.7 lib/gollum-lib/pagination.rb