Sha256: 492953187868b468fc7b3da2ef4063ae97f7407abb8bbf60dedf177b4117eb63

Contents?: true

Size: 831 Bytes

Versions: 3

Compression:

Stored size: 831 Bytes

Contents

module Responders
  module PaginateResponder
    def to_format
      paginate! if get?

      super
    end

    private

    def paginate!
      adapter = ::Responders::PaginateResponder.init(self)
      @resource = adapter.paginate! if adapter
    end

    class << self
      def register(adapter)
        adapters << adapter
      end

      def adapters
        @adpaters ||= ::Set.new
      end

      def init(responder)
        if responder.controller.respond_to?(:pagination_adapter_init)
          return responder.controller.pagination_adapter_init(responder)
        end

        adapter = find(responder)
        adapter.new(responder) if adapter
      end

      def find(responder)
        adapters.find do |adapter|
          adapter.suitable?(responder.resource, responder)
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
paginate-responder-1.8.0 lib/responders/paginate_responder.rb
paginate-responder-1.7.0 lib/responders/paginate_responder.rb
paginate-responder-1.6.0 lib/responders/paginate_responder.rb