class RDoc::Attr

frozen_string_literal: true

An attribute created by #attr, #attr_reader, #attr_writer or #attr_accessor

Attributes

rw[RW]

Is the attribute readable ('R'), writable ('W') or both ('RW')?

Public Class Methods

new(text, name, rw, comment, singleton = false) click to toggle source

Creates a new Attr with body text, name, read/write status rw and comment. singleton marks this as a class attribute.

Calls superclass method RDoc::MethodAttr.new
# File lib/rdoc/attr.rb, line 25
def initialize(text, name, rw, comment, singleton = false)
  super text, name

  @rw = rw
  @singleton = singleton
  self.comment = comment
end

Public Instance Methods

==(other) click to toggle source

Attributes are equal when their names, singleton and rw are identical

# File lib/rdoc/attr.rb, line 36
def == other
  self.class == other.class and
    self.name == other.name and
    self.rw == other.rw and
    self.singleton == other.singleton
end
add_alias(an_alias, context) click to toggle source

Add an_alias as an attribute in context.

# File lib/rdoc/attr.rb, line 46
def add_alias(an_alias, context)
  new_attr = self.class.new(self.text, an_alias.new_name, self.rw,
                            self.comment, self.singleton)

  new_attr.record_location an_alias.file
  new_attr.visibility = self.visibility
  new_attr.is_alias_for = self
  @aliases << new_attr
  context.add_attribute new_attr
  new_attr
end
aref_prefix() click to toggle source

The aref prefix for attributes

# File lib/rdoc/attr.rb, line 61
def aref_prefix
  'attribute'
end
definition() click to toggle source

Returns attr_reader, attr_writer or attr_accessor as appropriate.

# File lib/rdoc/attr.rb, line 78
def definition
  case @rw
  when 'RW' then 'attr_accessor'
  when 'R'  then 'attr_reader'
  when 'W'  then 'attr_writer'
  end
end
marshal_dump() click to toggle source

Dumps this Attr for use by ri. See also marshal_load

# File lib/rdoc/attr.rb, line 102
def marshal_dump
  [ MARSHAL_VERSION,
    @name,
    full_name,
    @rw,
    @visibility,
    parse(@comment),
    singleton,
    @file.relative_name,
    @parent.full_name,
    @parent.class,
    @section.title
  ]
end
marshal_load(array) click to toggle source

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

# File lib/rdoc/attr.rb, line 124
def marshal_load array
  initialize_visibility

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

  version        = array[0]
  @name          = array[1]
  @full_name     = array[2]
  @rw            = array[3]
  @visibility    = array[4]
  @comment       = array[5]
  @singleton     = array[6] || false # MARSHAL_VERSION == 0
  #                      7 handled below
  @parent_name   = array[8]
  @parent_class  = array[9]
  @section_title = array[10]

  @file = RDoc::TopLevel.new array[7] if version > 1

  @parent_name ||= @full_name.split('#', 2).first
end