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.

Direct Known Subclasses

AliasHandler, AttributeHandler, ClassConditionHandler, ClassHandler, ClassVariableHandler, ConstantHandler, ExceptionHandler, MacroHandler, MethodHandler, MixinHandler, ModuleHandler, PrivateConstantHandler, VisibilityHandler, YieldHandler

Constant Summary

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

EXPR_ARG, EXPR_BEG, EXPR_CLASS, EXPR_DOT, EXPR_END, EXPR_FNAME, EXPR_MID, NEWLINE_TOKEN, TkReading2Token, TkSymbol2Token

Constants included from CodeObjects

BUILTIN_ALL, BUILTIN_CLASSES, BUILTIN_EXCEPTIONS, BUILTIN_EXCEPTIONS_HASH, BUILTIN_MODULES, CONSTANTMATCH, CSEP, CSEPQ, ISEP, ISEPQ, METHODMATCH, METHODNAMEMATCH, NAMESPACEMATCH, NSEP, NSEPQ

Instance Attribute Summary

Attributes inherited from Base

extra_state, globals, namespace, owner, parser, scope, statement, visibility

Class Method Summary (collapse)

Instance Method Summary (collapse)

Methods inherited from Base

clear_subclasses, #ensure_loaded!, #expand_macro, #find_or_create_macro, handlers, handles, in_file, #initialize, matches_file?, namespace_only, namespace_only?, #process, process, #push_state, #register, subclasses

Constructor Details

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

Class Method Details

+ (Boolean) handles?(stmt)

Whether or not a Parser::Ruby::Legacy::Statement object should be handled by this handler.

Returns:



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

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

- (Object) call_params (protected)



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

def call_params
  tokens = statement.tokens[1..-1]
  tokval_list(tokens, :attr, :identifier, TkId).map do |value|
    value.to_s
  end
end

- (Object) caller_method (protected)



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

def caller_method
  if statement.tokens.first.is_a?(TkIDENTIFIER)
    statement.tokens.first.text
  else
    nil
  end
end

- (Object) parse_block(opts = {}) (protected)

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

Parameters:

  • opts (Hash) (defaults to: {})

    State options

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:



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

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