# Class: YARD::Tags::ScopeDirective

Inherits:
  Directive
  - Object
  - Directive
  - YARD::Tags::ScopeDirective
  show all

Defined in:
  lib/yard/tags/directives.rb

## Overview

Modifies the current parsing scope (class or instance). If this directive is defined on a docstring attached to an object definition, it is applied only to that object. Otherwise, it applies the scope to all future objects in the namespace.

#### Examples:

#####

Modifying the scope of a DSL method

    # @!scope class
    cattr_accessor :subclasses

#####

Modifying the scope of a set of methods

    # @!scope class

    # Documentation for method1
    def method1; end

    # Documentation for method2
    def method2; end

Since:

- 0.7.0

## Parser callbacks collapse

- #call ⇒ Object

## Constructor Details

This class inherits a constructor from YARD::Tags::Directive

## Instance Method Details

### #call ⇒ `Object`

Since:

- 0.7.0

    579
    580
    581
    582
    583
    584
    585
    586
    587
    588
    589

    # File 'lib/yard/tags/directives.rb', line 579

    def call
      if %w(class instance module).include?(tag.text)
        if object.is_a?(CodeObjects::MethodObject)
          object.scope = tag.text.to_sym
        elsif handler && !inside_directive?
          handler.scope = tag.text.to_sym
        else
          parser.state.scope = tag.text.to_sym
        end
      end
    end