提交 69799eda 编写于 作者: A Aaron Patterson

break out path building logic to methods

上级 f875331e
......@@ -34,19 +34,26 @@ def url_for(options)
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 @@ def url_for(options)
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 @@ def add_trailing_slash(path)
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 @@ def build_host_url(host, port, protocol, options)
result << ":#{normalized_port}"
}
result
result.concat path
end
def named_host?(host)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册