Class: RuboCop::Cop::Lint::TripleQuotes
- Extended by:
- AutoCorrector
- Defined in:
- lib/rubocop/cop/lint/triple_quotes.rb
Overview
Checks for “triple quotes” (strings delimited by any odd number of quotes greater than 1).
Ruby allows multiple strings to be implicitly concatenated by just being adjacent in a statement (ie. ‘“foo”“bar” == “foobar”`). This sometimes gives the impression that there is something special about triple quotes, but in fact it is just extra unnecessary quotes and produces the same string. Each pair of quotes produces an additional concatenated empty string, so the result is still only the “actual” string within the delimiters.
NOTE: Although this cop is called triple quotes, the same behavior is present for strings delimited by 5, 7, etc. quotation marks.
Constant Summary collapse
- MSG =
'Delimiting a string with multiple quotes has no effect, use a single quote instead.'
Constants inherited from Base
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
Methods included from AutoCorrector
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, #string_literals_frozen_by_default?, support_autocorrect?, support_multiple_source?, #target_rails_version, #target_ruby_version
Methods included from ExcludeLimit
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
Constructor Details
This class inherits a constructor from RuboCop::Cop::Base
Instance Method Details
#on_dstr(node) ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/rubocop/cop/lint/triple_quotes.rb', line 47 def on_dstr(node) return if (empty_str_nodes = empty_str_nodes(node)).none? opening_quotes = node.source.scan(/(?<=\A)['"]*/)[0] return if opening_quotes.size < 3 # If the node is composed of only empty `str` nodes, keep one empty_str_nodes.shift if empty_str_nodes.size == node.child_nodes.size add_offense(node) do |corrector| empty_str_nodes.each do |str| corrector.remove(str) end end end |