Extended maintenance of Ruby 1.9.3 ended on February 23, 2015. Read more
Abstract class representing either a method or an attribute.
Creates a new MethodAttr from token stream
text
and method or attribute name name
.
Usually this is called by super from a subclass.
# File rdoc/method_attr.rb, line 79 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 rdoc/method_attr.rb, line 181 def add_alias(an_alias, context) raise NotImplementedError end
HTML fragment reference for this method
# File rdoc/method_attr.rb, line 188 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 rdoc/method_attr.rb, line 197 def aref_prefix raise NotImplementedError end
Attempts to sanitize the content passed by the ruby parser: remove outer parentheses, etc.
# File rdoc/method_attr.rb, line 205 def block_params=(value) # 'yield.to_s' or 'assert yield, msg' return @block_params = '' if value =~ /^[\.,]/ # remove trailing 'if/unless ...' return @block_params = '' if value =~ /^(if|unless)\s/ value = $1.strip if value =~ /^(.+)\s(if|unless)\s/ # outer parentheses value = $1 if value =~ /^\s*\((.*)\)\s*$/ value = value.strip # proc/lambda return @block_params = $1 if value =~ /^(proc|lambda)(\s*\{|\sdo)/ # surrounding +...+ or [...] value = $1.strip if value =~ /^\+(.*)\+$/ value = $1.strip if value =~ /^\[(.*)\]$/ return @block_params = '' if value.empty? # global variable return @block_params = 'str' if value =~ /^\$[&0-9]$/ # wipe out array/hash indices value.gsub!(/(\w)\[[^\[]+\]/, '\1') # remove @ from class/instance variables value.gsub!(/@@?([a-z0-9_]+)/, '\1') # method calls => method name value.gsub!(/([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(/([A-Z]+)([A-Z][a-z])/,'\1_\2'). gsub(/([a-z\d])([A-Z])/,'\1_\2'). downcase else $2 end end # class prefixes value.gsub!(/[A-Za-z0-9_:]+::/, '') # simple expressions value = $1 if value =~ /^([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 rdoc/method_attr.rb, line 113 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 rdoc/method_attr.rb, line 270 def full_name @full_name || "#{parent_name}#{pretty_name}" end
HTML id-friendly method/attribute name
# File rdoc/method_attr.rb, line 263 def html_name CGI.escape(@name.gsub('-', '-2D')).gsub('%','-').sub(/^-/, '') end
‘::’ for a class method/attribute, ‘#’ for an instance method.
# File rdoc/method_attr.rb, line 277 def name_prefix singleton ? '::' : '#' end
Name of our parent with special handling for un-marshaled methods
# File rdoc/method_attr.rb, line 305 def parent_name @parent_name || super end
Path to this method
# File rdoc/method_attr.rb, line 298 def path "#{@parent.path}##{aref}" end
Method/attribute name with class/instance indicator
# File rdoc/method_attr.rb, line 284 def pretty_name "#{name_prefix}#{@name}" 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 rdoc/method_attr.rb, line 133 def see @see = find_see if @see == false @see 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 visit Documenting-ruby.org.