Class: YARD::Handlers::Ruby::AliasHandler

Inherits:
Base
  • Object
show all
Defined in:
lib/yard/handlers/ruby/alias_handler.rb

Overview

Handles alias and alias_method calls

Constant Summary

Constant Summary

Constants included from CodeObjects

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Parser::Ruby

#s

Constructor Details

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

Instance Attribute Details

#extra_stateObject (readonly) Originally defined in class Base

Returns the value of attribute extra_state

#globalsObject (readonly) Originally defined in class Base

Returns the value of attribute globals

#namespaceObject Originally defined in class Base

Returns the value of attribute namespace

#ownerObject Originally defined in class Base

Returns the value of attribute owner

#parserProcessor (readonly) Originally defined in class Base

Returns the processor object that manages all global state during handling.

Returns:

  • (Processor)

    the processor object that manages all global state during handling.

#scopeObject Originally defined in class Base

Returns the value of attribute scope

#statementObject (readonly) Originally defined in class Base

Returns the statement object currently being processed. Usually refers to one semantic language statement, though the strict definition depends on the parser used.

Returns:

  • (Object)

    the statement object currently being processed. Usually refers to one semantic language statement, though the strict definition depends on the parser used.

#visibilityObject Originally defined in class Base

Returns the value of attribute visibility

Instance Method Details

#processvoid

This method returns an undefined value.

Main processing callback



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/yard/handlers/ruby/alias_handler.rb', line 6

process do
  names = []
  if statement.type == :alias
    names = statement.map {|o| o.jump(:ident, :op, :kw, :const).source }
  elsif statement.call?
    statement.parameters(false).each do |obj|
      case obj.type
      when :symbol_literal, :dyna_symbol
        names << obj.jump(:ident, :op, :kw, :const).source
      when :string_literal
        names << obj.jump(:string_content).source
      end
    end
  end
  raise YARD::Parser::UndocumentableError, "alias/alias_method" if names.size != 2

  new_meth, old_meth = names[0].to_sym, names[1].to_sym
  old_obj = namespace.child(:name => old_meth, :scope => scope)
  new_obj = register MethodObject.new(namespace, new_meth, scope) do |o|
    o.add_file(parser.file, statement.line)
  end

  if old_obj
    new_obj.signature = old_obj.signature
    new_obj.source = old_obj.source
    new_obj.docstring = old_obj.docstring + YARD::Docstring.new(statement.comments)
    new_obj.docstring.line_range = statement.comments_range
    new_obj.docstring.hash_flag = statement.comments_hash_flag
    new_obj.docstring.object = new_obj
  else
    new_obj.signature = "def #{new_meth}" # this is all we know.
  end

  namespace.aliases[new_obj] = old_meth
end