Class: RDoc::AnyMethod (Ruby 2.5.7)
Description: Class : RDoc::AnyMethod - Ruby 2.5.7

### Home Classes Methods

### In Files

- rdoc/any_method.rb

### Parent

RDoc::MethodAttr

### Methods

- ::new
- #add_alias
- #aref_prefix
- #arglists
- #call_seq=
- #marshal_dump
- #marshal_load
- #name
- #param_list
- #param_seq
- #store=
- #superclass_method

### Included Modules

- RDoc::TokenStream

### Class/Module Index

Quicksearch

- RDoc
- RDoc::Alias
- RDoc::AnonClass
- RDoc::AnyMethod
- RDoc::Attr
- RDoc::ClassModule
- RDoc::CodeObject
- RDoc::Comment
- RDoc::Constant
- RDoc::Context
- RDoc::Context::Section
- RDoc::CrossReference
- RDoc::ERBIO
- RDoc::ERBPartial
- RDoc::Encoding
- RDoc::Error
- RDoc::Extend
- RDoc::Generator
- RDoc::Generator::Darkfish
- RDoc::Generator::JsonIndex
- RDoc::Generator::Markup
- RDoc::Generator::POT
- RDoc::Generator::POT::MessageExtractor
- RDoc::Generator::POT::PO
- RDoc::Generator::POT::POEntry
- RDoc::Generator::RI
- RDoc::GhostMethod
- RDoc::I18n
- RDoc::I18n::Locale
- RDoc::I18n::Text
- RDoc::Include
- RDoc::Markdown
- RDoc::Markdown::Literals
- RDoc::Markup
- RDoc::Markup::AttrChanger
- RDoc::Markup::AttrSpan
- RDoc::Markup::AttributeManager
- RDoc::Markup::Attributes
- RDoc::Markup::BlankLine
- RDoc::Markup::BlockQuote
- RDoc::Markup::Document
- RDoc::Markup::Formatter
- RDoc::Markup::FormatterTestCase
- RDoc::Markup::HardBreak
- RDoc::Markup::Include
- RDoc::Markup::IndentedParagraph
- RDoc::Markup::List
- RDoc::Markup::ListItem
- RDoc::Markup::Paragraph
- RDoc::Markup::Parser
- RDoc::Markup::Parser::Error
- RDoc::Markup::Parser::ParseError
- RDoc::Markup::PreProcess
- RDoc::Markup::Raw
- RDoc::Markup::Rule
- RDoc::Markup::Special
- RDoc::Markup::TextFormatterTestCase
- RDoc::Markup::ToAnsi
- RDoc::Markup::ToBs
- RDoc::Markup::ToHtml
- RDoc::Markup::ToHtmlCrossref
- RDoc::Markup::ToHtmlSnippet
- RDoc::Markup::ToJoinedParagraph
- RDoc::Markup::ToLabel
- RDoc::Markup::ToMarkdown
- RDoc::Markup::ToRdoc
- RDoc::Markup::ToTableOfContents
- RDoc::Markup::ToTest
- RDoc::Markup::ToTtOnly
- RDoc::Markup::Verbatim
- RDoc::MetaMethod
- RDoc::MethodAttr
- RDoc::Mixin
- RDoc::NormalClass
- RDoc::NormalModule
- RDoc::Options
- RDoc::Parser
- RDoc::Parser::C
- RDoc::Parser::ChangeLog
- RDoc::Parser::Markdown
- RDoc::Parser::RD
- RDoc::Parser::Ruby
- RDoc::Parser::RubyTools
- RDoc::Parser::Simple
- RDoc::Parser::Text
- RDoc::RD
- RDoc::RD::BlockParser
- RDoc::RD::Inline
- RDoc::RD::InlineParser
- RDoc::RDoc
- RDoc::RI
- RDoc::RI::Driver
- RDoc::RI::Driver::Error
- RDoc::RI::Driver::NotFoundError
- RDoc::RI::Error
- RDoc::RI::Paths
- RDoc::RI::Task
- RDoc::Require
- RDoc::RipperStateLex
- RDoc::RipperStateLex::InnerStateLex
- RDoc::RubygemsHook
- RDoc::Servlet
- RDoc::SingleClass
- RDoc::Stats
- RDoc::Stats::Normal
- RDoc::Stats::Quiet
- RDoc::Stats::Verbose
- RDoc::Store
- RDoc::Store::Error
- RDoc::Store::MissingFileError
- RDoc::Task
- RDoc::TestCase
- RDoc::Text
- RDoc::TokenStream
- RDoc::TomDoc
- RDoc::TopLevel
- RDocTask

