Class: YARD::Handlers::Ruby::Legacy::Base Abstract

Inherits:
Base
  • Object
show all
Includes:
Parser::Ruby::Legacy::RubyToken
Defined in:
lib/yard/handlers/ruby/legacy/base.rb

Overview

This class is abstract.

See Base for subclassing information.

This is the base handler for the legacy parser. To implement a legacy handler, subclass this class.

Constant Summary

Constants included from Parser::Ruby::Legacy::RubyToken

Parser::Ruby::Legacy::RubyToken::EXPR_ARG, Parser::Ruby::Legacy::RubyToken::EXPR_BEG, Parser::Ruby::Legacy::RubyToken::EXPR_CLASS, Parser::Ruby::Legacy::RubyToken::EXPR_DOT, Parser::Ruby::Legacy::RubyToken::EXPR_END, Parser::Ruby::Legacy::RubyToken::EXPR_FNAME, Parser::Ruby::Legacy::RubyToken::EXPR_MID, Parser::Ruby::Legacy::RubyToken::NEWLINE_TOKEN, Parser::Ruby::Legacy::RubyToken::TkReading2Token, Parser::Ruby::Legacy::RubyToken::TkSymbol2Token

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

Class Method Summary collapse

Instance Method Summary collapse

Methods included from CodeObjects::NamespaceMapper

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

Constructor Details

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

Class Method Details

.handles?(stmt) ⇒ Boolean


15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/yard/handlers/ruby/legacy/base.rb', line 15

def self.handles?(stmt)
  handlers.any? do |a_handler|
    case a_handler
    when String
      stmt.tokens.first.text == a_handler
    when Regexp
      stmt.tokens.to_s =~ a_handler
    else
      a_handler == stmt.tokens.first.class
    end
  end
end

Instance Method Details

#call_paramsObject


44
45
46
47
48
49
50
51
# File 'lib/yard/handlers/ruby/legacy/base.rb', line 44

def call_params
  if statement.tokens.first.is_a?(TkDEF)
    extract_method_details.last.map(&:first)
  else
    tokens = statement.tokens[1..-1]
    tokval_list(tokens, :attr, :identifier, TkId).map(&:to_s)
  end
end

#caller_methodObject


53
54
55
56
57
58
59
# File 'lib/yard/handlers/ruby/legacy/base.rb', line 53

def caller_method
  if statement.tokens.first.is_a?(TkIDENTIFIER)
    statement.tokens.first.text
  elsif statement.tokens.first.is_a?(TkDEF)
    extract_method_details.first
  end
end

#parse_block(opts = {}) ⇒ Object

Parses a statement's block with a set of state values. If the statement has no block, nothing happens. A description of state values can be found at Base#push_state

Options Hash (opts):

  • :namespace (CodeObjects::NamespaceObject) — default: value of #namespace

    the namespace object that Base#namespace will be equal to for the duration of the block.

  • :scope (Symbol) — default: :instance

    the scope for the duration of the block.

  • :owner (CodeObjects::Base) — default: value of #owner

    the owner object (method) for the duration of the block

See Also:


35
36
37
38
39
40
41
42
# File 'lib/yard/handlers/ruby/legacy/base.rb', line 35

def parse_block(opts = {})
  push_state(opts) do
    if statement.block
      blk = Parser::Ruby::Legacy::StatementList.new(statement.block)
      parser.process(blk)
    end
  end
end