Class: RDoc::Attr
- Inherits:
-
MethodAttr
- Object
- CodeObject
- MethodAttr
- RDoc::Attr
- Defined in:
- lib/rdoc/code_object/attr.rb
Overview
An attribute created by #attr, #attr_reader, #attr_writer or #attr_accessor
Constant Summary collapse
- MARSHAL_VERSION =
- 3
-
RDoc 4
Added parent name and class Added section title
3
Constants included from Text
Text::MARKUP_FORMAT, Text::SPACE_SEPARATED_LETTER_CLASS, Text::TO_HTML_CHARACTERS
Instance Attribute Summary collapse
-
#rw ⇒ Object
Is the attribute readable (‘R’), writable (‘W’) or both (‘RW’)?.
Attributes inherited from MethodAttr
#aliases, #arglists, #block_params, #call_seq, #is_alias_for, #name, #param_seq, #params, #singleton, #text, #visibility
Attributes inherited from CodeObject
#comment, #document_children, #document_self, #done_documenting, #file, #force_documentation, #line, #metadata, #mixin_from, #parent, #received_nodoc, #section, #store, #viewer
Attributes included from Text
Instance Method Summary collapse
-
#==(other) ⇒ Object
Attributes are equal when their names, singleton and rw are identical.
-
#add_alias(an_alias, context) ⇒ Object
Add
an_alias
as an attribute incontext
. -
#aref_prefix ⇒ Object
The #aref prefix for attributes.
-
#calls_super ⇒ Object
Attributes never call super.
-
#definition ⇒ Object
Returns attr_reader, attr_writer or attr_accessor as appropriate.
-
#initialize(text, name, rw, comment, singleton = false) ⇒ Attr
constructor
Creates a new Attr with body
text
,name
, read/write statusrw
andcomment
. -
#inspect ⇒ Object
:nodoc:.
-
#marshal_dump ⇒ Object
Dumps this Attr for use by ri.
-
#marshal_load(array) ⇒ Object
Loads this Attr from
array
. -
#pretty_print(q) ⇒ Object
:nodoc:.
-
#to_s ⇒ Object
:nodoc:.
-
#token_stream ⇒ Object
Attributes do not have token streams.
Methods inherited from MethodAttr
#<=>, #add_line_numbers, #aref, #documented?, #find_method_or_attribute, #find_see, #full_name, #html_name, #initialize_copy, #initialize_visibility, #markup_code, #name_prefix, #output_name, #parent_name, #path, #pretty_name, #search_record, #see, #store=, #type
Methods inherited from CodeObject
#display?, #documented?, #each_parent, #file_name, #full_name=, #ignore, #ignored?, #initialize_visibility, #options, #parent_file_name, #parent_name, #record_location, #start_doc, #stop_doc, #suppress, #suppressed?
Methods included from Generator::Markup
#aref_to, #as_href, #cvs_url, #description, #formatter
Methods included from Text
encode_fallback, #expand_tabs, #flush_left, #markup, #normalize_comment, #parse, #snippet, #strip_hashes, #strip_newlines, #strip_stars, #to_html, #wrap
Constructor Details
#initialize(text, name, rw, comment, singleton = false) ⇒ Attr
Creates a new Attr with body text
, name
, read/write status rw
and comment
. singleton
marks this as a class attribute.
25 26 27 28 29 30 31 |
# File 'lib/rdoc/code_object/attr.rb', line 25 def initialize(text, name, rw, comment, singleton = false) super text, name @rw = rw @singleton = singleton self.comment = comment end |
Instance Attribute Details
#rw ⇒ Object
Is the attribute readable (‘R’), writable (‘W’) or both (‘RW’)?
19 20 21 |
# File 'lib/rdoc/code_object/attr.rb', line 19 def rw @rw end |
Instance Method Details
#==(other) ⇒ Object
Attributes are equal when their names, singleton and rw are identical
36 37 38 39 40 41 |
# File 'lib/rdoc/code_object/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) ⇒ Object
Add an_alias
as an attribute in context
.
46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/rdoc/code_object/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 ⇒ Object
The #aref prefix for attributes
61 62 63 |
# File 'lib/rdoc/code_object/attr.rb', line 61 def aref_prefix 'attribute' end |
#calls_super ⇒ Object
Attributes never call super. See RDoc::AnyMethod#calls_super
An RDoc::Attr can show up in the method list in some situations (see Gem::ConfigFile)
71 72 73 |
# File 'lib/rdoc/code_object/attr.rb', line 71 def calls_super # :nodoc: false end |
#definition ⇒ Object
Returns attr_reader, attr_writer or attr_accessor as appropriate.
78 79 80 81 82 83 84 |
# File 'lib/rdoc/code_object/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 |
#inspect ⇒ Object
:nodoc:
86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/rdoc/code_object/attr.rb', line 86 def inspect # :nodoc: alias_for = @is_alias_for ? " (alias for #{@is_alias_for.name})" : nil visibility = self.visibility visibility = "forced #{visibility}" if force_documentation "#<%s:0x%x %s %s (%s)%s>" % [ self.class, object_id, full_name, rw, visibility, alias_for, ] end |
#marshal_dump ⇒ Object
Dumps this Attr for use by ri. See also #marshal_load
102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
# File 'lib/rdoc/code_object/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) ⇒ Object
Loads this Attr from array
. For a loaded Attr the following methods will return cached values:
-
#full_name
-
#parent_name
124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 |
# File 'lib/rdoc/code_object/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 |
#pretty_print(q) ⇒ Object
:nodoc:
151 152 153 154 155 156 157 158 159 160 |
# File 'lib/rdoc/code_object/attr.rb', line 151 def pretty_print q # :nodoc: q.group 2, "[#{self.class.name} #{full_name} #{rw} #{visibility}", "]" do unless comment.empty? then q.breakable q.text "comment:" q.breakable q.pp @comment end end end |
#to_s ⇒ Object
:nodoc:
162 163 164 |
# File 'lib/rdoc/code_object/attr.rb', line 162 def to_s # :nodoc: "#{definition} #{name} in: #{parent}" end |
#token_stream ⇒ Object
Attributes do not have token streams.
An RDoc::Attr can show up in the method list in some situations (see Gem::ConfigFile)
172 173 |
# File 'lib/rdoc/code_object/attr.rb', line 172 def token_stream # :nodoc: end |