class RuboCop::Cop::Lint::UriEscapeUnescape
This cop identifies places where `URI.escape` can be replaced by `CGI.escape`, `URI.encode_www_form`, or `URI.encode_www_form_component` depending on your specific use case. Also this cop identifies places where `URI.unescape` can be replaced by `CGI.unescape`, `URI.decode_www_form`, or `URI.decode_www_form_component` depending on your specific use case.
@example
# bad URI.escape('http://example.com') URI.encode('http://example.com') # good CGI.escape('http://example.com') URI.encode_www_form([['example', 'param'], ['lang', 'en']]) URI.encode_www_form(page: 10, locale: 'en') URI.encode_www_form_component('http://example.com') # bad URI.unescape(enc_uri) URI.decode(enc_uri) # good CGI.unescape(enc_uri) URI.decode_www_form(enc_uri) URI.decode_www_form_component(enc_uri)
Constants
- ALTERNATE_METHODS_OF_URI_ESCAPE
- ALTERNATE_METHODS_OF_URI_UNESCAPE
- MSG
Public Instance Methods
on_send(node)
click to toggle source
# File lib/rubocop/cop/lint/uri_escape_unescape.rb, line 54 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