module RuboCop::Cop::VisibilityHelp

Help methods for determining node visibility.

Constants

VISIBILITY_SCOPES

Private Instance Methods

find_visibility_end(node) click to toggle source

Navigate to find the last protected method

# File lib/rubocop/cop/mixin/visibility_help.rb, line 48
def find_visibility_end(node)
  possible_visibilities = VISIBILITY_SCOPES - ::Set[node_visibility(node)]
  right = node.right_siblings
  right.find do |child_node|
    possible_visibilities.include?(node_visibility(child_node))
  end || right.last
end
find_visibility_start(node) click to toggle source
# File lib/rubocop/cop/mixin/visibility_help.rb, line 43
def find_visibility_start(node)
  node.left_siblings.reverse.find { |sibling| visibility_block?(sibling) }
end
node_visibility(node) click to toggle source
# File lib/rubocop/cop/mixin/visibility_help.rb, line 15
def node_visibility(node)
  node_visibility_from_visibility_inline(node) ||
    node_visibility_from_visibility_block(node) ||
    :public
end
node_visibility_from_visibility_block(node) click to toggle source
# File lib/rubocop/cop/mixin/visibility_help.rb, line 39
def node_visibility_from_visibility_block(node)
  find_visibility_start(node)&.method_name
end
node_visibility_from_visibility_inline(node) click to toggle source
# File lib/rubocop/cop/mixin/visibility_help.rb, line 21
def node_visibility_from_visibility_inline(node)
  return unless node.def_type?

  node_visibility_from_visibility_inline_on_def(node) ||
    node_visibility_from_visibility_inline_on_method_name(node)
end
node_visibility_from_visibility_inline_on_def(node) click to toggle source
# File lib/rubocop/cop/mixin/visibility_help.rb, line 28
def node_visibility_from_visibility_inline_on_def(node)
  parent = node.parent
  parent.method_name if visibility_inline_on_def?(parent)
end
node_visibility_from_visibility_inline_on_method_name(node) click to toggle source
# File lib/rubocop/cop/mixin/visibility_help.rb, line 33
def node_visibility_from_visibility_inline_on_method_name(node)
  node.right_siblings.reverse.find do |sibling|
    visibility_inline_on_method_name?(sibling, method_name: node.method_name)
  end&.method_name
end