Sha256: 7367a0d186d0116f837d3595abd570e3abcb8de1c5aa8eba0d9339e5598a6972

Contents?: true

Size: 1.06 KB

Versions: 6888

Compression:

Stored size: 1.06 KB

Contents

# frozen_string_literal: true

module RuboCop
  module Cop
    # Common functionality for checking for a line break before the first
    # element in a multi-line collection.
    module FirstElementLineBreak
      private

      def check_method_line_break(node, children)
        return if children.empty?

        return unless method_uses_parens?(node, children.first)

        check_children_line_break(node, children)
      end

      def method_uses_parens?(node, limit)
        source = node.source_range.source_line[0...limit.loc.column]
        source =~ /\s*\(\s*$/
      end

      def check_children_line_break(node, children, start = node)
        return if children.size < 2

        line = start.first_line

        min = first_by_line(children)
        return if line != min.first_line

        max = last_by_line(children)
        return if line == max.last_line

        add_offense(min)
      end

      def first_by_line(nodes)
        nodes.min_by(&:first_line)
      end

      def last_by_line(nodes)
        nodes.max_by(&:last_line)
      end
    end
  end
end

Version data entries

6,888 entries across 6,863 versions & 30 rubygems

Version Path
rbhint-0.85.1.rc1 lib/rubocop/cop/mixin/first_element_line_break.rb
rubocop-0.85.1 lib/rubocop/cop/mixin/first_element_line_break.rb
rbhint-0.8.5.rc1 lib/rubocop/cop/mixin/first_element_line_break.rb
rubocop-0.85.0 lib/rubocop/cop/mixin/first_element_line_break.rb
rubocop-0.84.0 lib/rubocop/cop/mixin/first_element_line_break.rb
rubocop-0.83.0 lib/rubocop/cop/mixin/first_element_line_break.rb
rubocop-0.82.0 lib/rubocop/cop/mixin/first_element_line_break.rb
talon_one-2.0.0 vendor/bundle/ruby/2.7.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/first_element_line_break.rb
talon_one-2.0.0 vendor/bundle/ruby/2.3.0/gems/rubocop-0.66.0/lib/rubocop/cop/mixin/first_element_line_break.rb
rubocop-0.81.0 lib/rubocop/cop/mixin/first_element_line_break.rb
rubocop-0.80.1 lib/rubocop/cop/mixin/first_element_line_break.rb
rubocop-0.80.0 lib/rubocop/cop/mixin/first_element_line_break.rb
grape-extra_validators-1.0.0 vendor/bundle/ruby/2.4.0/gems/rubocop-0.79.0/lib/rubocop/cop/mixin/first_element_line_break.rb
grape-extra_validators-1.0.0 vendor/bundle/ruby/2.6.0/gems/rubocop-0.79.0/lib/rubocop/cop/mixin/first_element_line_break.rb
rubocop-0.79.0 lib/rubocop/cop/mixin/first_element_line_break.rb
rubocop-0.78.0 lib/rubocop/cop/mixin/first_element_line_break.rb
zuora_connect_ui-0.10.0 vendor/ruby/2.6.0/gems/rubocop-0.76.0/lib/rubocop/cop/mixin/first_element_line_break.rb
zuora_connect_ui-0.10.0 vendor/ruby/2.6.0/gems/rubocop-0.77.0/lib/rubocop/cop/mixin/first_element_line_break.rb
zuora_connect_ui-0.10.0 vendor/ruby/2.6.0/gems/rubocop-0.75.1/lib/rubocop/cop/mixin/first_element_line_break.rb
zuora_connect_ui-0.10.0 vendor/ruby/2.6.0/gems/rubocop-0.75.0/lib/rubocop/cop/mixin/first_element_line_break.rb