Sha256: 2d087fb37627f17d66ba175dfc9f0a27cb3fed7466326f0f58ec2802adf532e9

Contents?: true

Size: 604 Bytes

Versions: 3

Compression:

Stored size: 604 Bytes

Contents

module Parser
  module AST

    class Node
      def count_nodes_of_type(*types)
        count = 0
        recursive_children do |child|
          count += 1 if types.include?(child.type)
        end
        count
      end

      def recursive_children
        children.each do |child|
          next unless child.is_a?(Parser::AST::Node)
          yield child
          child.recursive_children { |grand_child| yield grand_child }
        end
      end
    end

  end
end

module Rubycritic
  module AST

    class EmptyNode
      def count_nodes_of_type(*types)
        0
      end
    end

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
rubycritic-1.0.2 lib/rubycritic/analysers/adapters/ast_node.rb
rubycritic-1.0.1 lib/rubycritic/analysers/adapters/ast_node.rb
rubycritic-1.0.0 lib/rubycritic/analysers/adapters/ast_node.rb