module RuboCop::Cop::PercentArray

Common functionality for handling percent arrays.

Private Instance Methods

allowed_bracket_array?(node) click to toggle source
# File lib/rubocop/cop/mixin/percent_array.rb, line 21
def allowed_bracket_array?(node)
  comments_in_array?(node) || below_array_length?(node) ||
    invalid_percent_array_context?(node)
end
check_bracketed_array(node) click to toggle source
# File lib/rubocop/cop/mixin/percent_array.rb, line 44
def check_bracketed_array(node)
  return if allowed_bracket_array?(node)

  array_style_detected(:brackets, node.values.size)
  add_offense(node) if style == :percent
end
check_percent_array(node) click to toggle source
# File lib/rubocop/cop/mixin/percent_array.rb, line 39
def check_percent_array(node)
  array_style_detected(:percent, node.values.size)
  add_offense(node) if style == :brackets
end
comments_in_array?(node) click to toggle source
# File lib/rubocop/cop/mixin/percent_array.rb, line 30
def comments_in_array?(node)
  comments = processed_source.comments
  array_range = node.source_range.to_a

  comments.any? do |comment|
    !(comment.loc.expression.to_a & array_range).empty?
  end
end
invalid_percent_array_context?(node) click to toggle source

Ruby does not allow percent arrays in an ambiguous block context.

@example

foo %i[bar baz] { qux }
# File lib/rubocop/cop/mixin/percent_array.rb, line 14
def invalid_percent_array_context?(node)
  parent = node.parent

  parent && parent.send_type? && parent.arguments.include?(node) &&
    !parent.parenthesized? && parent.block_literal?
end
message(_node) click to toggle source
# File lib/rubocop/cop/mixin/percent_array.rb, line 26
def message(_node)
  style == :percent ? self.class::PERCENT_MSG : self.class::ARRAY_MSG
end