Sha256: b585d8368ba88a57937607750052d10beea53fa3b155432c9ae0b02d23e03cbc

Contents?: true

Size: 1.26 KB

Versions: 13

Compression:

Stored size: 1.26 KB

Contents

# encoding: utf-8
# frozen_string_literal: true

module RuboCop
  module Cop
    # Common functionality for checking modifier nodes.
    module AccessModifierNode
      extend RuboCop::Sexp

      PRIVATE_NODE = s(:send, nil, :private)
      PROTECTED_NODE = s(:send, nil, :protected)
      PUBLIC_NODE = s(:send, nil, :public)
      MODULE_FUNCTION_NODE = s(:send, nil, :module_function)

      # Returns true when the node is an access modifier.
      def modifier_node?(node)
        modifier_structure?(node) && class_or_module_parent?(node)
      end

      # Returns true when the node looks like an access modifier.
      def modifier_structure?(node)
        [PRIVATE_NODE,
         PROTECTED_NODE,
         PUBLIC_NODE,
         MODULE_FUNCTION_NODE].include?(node)
      end

      # Returns true when the parent of what looks like an access modifier
      # is a Class or Module. Filters out simple method calls to similarly
      # named private, protected or public.
      def class_or_module_parent?(node)
        node.each_ancestor do |a|
          if a.type == :block
            return true if a.class_constructor?
          elsif a.type != :begin
            return [:casgn, :sclass, :class, :module].include?(a.type)
          end
        end
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 2 rubygems

Version Path
fluent-plugin-detect-memb-exceptions-0.0.2 vendor/bundle/ruby/2.0.0/gems/rubocop-0.42.0/lib/rubocop/cop/mixin/access_modifier_node.rb
fluent-plugin-detect-memb-exceptions-0.0.1 vendor/bundle/ruby/2.0.0/gems/rubocop-0.42.0/lib/rubocop/cop/mixin/access_modifier_node.rb
rubocop-0.42.0 lib/rubocop/cop/mixin/access_modifier_node.rb
rubocop-0.41.2 lib/rubocop/cop/mixin/access_modifier_node.rb
rubocop-0.41.1 lib/rubocop/cop/mixin/access_modifier_node.rb
rubocop-0.41.0 lib/rubocop/cop/mixin/access_modifier_node.rb
rubocop-0.40.0 lib/rubocop/cop/mixin/access_modifier_node.rb
rubocop-0.39.0 lib/rubocop/cop/mixin/access_modifier_node.rb
rubocop-0.38.0 lib/rubocop/cop/mixin/access_modifier_node.rb
rubocop-0.37.2 lib/rubocop/cop/mixin/access_modifier_node.rb
rubocop-0.37.1 lib/rubocop/cop/mixin/access_modifier_node.rb
rubocop-0.37.0 lib/rubocop/cop/mixin/access_modifier_node.rb
rubocop-0.36.0 lib/rubocop/cop/mixin/access_modifier_node.rb