URL normalization :- URI normalization - Wikipedia - I
just read this source.
I found a method uri#normalization :
But not able to figure out how this method works:
require ‘uri’
uri = URI.parse(“http://www.example.com/../a/b/../c/./d.html”)
p uri.normalize.to_s
#=> “http://www.example.com/../a/b/../c/./d.html”
But I expect " http://www.example.com/a/c/d.html"
Nothing any thing change encountered. So any one out there have any good
example to understand this method?
Thanks
On Saturday, 25 May 2013 07:58:06 UTC-4, Ruby-Forum.com User wrote:
require ‘uri’
uri = URI.parse(“http://www.example.com/../a/b/../c/./d.html”)
p uri.normalize.to_s
#=> “http://www.example.com/../a/b/../c/./d.html”
But I expect " http://www.example.com/a/c/d.html"
Nothing any thing change encountered. So any one out there have any good
example to understand this method?
Quickest way is to read the source (available from the ‘click to toggle
source’ link you get when hovering over a method):
def normalize!
if path && path == ‘’
set_path(‘/’)
end
if scheme && scheme != scheme.downcase
set_scheme(self.scheme.downcase)
end
if host && host != host.downcase
set_host(self.host.downcase)
end
end
looks like the idea is to handle the following oddly-formatted sorts of
URIs:
http://example.com (no trailing /)
HttP://example.com/ (protocol capitalized oddly)
http://EXAMPLE.com/ (host capitalized)
If your goal is to normalize out those …s in your path,
File.expand_path
may be more what you’re looking for:
File.expand_path(‘/no/such/path/…/srsly’) # => returns
“/no/such/srsly”
But really, including … in a URI isn’t entirely valid - not all
structures
exposed via URI are filesystems, after all…
–Matt J.
Matt J. wrote in post #1110185:
Quickest way is to read the source (available from the ‘click to toggle
source’ link you get when hovering over a method):
def normalize!
if path && path == ‘’
set_path(‘/’)
end
if scheme && scheme != scheme.downcase
set_scheme(self.scheme.downcase)
end
if host && host != host.downcase
set_host(self.host.downcase)
end
end
looks like the idea is to handle the following oddly-formatted sorts of
URIs:
http://example.com (no trailing /)
HttP://example.com/ (protocol capitalized oddly)
http://EXAMPLE.com/ (host capitalized)
Thanks @matt! I am happy to see this.