module URI

Public Instance Methods

defang() click to toggle source
# File lib/defang.rb, line 6
def defang
  # save originals
  original_scheme = @scheme
  original_host = @host

  # replace so to_s uses them
  @scheme = @scheme.gsub('t', 'X') if @scheme
  @host = @host.reverse.sub('.', '[.]'.reverse).reverse if @host

  defanged_uri = to_s

  # final check to ensure safety
  if defanged_uri.include?('.') && !defanged_uri.include?('[.]')
    defanged_uri.reverse!.sub!('.', '[.]'.reverse).reverse!
  end

  # reset originals
  @scheme = original_scheme
  @host = original_host

  defanged_uri
end