Sha256: 1d7c729bd955d405bc60f1ab65e452fe5cec86d41b5ed11b4574c6540e50ec54
Contents?: true
Size: 1.89 KB
Versions: 3
Compression:
Stored size: 1.89 KB
Contents
# frozen_string_literal: true module RuboCop module Cop # Common functionality for handling percent arrays. module PercentArray private # Ruby does not allow percent arrays in an ambiguous block context. # # @example # # foo %i[bar baz] { qux } def invalid_percent_array_context?(node) parent = node.parent parent&.send_type? && parent.arguments.include?(node) && !parent.parenthesized? && parent&.block_literal? end # Override to determine values that are invalid in a percent array def invalid_percent_array_contents?(_node) false end def allowed_bracket_array?(node) comments_in_array?(node) || below_array_length?(node) || invalid_percent_array_context?(node) end def comments_in_array?(node) line_span = node.source_range.first_line...node.source_range.last_line processed_source.each_comment_in_lines(line_span).any? end def check_percent_array(node) array_style_detected(:percent, node.values.size) return unless style == :brackets || invalid_percent_array_contents?(node) bracketed_array = build_bracketed_array(node) message = format(self.class::ARRAY_MSG, prefer: bracketed_array) add_offense(node, message: message) do |corrector| corrector.replace(node, bracketed_array) end end def check_bracketed_array(node, literal_prefix) return if allowed_bracket_array?(node) array_style_detected(:brackets, node.values.size) return unless style == :percent add_offense(node, message: self.class::PERCENT_MSG) do |corrector| percent_literal_corrector = PercentLiteralCorrector.new(@config, @preferred_delimiters) percent_literal_corrector.correct(corrector, node, literal_prefix) end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
rubocop-1.21.0 | lib/rubocop/cop/mixin/percent_array.rb |
rubocop-1.20.0 | lib/rubocop/cop/mixin/percent_array.rb |
rubocop-1.19.1 | lib/rubocop/cop/mixin/percent_array.rb |