Class: RuboCop::Cop::Performance::StartWith
Relationships & Source Files | |
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
self,
AutoCorrector,
Base
|
|
Instance Chain:
self,
::RuboCop::Cop::RegexpMetacharacter ,
Base
|
|
Inherits: |
Base
|
Defined in: | lib/rubocop/cop/performance/start_with.rb |
Overview
Identifies unnecessary use of a regex where String#start_with?
would suffice.
This cop has SafeMultiline
configuration option that true
by default because
^start
is unsafe as it will behave incompatible with start_with?
for receiver is multiline string.
Constant Summary
-
MSG =
# File 'lib/rubocop/cop/performance/start_with.rb', line 53'Use `String#start_with?` instead of a regex match anchored to the beginning of the string.'
-
RESTRICT_ON_SEND =
# File 'lib/rubocop/cop/performance/start_with.rb', line 54%i[match =~ match?].freeze
Instance Attribute Summary
Instance Method Summary
-
#on_csend(node)
Alias for #on_send.
-
#on_match_with_lvasgn(node)
Alias for #on_send.
- #on_send(node) (also: #on_csend, #on_match_with_lvasgn)
::RuboCop::Cop::RegexpMetacharacter
- Included
Instance Method Details
#on_csend(node)
Alias for #on_send.
# File 'lib/rubocop/cop/performance/start_with.rb', line 77
alias on_csend on_send
#on_match_with_lvasgn(node)
Alias for #on_send.
# File 'lib/rubocop/cop/performance/start_with.rb', line 78
alias on_match_with_lvasgn on_send
#on_send(node) Also known as: #on_csend, #on_match_with_lvasgn
[ GitHub ]# File 'lib/rubocop/cop/performance/start_with.rb', line 63
def on_send(node) return unless (receiver, regex_str = redundant_regex?(node)) add_offense(node) do |corrector| receiver, regex_str = regex_str, receiver if receiver.is_a?(String) regex_str = (regex_str) regex_str = interpret_string_escapes(regex_str) dot = node.loc.dot ? node.loc.dot.source : '.' new_source = "#{receiver.source}#{dot}start_with?(#{to_string_literal(regex_str)})" corrector.replace(node, new_source) end end