Sha256: 7b3402dae2d8c6e38c64030425c88074be42ec6da2c07575bee644e37fa3b283

Contents?: true

Size: 1.33 KB

Versions: 1

Compression:

Stored size: 1.33 KB

Contents

# encoding: utf-8
Rango.import("contrib/pagination/page")

module Rango
  module Pagination
    class Strategy
      # @since 0.0.2
      def self.activate
        Page.register_route_hook(self.new.method(:hook))
        #Page.register_route_hook do |request, page|
        #  self.new.hook(request, page)
        #end
      end
    end

    module Strategies
      class Default < Rango::Pagination::Strategy
        # @since 0.0.2
        def hook(request, from, page)
          return "?page=#{page}"
        end
      end

      class PageNumberOnTheEndOfRoute < Rango::Pagination::Strategy
        # @since 0.0.2
        def hook(request, from, page)
          # /products/1
          return File.join(File.split(request.url)[0..-2].push(page.to_s))
        end
      end

      class PageNumberOnTheEndOfRouteExcludeFirstPage < Rango::Pagination::Strategy
        # Here is terrible important the from parameter
        # @since 0.0.2
        def hook(request, from, page)
          if from.number.eql?(1)
            # /products
            File.join(request.url, page.to_s)
          elsif page.eql?(1) && ! from.number.eql?(1)
            File.join((request.url)[0..-2]).chomp("/")
          else
            # /products/2
            return PageNumberOnTheEndOfRoute.new.hook(request, from, page)
          end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rango-0.0.4 lib/rango/contrib/pagination/strategies.rb