Sha256: 4e61bf4fe76b16669311a5d7a650452d9b1b7b11f9a723a4555bb5224e340a79

Contents?: true

Size: 786 Bytes

Versions: 1

Compression:

Stored size: 786 Bytes

Contents

require 'routing_filter/base'

module RoutingFilter
  class Pagination < Base
    def around_recognize(path, env, &block)
      page = extract_page!(path)
      returning yield(path, env) do |params|
        params[:page] = page.to_i if page
      end
    end

    def around_generate(*args, &block)
      page = args.extract_options!.delete(:page)
      returning yield do |result|
        if page && page != 1
          url = result.is_a?(Array) ? result.first : result
          append_page!(url, page)
        end
      end
    end

    protected

      def extract_page!(path)
        path.sub! %r(/pages/([\d]+)/?$), ''
        $1
      end

      def append_page!(url, page)
        url.sub!(/($|\?)/) { "/pages/#{page}#{$1}" }
      end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
strikeroff-routing-filter-0.1.0 lib/routing_filter/pagination.rb