No need to create a separate lambda for each call.

This commit is contained in:
thedarkone
2010-09-23 18:08:43 +02:00
parent 7b2d51817d
commit 86bcccf8df

View File

@@ -334,6 +334,19 @@ module ActionDispatch
end
class Generator #:nodoc:
PARAMETERIZE = {
:parameterize => lambda do |name, value|
if name == :controller
value
elsif value.is_a?(Array)
value.map { |v| Rack::Mount::Utils.escape_uri(v.to_param) }.join('/')
else
return nil unless param = value.to_param
param.split('/').map { |v| Rack::Mount::Utils.escape_uri(v) }.join("/")
end
end
}
attr_reader :options, :recall, :set, :named_route
def initialize(options, recall, set, extras = false)
@@ -422,7 +435,7 @@ module ActionDispatch
end
def generate
path, params = @set.set.generate(:path_info, named_route, options, recall, opts)
path, params = @set.set.generate(:path_info, named_route, options, recall, PARAMETERIZE)
raise_routing_error unless path
@@ -436,20 +449,6 @@ module ActionDispatch
raise_routing_error
end
def opts
parameterize = lambda do |name, value|
if name == :controller
value
elsif value.is_a?(Array)
value.map { |v| Rack::Mount::Utils.escape_uri(v.to_param) }.join('/')
else
return nil unless param = value.to_param
param.split('/').map { |v| Rack::Mount::Utils.escape_uri(v) }.join("/")
end
end
{:parameterize => parameterize}
end
def raise_routing_error
raise ActionController::RoutingError.new("No route matches #{options.inspect}")
end