# Class: YARD::Handlers::Ruby::Legacy::AliasHandler

Inherits:
  Base
  - Object
  - Base
  - Base
  - YARD::Handlers::Ruby::Legacy::AliasHandler
  show all

Defined in:
  lib/yard/handlers/ruby/legacy/alias_handler.rb

## Overview

Handles alias and alias_method calls

## 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

## Instance Method Summary collapse

- #process ⇒ void

  Main processing callback.

### Methods included from CodeObjects::NamespaceMapper

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

## Constructor Details

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

## Instance Method Details

### #process ⇒ `void`

This method returns an undefined value.

Main processing callback

    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

    # File 'lib/yard/handlers/ruby/legacy/alias_handler.rb', line 7

    process do
      if TkALIAS === statement.tokens.first
        tokens = statement.tokens[2..-1].to_s.split(/\s+/)
        names = [tokens[0], tokens[1]].map {|t| t.gsub(/^:(['"])?(.+?)\1?$|^(:)(.+)/, '\2') }
      else
        names = tokval_list(statement.tokens[2..-1], :attr)
      end
      raise YARD::Parser::UndocumentableError, statement.tokens.first.text if names.size != 2

      names = names.map {|n| Symbol === n ? n.to_s.delete('"') : n }
      new_meth = names[0].to_sym
      old_meth = 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.tokens.first.line_no, statement.comments)
      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