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