class RuboCop::Cop::Lint::PercentSymbolArray
Checks for colons and commas in %i, e.g. ‘%i(:foo, :bar)`
It is more likely that the additional characters are unintended (for example, mistranslating an array of literals to percent string notation) rather than meant to be part of the resulting symbols.
@example
# bad %i(:foo, :bar) # good %i(foo bar)
Constants
- MSG
Public Instance Methods
Source
# File lib/rubocop/cop/lint/percent_symbol_array.rb, line 26 def on_array(node) process(node, '%i', '%I') end
Source
# File lib/rubocop/cop/lint/percent_symbol_array.rb, line 30 def on_percent_literal(node) return unless contains_colons_or_commas?(node) add_offense(node) { |corrector| autocorrect(corrector, node) } end
Private Instance Methods
Source
# File lib/rubocop/cop/lint/percent_symbol_array.rb, line 38 def autocorrect(corrector, node) node.children.each do |child| range = child.source_range corrector.remove_trailing(range, 1) if range.source.end_with?(',') corrector.remove_leading(range, 1) if range.source.start_with?(':') end end
Source
# File lib/rubocop/cop/lint/percent_symbol_array.rb, line 48 def contains_colons_or_commas?(node) node.children.any? do |child| literal = child.children.first.to_s next if non_alphanumeric_literal?(literal) literal.start_with?(':') || literal.end_with?(',') end end
Source
# File lib/rubocop/cop/lint/percent_symbol_array.rb, line 58 def non_alphanumeric_literal?(literal) !/[[:alnum:]]/.match?(literal) end