# Class: YARD::Handlers::Ruby::VisibilityHandler

Inherits:
  Base
  - Object
  - Base
  - Base
  - YARD::Handlers::Ruby::VisibilityHandler
  show all

Includes:
  DecoratorHandlerMethods

Defined in:
  lib/yard/handlers/ruby/visibility_handler.rb

## Overview

Handles ‘private’, ‘protected’, and ‘public’ calls.

## Constant Summary

### Constants included from CodeObjects

CodeObjects::BUILTIN_ALL, CodeObjects::BUILTIN_CLASSES, CodeObjects::BUILTIN_EXCEPTIONS, CodeObjects::BUILTIN_EXCEPTIONS_HASH, CodeObjects::BUILTIN_MODULES, CodeObjects::CONSTANTMATCH, CodeObjects::CONSTANTSTART, CodeObjects::CSEP, CodeObjects::CSEPQ, CodeObjects::ISEP, CodeObjects::ISEPQ, CodeObjects::METHODMATCH, CodeObjects::METHODNAMEMATCH, CodeObjects::NAMESPACEMATCH, CodeObjects::NSEP, CodeObjects::NSEPQ

## Instance Method Summary collapse

- #is_attribute_method?(node) ⇒ Boolean
- #process ⇒ void

  Main processing callback.

### Methods included from DecoratorHandlerMethods

#process_decorator

### Methods included from Parser::Ruby

#s

### Methods included from CodeObjects::NamespaceMapper

#clear_separators, #default_separator, on_invalidate, #register_separator, #separators, #separators_for_type, #separators_match, #types_for_separator, #unregister_separator_by_type

## Constructor Details

This class inherits a constructor from YARD::Handlers::Base

## Instance Method Details

### #is_attribute_method?(node) ⇒ `Boolean`

Returns:

- (`Boolean`)

    32
    33
    34

    # File 'lib/yard/handlers/ruby/visibility_handler.rb', line 32

    def is_attribute_method?(node)
      node.type == :command && node.jump(:ident).first.to_s =~ /^attr_(accessor|writer|reader)$/
    end

### #process ⇒ `void`

This method returns an undefined value.

Main processing callback

    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30

    # File 'lib/yard/handlers/ruby/visibility_handler.rb', line 11

    process do
      return if (ident = statement.jump(:ident)) == statement
      case statement.type
      when :var_ref, :vcall
        self.visibility = ident.first.to_sym
        globals.visibility_origin = :keyword
      when :command
        if RUBY_VERSION >= '3.' && is_attribute_method?(statement.parameters.first)
          parse_block(statement.parameters.first, visibility: ident.first.to_sym)
          return
        end
        process_decorator do |method|
          method.visibility = ident.first if method.respond_to? :visibility=
        end
      when :fcall
        process_decorator do |method|
          method.visibility = ident.first if method.respond_to? :visibility=
        end
      end
    end