No matching classes.

# RDoc::AnyMethod

`AnyMethod` is the base class for objects representing methods

### Attributes

c_function[RW]

The C function that implements this method (if it was defined in a C file)

call_seq[R]

Different ways to call this method

calls_super[RW]

If true this method uses `super` to call a superclass version

dont_rename_initialize[RW]

Don't rename #initialize to ::new

params[RW]

Parameters for this method

### Public Class Methods

new(text, name) click to toggle source

Creates a new `AnyMethod` with a token stream `text` and `name`

                   # File rdoc/any_method.rb, line 49
    def initialize text, name
      super

      @c_function = nil
      @dont_rename_initialize = false
      @token_stream = nil
      @calls_super = false
      @superclass_method = nil
    end

### Public Instance Methods

add_alias(an_alias, context = nil) click to toggle source

Adds `an_alias` as an alias for this method in `context`.

                   # File rdoc/any_method.rb, line 62
    def add_alias an_alias, context = nil
      method = self.class.new an_alias.text, an_alias.new_name

      method.record_location an_alias.file
      method.singleton = self.singleton
      method.params = self.params
      method.visibility = self.visibility
      method.comment = an_alias.comment
      method.is_alias_for = self
      @aliases << method
      context.add_method method if context
      method
    end

aref_prefix() click to toggle source

Prefix for `aref` is 'method'.

                   # File rdoc/any_method.rb, line 79
    def aref_prefix
      'method'
    end

arglists() click to toggle source

The `call_seq` or the `param_seq` with method name, if there is no call_seq.

Use this for displaying a method's argument lists.

                   # File rdoc/any_method.rb, line 88
    def arglists
      if @call_seq then
        @call_seq
      elsif @params then
        "#{name}#{param_seq}"
      end
    end

call_seq=(call_seq) click to toggle source

Sets the different ways you can call this method. If an empty `call_seq` is given nil is assumed.

See also `param_seq`

                   # File rdoc/any_method.rb, line 102
    def call_seq= call_seq
      return if call_seq.empty?

      @call_seq = call_seq
    end

marshal_dump() click to toggle source

Dumps this `AnyMethod` for use by ri. See also `marshal_load`

                   # File rdoc/any_method.rb, line 130
    def marshal_dump
      aliases = @aliases.map do |a|
        [a.name, parse(a.comment)]
      end

      is_alias_for = [
        @is_alias_for.parent.full_name,
        @is_alias_for.singleton,
        @is_alias_for.name
      ] if @is_alias_for

      [ MARSHAL_VERSION,
        @name,
        full_name,
        @singleton,
        @visibility,
        parse(@comment),
        @call_seq,
        @block_params,
        aliases,
        @params,
        @file.relative_name,
        @calls_super,
        @parent.name,
        @parent.class,
        @section.title,
        is_alias_for,
      ]
    end

marshal_load(array) click to toggle source

Loads this `AnyMethod` from `array`. For a loaded `AnyMethod` the following methods will return cached values:

- `full_name`

