aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2014-07-16 18:13:22 -0700
committerAaron Patterson <aaron.patterson@gmail.com>2014-07-16 18:13:22 -0700
commit69799eda94c41461cf4a8157f457f0be4a012611 (patch)
tree102d3c2434ab15d68eab7403c70fc64711e5a307 /actionpack
parentf875331e3282228d2019392b1653fb8ea39fd711 (diff)
downloadrails-69799eda94c41461cf4a8157f457f0be4a012611.tar.gz
rails-69799eda94c41461cf4a8157f457f0be4a012611.tar.bz2
rails-69799eda94c41461cf4a8157f457f0be4a012611.zip
break out path building logic to methods
Diffstat (limited to 'actionpack')
-rw-r--r--actionpack/lib/action_dispatch/http/url.rb36
1 files changed, 22 insertions, 14 deletions
diff --git a/actionpack/lib/action_dispatch/http/url.rb b/actionpack/lib/action_dispatch/http/url.rb
index f5e71f5a3d..fc1d0e6663 100644
--- a/actionpack/lib/action_dispatch/http/url.rb
+++ b/actionpack/lib/action_dispatch/http/url.rb
@@ -34,19 +34,26 @@ module ActionDispatch
raise ArgumentError, 'Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true'
end
- path = options[:script_name].to_s.chomp("/")
- path << options[:path].to_s
+ result = options[:script_name].to_s.chomp("/")
+ result << options[:path].to_s
- path = add_trailing_slash(path) if options[:trailing_slash]
+ result = add_trailing_slash(result) if options[:trailing_slash]
- result = if options[:only_path]
- path
- else
- protocol = options[:protocol]
- port = options[:port]
- build_host_url(host, port, protocol, options).concat path
- end
+ result = add_params options, result
+ result = add_anchor options, result
+ if options[:only_path]
+ result
+ else
+ protocol = options[:protocol]
+ port = options[:port]
+ build_host_url(host, port, protocol, options, result)
+ end
+ end
+
+ private
+
+ def add_params(options, result)
if options.key? :params
param = options[:params]
params = param.is_a?(Hash) ? param : { params: param }
@@ -54,13 +61,14 @@ module ActionDispatch
params.reject! { |_,v| v.to_param.nil? }
result << "?#{params.to_query}" unless params.empty?
end
+ result
+ end
+ def add_anchor(options, result)
result << "##{Journey::Router::Utils.escape_fragment(options[:anchor].to_param.to_s)}" if options[:anchor]
result
end
- private
-
def extract_domain_from(host, tld_length)
host.split('.').last(1 + tld_length).join('.')
end
@@ -82,7 +90,7 @@ module ActionDispatch
path
end
- def build_host_url(host, port, protocol, options)
+ def build_host_url(host, port, protocol, options, path)
if match = host.match(HOST_REGEXP)
protocol ||= match[1] unless protocol == false
host = match[2]
@@ -103,7 +111,7 @@ module ActionDispatch
result << ":#{normalized_port}"
}
- result
+ result.concat path
end
def named_host?(host)