Sha256: 67de9a5a2a2e376abafdd417754725eee9e6350184dabe30ce589432f9d45701

Contents?: true

Size: 1.19 KB

Versions: 10

Compression:

Stored size: 1.19 KB

Contents

# The Uuid filter extracts an UUID segment from the beginning of the recognized
# path and exposes the page parameter as params[:page]. When a path is generated
# the filter adds the segments to the path accordingly if the page parameter is
# passed to the url helper.
#
#   incoming url: /d00fbbd1-82b6-4c1a-a57d-098d529d6854/product/1
#   filtered url: /product/1
#   params:       params[:uuid] = 'd00fbbd1-82b6-4c1a-a57d-098d529d6854'
#
# You can install the filter like this:
#
#   # in config/routes.rb
#   Rails.application.routes.draw do
#     filter :uuid
#   end
#
# To make your named_route helpers or url_for add the uuid segment you can use:
#
#   product_path(:uuid => uuid)
#   url_for(product, :uuid => uuid)

module RoutingFilter
  class Uuid < Filter
    UUID_SEGMENT = %r(^/?([a-z\d]{8}\-[a-z\d]{4}\-[a-z\d]{4}\-[a-z\d]{4}\-[a-z\d]{12})(/)?)
    
    def around_recognize(path, env, &block)
      uuid = extract_segment!(UUID_SEGMENT, path)
      yield.tap do |params|
        params[:uuid] = uuid if uuid
      end
    end

    def around_generate(params, &block)
      uuid = params.delete(:uuid)
      yield.tap do |result|
        prepend_segment!(result, uuid) if uuid
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 4 rubygems

Version Path
routing-filter-0.2.4 lib/routing_filter/filters/uuid.rb
sayso-routing-filter-0.2.2.001 lib/routing_filter/filters/uuid.rb
vigetlabs-routing-filter-0.2.4 lib/routing_filter/filters/uuid.rb
aratak-routing-filter-0.2.4 lib/routing_filter/filters/uuid.rb
routing-filter-0.2.3 lib/routing_filter/filters/uuid.rb
routing-filter-0.2.2 lib/routing_filter/filters/uuid.rb
routing-filter-0.2.0 lib/routing_filter/filters/uuid.rb
routing-filter-0.1.7 lib/routing_filter/filters/uuid.rb
routing-filter-0.1.6 lib/routing_filter/filters/uuid.rb
routing-filter-0.1.5 lib/routing_filter/filters/uuid.rb