Class: RuboCop::Cop::Style::QuotedSymbols

Inherits:
Base
  • Object
show all
Extended by:
AutoCorrector
Includes:
ConfigurableEnforcedStyle, RuboCop::Cop::StringLiteralsHelp, RuboCop::Cop::SymbolHelp
Defined in:
lib/rubocop/cop/style/quoted_symbols.rb

Overview

Checks if the quotes used for quoted symbols match the configured defaults. By default uses the same configuration as ‘Style/StringLiterals`; if that cop is not enabled, the default `EnforcedStyle` is `single_quotes`.

String interpolation is always kept in double quotes.

Note: ‘Lint/SymbolConversion` can be used in parallel to ensure that symbols are not quoted that don’t need to be. This cop is for configuring the quoting style to use for symbols that require quotes.

Examples:

EnforcedStyle: same_as_string_literals (default) / single_quotes

# bad
:"abc-def"

# good
:'abc-def'
:"#{str}"
:"a\'b"

EnforcedStyle: double_quotes

# bad
:'abc-def'

# good
:"abc-def"
:"#{str}"
:"a\'b"

Constant Summary collapse

MSG_SINGLE =
"Prefer single-quoted symbols when you don't need string interpolation " \
'or special symbols.'
MSG_DOUBLE =
'Prefer double-quoted symbols unless you need single quotes to ' \
'avoid extra backslashes for escaping.'

Constants inherited from Base

Base::RESTRICT_ON_SEND

Instance Attribute Summary

Attributes inherited from Base

#config, #processed_source

Instance Method Summary collapse

Methods included from AutoCorrector

support_autocorrect?

Methods included from RuboCop::Cop::SymbolHelp

#hash_key?

Methods included from ConfigurableEnforcedStyle

#alternative_styles, #ambiguous_style_detected, #correct_style_detected, #detected_style, #detected_style=, #no_acceptable_style!, #no_acceptable_style?, #opposite_style_detected, #style_configured?, #style_detected, #style_parameter_name, #supported_styles, #unexpected_style_detected

Methods inherited from Base

#active_support_extensions_enabled?, #add_global_offense, #add_offense, #always_autocorrect?, autocorrect_incompatible_with, badge, #begin_investigation, callbacks_needed, #callbacks_needed, #config_to_allow_offenses, #config_to_allow_offenses=, #contextual_autocorrect?, #cop_config, cop_name, #cop_name, department, documentation_url, exclude_from_registry, #excluded_file?, #external_dependency_checksum, inherited, #initialize, #inspect, joining_forces, lint?, match?, #message, #offenses, #on_investigation_end, #on_new_investigation, #on_other_file, #parse, #parser_engine, #ready, #relevant_file?, requires_gem, support_autocorrect?, support_multiple_source?, #target_rails_version, #target_ruby_version

Methods included from ExcludeLimit

#exclude_limit

Methods included from AutocorrectLogic

#autocorrect?, #autocorrect_enabled?, #autocorrect_requested?, #autocorrect_with_disable_uncorrectable?, #correctable?, #disable_uncorrectable?, #safe_autocorrect?

Methods included from IgnoredNode

#ignore_node, #ignored_node?, #part_of_ignored_node?

Methods included from Util

silence_warnings

Constructor Details

This class inherits a constructor from RuboCop::Cop::Base

Instance Method Details

#on_sym(node) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/rubocop/cop/style/quoted_symbols.rb', line 44

def on_sym(node)
  return unless quoted?(node)

  message = style == :single_quotes ? MSG_SINGLE : MSG_DOUBLE

  if wrong_quotes?(node) || invalid_double_quotes?(node.source)
    add_offense(node, message: message) do |corrector|
      opposite_style_detected
      autocorrect(corrector, node)
    end
  else
    correct_style_detected
  end
end