def url(env, *args)
named_route, params = nil, {}
case args.length
when 2
named_route, params = args[0], args[1].dup
when 1
if args[0].is_a?(Hash)
params = args[0].dup
else
named_route = args[0]
end
else
raise ArgumentError
end
only_path = params.delete(:only_path)
recall = env[@parameters_key] || {}
unless result = generate(:all, named_route, params, recall,
:parameterize => lambda { |name, param| Utils.escape_uri(param) })
return
end
parts, params = result
return unless parts
params.each do |k, v|
if v
params[k] = v
else
params.delete(k)
end
end
req = stubbed_request_class.new(env)
req._stubbed_values = parts.merge(:query_string => Utils.build_nested_query(params))
only_path ? req.fullpath : req.url
end