An attribute created by #attr, #attr_reader, #attr_writer or #attr_accessor
Creates a new Attr with body text,
name, read/write status rw and
comment. singleton marks this as a class
attribute.
# File rdoc/attr.rb, line 24
def initialize(text, name, rw, comment, singleton = false)
super text, name
@rw = rw
@singleton = singleton
self.comment = comment
end
Attributes are equal when their names, singleton and rw are identical
# File rdoc/attr.rb, line 35
def == other
self.class == other.class and
self.name == other.name and
self.rw == other.rw and
self.singleton == other.singleton
end
Add an_alias as an attribute in context.
# File rdoc/attr.rb, line 45
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
The aref prefix for attributes
# File rdoc/attr.rb, line 60
def aref_prefix
'attribute'
end
Returns attr_reader, attr_writer or attr_accessor as appropriate.
# File rdoc/attr.rb, line 77
def definition
case @rw
when 'RW' then 'attr_accessor'
when 'R' then 'attr_reader'
when 'W' then 'attr_writer'
end
end
Dumps this Attr for use by ri. See also marshal_load
# File rdoc/attr.rb, line 101
def marshal_dump
[ MARSHAL_VERSION,
@name,
full_name,
@rw,
@visibility,
parse(@comment),
singleton,
@file.relative_name,
@parent.full_name,
@parent.class,
@section.title
]
end
Loads this Attr from array. For a
loaded Attr the following methods will return
cached values:
# File rdoc/attr.rb, line 123
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
Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.
If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.
If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.
If you want to help improve the Ruby documentation, please see Improve the docs, or visit Documenting-ruby.org.