Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lancejpollard/521267 to your computer and use it in GitHub Desktop.
Save lancejpollard/521267 to your computer and use it in GitHub Desktop.
# return 4 urls, with and without trailing slash, with and without www
# useful for matching urls passed as params into some function,
# "does this url exist?"... need to make sure you check permutations
def url_permutations(url)
url, params = url.split("?")
# without_trailing_slash, with www
a = url.gsub(/\/$/, "").gsub(/http(s)?:\/\/([^\/]+)/) do |match|
protocol = "http#{$1.to_s}"
domain = $2
domain = "www.#{domain}" if domain.split(".").length < 3 # www.google.com == 3, google.com == 2
"#{protocol}://#{domain}"
end
# with_trailing_slash, with www
b = "#{a}/"
# without_trailing_slash, without www
c = a.gsub(/http(s)?:\/\/www\./, "http#{$1.to_s}://")
# with_trailing_slash, without www
d = "#{c}/"
[a, b, c, d].map { |url| "#{url}?#{params}"}
end
puts url_permutations("http://google.com/search?q=http://google.com").inspect
#=> [
"http://www.google.com/search?q=http://google.com",
"http://www.google.com/search/?q=http://google.com",
"http://google.com/search?q=http://google.com",
"http://google.com/search/?q=http://google.com"
]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment