class RuboCop::Cop::Style::StringLiteralsInInterpolation
Checks that quotes inside string, symbol, and regexp interpolations match the configured preference.
@example EnforcedStyle: single_quotes (default)
# bad string = "Tests #{success ? "PASS" : "FAIL"}" symbol = :"Tests #{success ? "PASS" : "FAIL"}" heredoc = <<~TEXT Tests #{success ? "PASS" : "FAIL"} TEXT regexp = /Tests #{success ? "PASS" : "FAIL"}/ # good string = "Tests #{success ? 'PASS' : 'FAIL'}" symbol = :"Tests #{success ? 'PASS' : 'FAIL'}" heredoc = <<~TEXT Tests #{success ? 'PASS' : 'FAIL'} TEXT regexp = /Tests #{success ? 'PASS' : 'FAIL'}/
@example EnforcedStyle: double_quotes
# bad string = "Tests #{success ? 'PASS' : 'FAIL'}" symbol = :"Tests #{success ? 'PASS' : 'FAIL'}" heredoc = <<~TEXT Tests #{success ? 'PASS' : 'FAIL'} TEXT regexp = /Tests #{success ? 'PASS' : 'FAIL'}/ # good string = "Tests #{success ? "PASS" : "FAIL"}" symbol = :"Tests #{success ? "PASS" : "FAIL"}" heredoc = <<~TEXT Tests #{success ? "PASS" : "FAIL"} TEXT regexp = /Tests #{success ? "PASS" : "FAIL"}/
Public Instance Methods
autocorrect(corrector, node)
click to toggle source
# File lib/rubocop/cop/style/string_literals_in_interpolation.rb, line 48 def autocorrect(corrector, node) StringLiteralCorrector.correct(corrector, node, style) end
on_regexp(node)
click to toggle source
Cop
classes that include the StringHelp
module usually ignore regexp nodes. Not
so for this cop, which is why we override the on_regexp
definition with an empty one.
# File lib/rubocop/cop/style/string_literals_in_interpolation.rb, line 55 def on_regexp(node); end
Private Instance Methods
message(_node)
click to toggle source
# File lib/rubocop/cop/style/string_literals_in_interpolation.rb, line 59 def message(_node) # single_quotes -> single-quoted kind = style.to_s.sub(/_(.*)s/, '-\1d') "Prefer #{kind} strings inside interpolations." end
offense?(node)
click to toggle source
# File lib/rubocop/cop/style/string_literals_in_interpolation.rb, line 66 def offense?(node) # If it's not a string within an interpolation, then it's not an # offense for this cop. return false unless inside_interpolation?(node) wrong_quotes?(node) end