Sha256: 4c34875cdec20de95a918ebd34b7074885bea0931c5970f8079f2901cf74c9af

Contents?: true

Size: 981 Bytes

Versions: 9

Compression:

Stored size: 981 Bytes

Contents

# encoding: utf-8

module RuboCop
  module Cop
    # Common functionality for checking length of classes and modules.
    module ClassishLength
      include CodeLength

      private

      def code_length(node)
        body_line_numbers = line_range(node).to_a[1...-1]

        target_line_numbers = body_line_numbers -
                              line_numbers_of_inner_thing(node, :module) -
                              line_numbers_of_inner_thing(node, :class)

        target_line_numbers.reduce(0) do |length, line_number|
          source_line = processed_source[line_number]
          next length if irrelevant_line(source_line)
          length + 1
        end
      end

      def line_numbers_of_inner_thing(node, type)
        line_numbers = Set.new

        node.each_descendant(:module, type) do |inner_node|
          line_range = line_range(inner_node)
          line_numbers.merge(line_range)
        end

        line_numbers.to_a
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
rubocop-0.35.1 lib/rubocop/cop/mixin/classish_length.rb
rubocop-0.35.0 lib/rubocop/cop/mixin/classish_length.rb
rubocop-0.34.2 lib/rubocop/cop/mixin/classish_length.rb
rubocop-0.34.1 lib/rubocop/cop/mixin/classish_length.rb
rubocop-0.34.0 lib/rubocop/cop/mixin/classish_length.rb
rubocop-0.33.0 lib/rubocop/cop/mixin/classish_length.rb
rubocop-0.32.1 lib/rubocop/cop/mixin/classish_length.rb
rubocop-0.32.0 lib/rubocop/cop/mixin/classish_length.rb
rubocop-0.31.0 lib/rubocop/cop/mixin/classish_length.rb