class RuboCop::Cop::Lint::UriRegexp
URI::DEFAULT_PARSER.make_regexp(‘example.com’)
# good
URI.regexp(‘example.com’)
# bad
@example
not be used. Instead, use ‘URI::DEFAULT_PARSER.make_regexp`.
This cop identifies places where `URI.regexp` is obsolete and should
def autocorrect(node)
def autocorrect(node) lambda do |corrector| if (captured_values = uri_regexp_with_argument?(node)) else captured_values = uri_regexp_without_argument?(node) end double_colon, arg = captured_values top_level = double_colon ? '::' : '' argument = arg ? "('#{arg}')" : '' corrector.replace( node.loc.expression, "#{top_level}URI::DEFAULT_PARSER.make_regexp#{argument}" ) end end
def on_send(node)
def on_send(node) uri_regexp_with_argument?(node) do |double_colon, arg| register_offense( node, top_level: double_colon ? '::' : '', arg: "('#{arg}')" ) end uri_regexp_without_argument?(node) do |double_colon| register_offense(node, top_level: double_colon ? '::' : '') end end
def register_offense(node, top_level: '', arg: '')
def register_offense(node, top_level: '', arg: '') format = format(MSG, top_level: top_level, arg: arg) add_offense(node, location: :selector, message: format) end