class YARD::Tags::Directive
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. Handlers
are only available when parsing from {Parser::SourceParser}, not when parsing directly from {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.
@abstract Subclasses should implement {#call}. @see Library.define_directive
@since 0.8.0
Attributes
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+.
@return [String] the text to expand in the original docstring in place
of this directive definition.
@return [nil] if no expansion should take place for this directive
@return [DocstringParser] the parser that is parsing all tag
information out of the docstring
@return [Tag] the meta-data tag containing data input to the directive
Public Class Methods
Source
# File lib/yard/tags/directives.rb, line 54 def initialize(tag, parser) self.tag = tag self.parser = parser self.expanded_text = nil end
@param [Tag] tag the meta-data tag containing all input to the docstring @param [DocstringParser] parser the docstring parser object
Public Instance Methods
Source
# File lib/yard/tags/directives.rb, line 73 def after_parse; end
Called after parsing all directives and tags in the docstring. Used to perform any cleanup after all directives perform their main task. @return [void]
Source
# File lib/yard/tags/directives.rb, line 68 def call; raise NotImplementedError end
Called when processing the directive. Subclasses should implement this method to perform all functionality of the directive.
@abstract implement this method to perform all data processing for
the directive.
@return [void]
Source
# File lib/yard/tags/directives.rb, line 48 def handler; parser.handler end
@!attribute [r] handler @return [Handlers::Base, nil] the handler object the docstring parser
might be attached to. May be nil. Only available when parsing through {Parser::SourceParser}.
Source
# File lib/yard/tags/directives.rb, line 42 def object; parser.object end
@!attribute [r] object @return [CodeObjects::Base, nil] the object the parent docstring is
attached to. May be nil.
Protected Instance Methods
Source
# File lib/yard/tags/directives.rb, line 79 def inside_directive? return true if parser.state.inside_directive parser.directives.any? { |d| d.is_a?(MethodDirective) && d.tag.text.empty? } end