Sha256: 83f6bedebd0e43a1ee61d62254b817c2817d8e520d957c39c78b1ee45b06ad55

Contents?: true

Size: 889 Bytes

Versions: 1

Compression:

Stored size: 889 Bytes

Contents

module Munson
  module Paginator
    class OffsetPaginator
      def initialize(options={})
        @max_limit = options[:max]
        @default_limit = options[:default]
      end

      def set(opts={})
        limit(opts[:limit]) if opts[:limit]
        offset(opts[:offset]) if opts[:offset]
      end

      def to_params
        {
          page: {
            limit: @limit || @default_limit || 10,
            offset: @offset
          }.compact
        }
      end

      private

      # Set limit of resources per page
      #
      # @param [Fixnum] num number of resources per page
      def limit(num)
        if @max_limit && num > @max_limit
          @limit = @max_limit
        else
          @limit = num
        end
      end

      # Set offset
      #
      # @param [Fixnum] num pages to offset
      def offset(num)
        @offset = num
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
munson-0.1.0 lib/munson/paginator/offset_paginator.rb