- `parent_name`

                   # File rdoc/any_method.rb, line 167
    def marshal_load array
      initialize_visibility

      @dont_rename_initialize = nil
      @token_stream           = nil
      @aliases                = []
      @parent                 = nil
      @parent_name            = nil
      @parent_class           = nil
      @section                = nil
      @file                   = nil

      version        = array[0]
      @name          = array[1]
      @full_name     = array[2]
      @singleton     = array[3]
      @visibility    = array[4]
      @comment       = array[5]
      @call_seq      = array[6]
      @block_params  = array[7]
      #                      8 handled below
      @params        = array[9]
      #                      10 handled below
      @calls_super   = array[11]
      @parent_name   = array[12]
      @parent_title  = array[13]
      @section_title = array[14]
      @is_alias_for  = array[15]

      array[8].each do |new_name, comment|
        add_alias RDoc::Alias.new(nil, @name, new_name, comment, @singleton)
      end

      @parent_name ||= if @full_name =~ /#/ then
                         $`
                       else
                         name = @full_name.split('::')
                         name.pop
                         name.join '::'
                       end

      @file = RDoc::TopLevel.new array[10] if version > 0
    end

name() click to toggle source

Method name

If the method has no assigned name, it extracts it from `call_seq`.

                   # File rdoc/any_method.rb, line 216
    def name
      return @name if @name

      @name =
        @call_seq[/^.*?\.(\w+)/, 1] ||
        @call_seq[/^.*?(\w+)/, 1] ||
        @call_seq if @call_seq
    end

param_list() click to toggle source

A list of this method's method and yield parameters. `call-seq` params are preferred over parsed method and block params.

                   # File rdoc/any_method.rb, line 229
    def param_list
      if @call_seq then
        params = @call_seq.split("\n").last
        params = params.sub(/.*?\((.*)\)/, '\1')
        params = params.sub(/(\{|do)\s*\|([^|]*)\|.*/, ',\2')
      elsif @params then
        params = @params.sub(/\((.*)\)/, '\1')

        params << ",#{@block_params}" if @block_params
      elsif @block_params then
        params = @block_params
      else
        return []
      end

      if @block_params then
        # If this method has explicit block parameters, remove any explicit
        # &block
        params = params.sub(/,?\s*&\w+/, '')
      else
        params = params.sub(/\&(\w+)/, '\1')
      end

      params = params.gsub(/\s+/, '').split(',').reject(&:empty?)

      params.map { |param| param.sub(/=.*/, '') }
    end

param_seq() click to toggle source

Pretty parameter list for this method. If the method's parameters were given by `call-seq` it is preferred over the parsed values.

                   # File rdoc/any_method.rb, line 261
    def param_seq
      if @call_seq then
        params = @call_seq.split("\n").last
        params = params.sub(/[^( ]+/, '')
        params = params.sub(/(\|[^|]+\|)\s*\.\.\.\s*(end|\})/, '\1 \2')
      elsif @params then
        params = @params.gsub(/\s*\#.*/, '')
        params = params.tr_s("\n ", " ")
        params = "(#{params})" unless params[0] == ?(
      else
        params = ''
      end

      if @block_params then
        # If this method has explicit block parameters, remove any explicit
        # &block
        params = params.sub(/,?\s*&\w+/, '')

        block = @block_params.tr_s("\n ", " ")
        if block[0] == ?(
          block = block.sub(/^\(/, '').sub(/\)/, '')
        end
        params << " { |#{block}| ... }"
      end

      params
    end

store=(store) click to toggle source

Sets the store for this method and its referenced code objects.

                   # File rdoc/any_method.rb, line 292
    def store= store
      super

      @file = @store.add_file @file.full_name if @file
    end

superclass_method() click to toggle source

For methods that `super`, find the superclass method that would be called.

                   # File rdoc/any_method.rb, line 301
    def superclass_method
      return unless @calls_super
      return @superclass_method if @superclass_method

      parent.each_ancestor do |ancestor|
        if method = ancestor.method_list.find { |m| m.name == @name } then
          @superclass_method = method
          break
        end
      end

      @superclass_method
    end