123456789_123456789_123456789_123456789_123456789_

Class: YARD::Tags::Directive Abstract

Relationships & Source Files
Extension / Inclusion / Inheritance Descendants
Subclasses:
Inherits: Object
Defined in: lib/yard/tags/directives.rb

Overview

This class is abstract.

Subclasses should implement #call.

The base directive class. Subclass this class to create a custom directive, registering it with Library.define_directive. Directive classes are executed via the #call method, which perform all directive processing on the object.

If processing occurs within a handler, the #handler attribute is available to access more information about parsing context and state. ::YARD::Handlers are only available when parsing from ::YARD::Parser::SourceParser, not when parsing directly from ::YARD::DocstringParser. If the docstring is attached to an object declaration, #object will be set and available to modify the generated code object directly. Note that both of these attributes may be nil, and directives should test their existence before attempting to use them.

See Also:

Since:

  • 0.8.0

Parser callbacks

Class Method Summary

Instance Attribute Summary

Constructor Details

.new(tag, parser) ⇒ Directive

Parameters:

  • tag (Tag)

    the meta-data tag containing all input to the docstring

  • parser (DocstringParser)

    the docstring parser object

Since:

  • 0.8.0

[ GitHub ]

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

def initialize(tag, parser)
  self.tag = tag
  self.parser = parser
  self.expanded_text = nil
end

Instance Attribute Details

#expanded_textString? (rw)

Set this field to replace the directive definition inside of a docstring with arbitrary text. For instance, the MacroDirective uses this field to expand its macro data in place of the call to a @!macro.

Returns:

  • (String)

    the text to expand in the original docstring in place of this directive definition.

  • (nil)

    if no expansion should take place for this directive

Since:

  • 0.8.0

[ GitHub ]

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

attr_accessor :expanded_text

#handlerHandlers::Base? (readonly)

Returns:

Since:

  • 0.8.0

[ GitHub ]

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

def handler; parser.handler end

#objectCodeObjects::Base? (readonly)

Returns:

  • (CodeObjects::Base, nil)

    the object the parent docstring is attached to. May be nil.

Since:

  • 0.8.0

[ GitHub ]

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

def object; parser.object end

#tagTag (rw)

Returns:

  • (Tag)

    the meta-data tag containing data input to the directive

Since:

  • 0.8.0

[ GitHub ]

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

attr_accessor :tag

Instance Method Details

#after_parsevoid

This method returns an undefined value.

Called after parsing all directives and tags in the docstring. Used to perform any cleanup after all directives perform their main task.

Since:

  • 0.8.0

[ GitHub ]

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

def after_parse; end

#callvoid

This method is abstract.

implement this method to perform all data processing for the directive.

This method returns an undefined value.

Called when processing the directive. Subclasses should implement this method to perform all functionality of the directive.

Raises:

  • (NotImplementedError)

Since:

  • 0.8.0

[ GitHub ]

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

def call; raise NotImplementedError end