class RuboCop::Cop::Lint::UriRegexp

This cop identifies places where `URI.regexp` is obsolete and should not be used. Instead, use `URI::DEFAULT_PARSER.make_regexp`.

@example

# bad
URI.regexp('http://example.com')

# good
URI::DEFAULT_PARSER.make_regexp('http://example.com')

Constants

MSG

Public Instance Methods

autocorrect(node) click to toggle source
# File lib/rubocop/cop/lint/uri_regexp.rb, line 43
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
on_send(node) click to toggle source
# File lib/rubocop/cop/lint/uri_regexp.rb, line 31
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

Private Instance Methods

register_offense(node, top_level: '', arg: '') click to toggle source
# File lib/rubocop/cop/lint/uri_regexp.rb, line 64
def register_offense(node, top_level: '', arg: '')
  format = format(MSG, top_level: top_level, arg: arg)

  add_offense(node, location: :selector, message: format)
end