Sha256: 970bf664fca2c6a43982a530e025f92da6b2ab909cf7143f5eb362f7655434e6
Contents?: true
Size: 1.38 KB
Versions: 3
Compression:
Stored size: 1.38 KB
Contents
# encoding: utf-8 module Rubocop module Cop module Style # This cop checks for excessive nesting of conditional and looping # constructs. Despite the cop's name, blocks are not considered as a # extra level of nesting. # # The maximum level of nesting allowed is configurable. class BlockNesting < Cop NESTING_BLOCKS = [:case, :if, :while, :while_post, :until, :until_post, :for, :resbody] def inspect(source_buffer, source, tokens, ast, comments) return unless ast max = BlockNesting.config['Max'] check_nesting_level(ast, max, 0) end private def check_nesting_level(node, max, current_level) if NESTING_BLOCKS.include?(node.type) unless node.loc.respond_to?(:keyword) && node.loc.keyword.is?('elsif') current_level += 1 end if current_level == max + 1 add_offence(:convention, node.location.expression, message(max)) return end end node.children.each do |child| if child.is_a?(Parser::AST::Node) check_nesting_level(child, max, current_level) end end end def message(max) "Avoid more than #{max} levels of block nesting." end end end end end
Version data entries
3 entries across 3 versions & 2 rubygems
Version | Path |
---|---|
rubocop-0.9.1 | lib/rubocop/cop/style/block_nesting.rb |
sabat-rubocop-0.9.0 | lib/rubocop/cop/style/block_nesting.rb |
rubocop-0.9.0 | lib/rubocop/cop/style/block_nesting.rb |