Return to Snippet

Revision: 30393
at August 13, 2010 02:51 by viatropos


Initial Code
# 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"
]

Initial URL
regular-expression-to-create-url-permutations-in-ruby

Initial Description


Initial Title
Regular Expression to Create URL Permutations in Ruby

Initial Tags
url, ruby

Initial Language
Ruby