Abstract class representing either a method or an attribute.
Array of other names for this method/attribute
The #call_seq or the #param_seq with method name, if there is no call_seq.
Parameters yielded by the called block
Different ways to call this method
The method/attribute we’re aliasing
Name of this method/attribute.
Pretty parameter list for this method
Parameters for this method
Is this a singleton method/attribute?
Source file token stream
public, protected, private
Creates a new MethodAttr from token stream
text and method or attribute name name.
Usually this is called by super from a subclass.
# File lib/rdoc/method_attr.rb, line 77
def initialize text, name
  super()
  @text = text
  @name = name
  @aliases      = []
  @is_alias_for = nil
  @parent_name  = nil
  @singleton    = nil
  @visibility   = :public
  @see = false
  @arglists     = nil
  @block_params = nil
  @call_seq     = nil
  @param_seq    = nil
  @params       = nil
end
						Abstract method. Contexts in their building phase call this to register a new alias for this known method/attribute.
creates a new AnyMethod/Attribute newa named
an_alias.new_name;
adds self as newa.is_alias_for;
adds newa to aliases
adds newa to the methods/attributes of context.
# File lib/rdoc/method_attr.rb, line 179
def add_alias(an_alias, context)
  raise NotImplementedError
end
						HTML fragment reference for this method
# File lib/rdoc/method_attr.rb, line 186
def aref
  type = singleton ? 'c' : 'i'
  # % characters are not allowed in html names => dash instead
  "#{aref_prefix}-#{type}-#{html_name}"
end
						Prefix for aref, defined by subclasses.
# File lib/rdoc/method_attr.rb, line 195
def aref_prefix
  raise NotImplementedError
end
						Attempts to sanitize the content passed by the ruby parser: remove outer parentheses, etc.
# File lib/rdoc/method_attr.rb, line 203
def block_params=(value)
  # 'yield.to_s' or 'assert yield, msg'
  return @block_params = '' if value =~ %r^[\.,]/
  # remove trailing 'if/unless ...'
  return @block_params = '' if value =~ %r^(if|unless)\s/
  value = $1.strip if value =~ %r^(.+)\s(if|unless)\s/
  # outer parentheses
  value = $1 if value =~ %r^\s*\((.*)\)\s*$/
  value = value.strip
  # proc/lambda
  return @block_params = $1 if value =~ %r^(proc|lambda)(\s*\{|\sdo)/
  # surrounding +...+ or [...]
  value = $1.strip if value =~ %r^\+(.*)\+$/
  value = $1.strip if value =~ %r^\[(.*)\]$/
  return @block_params = '' if value.empty?
  # global variable
  return @block_params = 'str' if value =~ %r^\$[&0-9]$/
  # wipe out array/hash indices
  value.gsub!(%r(\w)\[[^\[]+\]/, '\1')
  # remove @ from class/instance variables
  value.gsub!(%r@@?([a-z0-9_]+)/, '\1')
  # method calls => method name
  value.gsub!(%r([A-Z:a-z0-9_]+)\.([a-z0-9_]+)(\s*\(\s*[a-z0-9_.,\s]*\s*\)\s*)?/) do
    case $2
    when 'to_s'      then $1
    when 'const_get' then 'const'
    when 'new' then
      $1.split('::').last.  # ClassName => class_name
        gsub(%r([A-Z]+)([A-Z][a-z])/,'\1_\2').
        gsub(%r([a-z\d])([A-Z])/,'\1_\2').
        downcase
    else
      $2
    end
  end
  # class prefixes
  value.gsub!(%r[A-Za-z0-9_:]+::/, '')
  # simple expressions
  value = $1 if value =~ %r^([a-z0-9_]+)\s*[-*+\/]/
  @block_params = value.strip
end
						A method/attribute is documented if any of the following is true:
it was marked with :nodoc:;
it has a comment;
it is an alias for a documented method;
it has a #see method that is documented.
# File lib/rdoc/method_attr.rb, line 111
def documented?
  super or
    (is_alias_for and is_alias_for.documented?) or
    (see and see.documented?)
end
						Full method/attribute name including namespace
# File lib/rdoc/method_attr.rb, line 270
def full_name
  @full_name ||= "#{parent_name}#{pretty_name}"
end
						HTML id-friendly method/attribute name
# File lib/rdoc/method_attr.rb, line 261
def html_name
  require 'cgi'
  CGI.escape(@name.gsub('-', '-2D')).gsub('%','-').sub(%r^-/, '')
end
						‘::’ for a class method/attribute, ‘#’ for an instance method.
# File lib/rdoc/method_attr.rb, line 277
def name_prefix
  @singleton ? '::' : '#'
end
						Name for output to HTML.  For class methods the full name with a “.” is
used like SomeClass.method_name.  For instance methods the
class name is used if context does not match the parent.
to call class methods.
# File lib/rdoc/method_attr.rb, line 288
def output_name context
  return "#{name_prefix}#{@name}" if context == parent
  "#{parent_name}#{@singleton ? '.' : '#'}#{@name}"
end
						Name of our parent with special handling for un-marshaled methods
# File lib/rdoc/method_attr.rb, line 318
def parent_name
  @parent_name || super
end
						Path to this method
# File lib/rdoc/method_attr.rb, line 311
def path
  "#{@parent.path}##{aref}"
end
						Method/attribute name with class/instance indicator
# File lib/rdoc/method_attr.rb, line 297
def pretty_name
  "#{name_prefix}#{@name}"
end
						Used by RDoc::Generator::JsonIndex to create a record for the search engine.
# File lib/rdoc/method_attr.rb, line 363
def search_record
  [
    @name,
    full_name,
    @name,
    @parent.full_name,
    path,
    params,
    snippet(@comment),
  ]
end
						A method/attribute to look at, in particular if this method/attribute has no documentation.
It can be a method/attribute of the superclass or of an included module, including the Kernel module, which is always appended to the included modules.
Returns nil if there is no such method/attribute. The
#is_alias_for method/attribute, if any, is not included.
Templates may generate a “see also …” if this method/attribute has documentation, and “see …” if it does not.
# File lib/rdoc/method_attr.rb, line 131
def see
  @see = find_see if @see == false
  @see
end
						Type of method/attribute (class or instance)
# File lib/rdoc/method_attr.rb, line 304
def type
  singleton ? 'class' : 'instance'
end
						| / | Search | 
|---|---|
| ? | Show this help |