def url_for url_fragment, mode=:path_only
case mode
when :path_only
base = request.script_name
when :full
scheme = request.scheme
if (scheme == 'http' && request.port == 80 ||
scheme == 'https' && request.port == 443)
port = ""
else
port = ":#{request.port}"
end
request_host = HOSTNAME ? HOSTNAME : request.host
base = "#{scheme}://#{request_host}#{port}#{request.script_name}"
else
raise TypeError, "Unknown url_for mode #{mode}"
end
url_escape = URI.escape(url_fragment)
if url_escape.match(/^#{base}/) or url_escape.match(/^http/)
url_escape
else
"#{base}#{url_escape}"
end
end