class RuboCop::Cop::Lint::UriEscapeUnescape

URI.decode_www_form_component(enc_uri)
URI.decode_www_form(enc_uri)
CGI.unescape(enc_uri)
# good
URI.decode(enc_uri)
URI.unescape(enc_uri)
# bad
URI.encode_www_form_component(‘example.com’)
URI.encode_www_form(page: 10, locale: ‘en’)
URI.encode_www_form([[‘example’, ‘param’], [‘lang’, ‘en’]])
CGI.escape(‘example.com’)
# good
URI.encode(‘example.com’)
URI.escape(‘example.com’)
# bad
@example
or ‘URI.decode_www_form_component` depending on your specific use case.
`CGI.unescape`, `URI.decode_www_form`,
Also this cop identifies places where `URI.unescape` can be replaced by
depending on your specific use case.
`CGI.escape`, `URI.encode_www_form`, or `URI.encode_www_form_component`
Identifies places where `URI.escape` can be replaced by

def on_send(node)

def on_send(node)
  uri_escape_unescape?(node) do |top_level, obsolete_method|
    replacements = if %i[escape encode].include?(obsolete_method)
                     ALTERNATE_METHODS_OF_URI_ESCAPE
                   else
                     ALTERNATE_METHODS_OF_URI_UNESCAPE
                   end
    double_colon = top_level ? '::' : ''
    message = format(
      MSG, uri_method: "#{double_colon}URI.#{obsolete_method}",
           replacements: "`#{replacements[0]}`, `#{replacements[1]}` " \
                         "or `#{replacements[2]}`"
    )
    add_offense(node, message: message)
  end
end