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