Class: YARD::Tags::ParseDirective
- Defined in:
- lib/yard/tags/directives.rb
Overview
Parses a block of code as if it were present in the source file at that location. This directive is useful if a class has dynamic meta-programmed behaviour that cannot be recognized by YARD.
You can specify the language of the code block using the types specification list. By default, the code language is “ruby”.
Instance Attribute Summary collapse
-
#expanded_text ⇒ String?
inherited
from Directive
Set this field to replace the directive definition inside of a docstring with arbitrary text.
-
#handler ⇒ Handlers::Base?
inherited
from Directive
readonly
The handler object the docstring parser might be attached to.
-
#object ⇒ CodeObjects::Base?
inherited
from Directive
readonly
The object the parent docstring is attached to.
-
#parser ⇒ DocstringParser
inherited
from Directive
protected
The parser that is parsing all tag information out of the docstring.
-
#tag ⇒ Tag
inherited
from Directive
The meta-data tag containing data input to the directive.
Parser callbacks collapse
Constructor Details
This class inherits a constructor from YARD::Tags::Directive
Instance Attribute Details
#expanded_text ⇒ String? Originally defined in class Directive
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.
#handler ⇒ Handlers::Base? (readonly) Originally defined in class Directive
Returns the handler object the docstring parser might be attached to. May be nil. Only available when parsing through Parser::SourceParser.
#object ⇒ CodeObjects::Base? (readonly) Originally defined in class Directive
Returns the object the parent docstring is attached to. May be nil.
#parser ⇒ DocstringParser (protected) Originally defined in class Directive
Returns the parser that is parsing all tag information out of the docstring
Instance Method Details
#call ⇒ Object
523 524 525 526 527 528 529 530 531 532 533 534 535 536 |
# File 'lib/yard/tags/directives.rb', line 523 def call lang = tag.types ? tag.types.first.to_sym : (handler ? handler.parser.parser_type : :ruby) if handler && lang == handler.parser.parser_type pclass = Parser::SourceParser.parser_types[handler.parser.parser_type] pobj = pclass.new(tag.text, handler.parser.file) pobj.parse handler.parser.process(pobj.enumerator) else # initialize a new parse chain src_parser = Parser::SourceParser.new(lang, handler ? handler.globals : nil) src_parser.file = handler.parser.file if handler src_parser.parse(StringIO.new(tag.text)) end end |