Class: RDoc::AnyMethod
Relationships & Source Files | |
Extension / Inclusion / Inheritance Descendants | |
Subclasses:
|
|
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
self,
MethodAttr,
CodeObject
|
|
Instance Chain:
|
|
Inherits: |
RDoc::MethodAttr
|
Defined in: | lib/rdoc/any_method.rb |
Overview
AnyMethod
is the base class for objects representing methods
Constant Summary
Text - Included
Class Attribute Summary
MethodAttr - Inherited
.add_line_numbers | Allows controlling whether |
Class Method Summary
-
.new(text, name) ⇒ AnyMethod
constructor
Creates a new
AnyMethod
with a token streamtext
and #name
MethodAttr - Inherited
.new | Creates a new MethodAttr from token stream |
CodeObject - Inherited
.new | Creates a new CodeObject that will document itself and its children. |
Instance Attribute Summary
-
#c_function
rw
The C function that implements this method (if it was defined in a C file).
-
#call_seq
rw
Different ways to call this method.
-
#call_seq=(call_seq)
rw
Sets the different ways you can call this method.
-
#calls_super
rw
If true this method uses
super
to call a superclass version. -
#dont_rename_initialize
rw
Don't rename #initialize to ::new.
-
#params
rw
Parameters for this method.
-
#store=(store)
writeonly
Sets the store for this method and its referenced code objects.
MethodAttr - Inherited
#block_params | Parameters yielded by the called block. |
#block_params= | Attempts to sanitize the content passed by the Ruby parser: remove outer parentheses, etc. |
#call_seq | Different ways to call this method. |
#is_alias_for | The method/attribute we're aliasing. |
#name | Name of this method/attribute. |
#params | Parameters for this method. |
#singleton | Is this a singleton method/attribute? |
#visibility | public, protected, private. |
#aliases | Array of other names for this method/attribute. |
#arglists | The call_seq or the param_seq with method name, if there is no call_seq. |
#documented? | 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 |
#param_seq | Pretty parameter list for this method. |
#text | Source file token stream. |
#store= | Sets the store for this class or module and its contained code objects. |
CodeObject - Inherited
#comment | Our comment. |
#comment= | Replaces our comment with |
#document_children | Do we document our children? |
#document_children= | Enables or disables documentation of this CodeObject's children unless it has been turned off by :enddoc: |
#document_self | Do we document ourselves? |
#document_self= | Enables or disables documentation of this CodeObject unless it has been turned off by :enddoc:. |
#done_documenting | Are we done documenting (ie, did we come across a :enddoc:)? |
#done_documenting= | Turns documentation on/off, and turns on/off |
#force_documentation | Force documentation of this CodeObject. |
#force_documentation= | Force the documentation of this object unless documentation has been turned off by :enddoc: |
#line | Line in |
#offset | Offset in |
#parent | Our parent CodeObject. |
#parent= | Sets the parent CodeObject. |
#section | The section this CodeObject is in. |
#section= | Set the section this CodeObject is in. |
#store | The Store for this object. |
#store= | Sets the |
#viewer | We are the model of the code, but we know that at some point we will be worked on by viewers. |
#display? | Should this CodeObject be displayed in output? |
#documented? | Does this object have a comment with content or is |
#file | Which file this code object was defined in. |
#ignored? | Has this class been ignored? |
#metadata | Hash of arbitrary metadata for this CodeObject. |
#received_nodoc | Did we ever receive a |
#suppressed? | Has this class been suppressed? |
#full_name= | Sets the full_name overriding any computed full name. |
Instance Method Summary
-
#add_alias(an_alias, context = nil)
Adds
an_alias
as an alias for this method incontext
. -
#aref_prefix
Prefix for
aref
is 'method'. -
#arglists
The call_seq or the param_seq with method name, if there is no call_seq.
-
#marshal_dump
Dumps this
AnyMethod
for use by ri. -
#marshal_load(array)
Loads this
AnyMethod
fromarray
. -
#name
Method name.
-
#param_list
A list of this method's method and yield parameters.
-
#param_seq
Pretty parameter list for this method.
-
#superclass_method
For methods that
super
, find the superclass method that would be called.
TokenStream - Included
#add_token | |
#add_tokens | Adds |
#collect_tokens | Starts collecting tokens. |
#pop_token | Remove the last token from the collected tokens. |
#start_collecting_tokens | |
#token_stream | Current token stream. |
#tokens_to_s | Returns a string representation of the token stream. |
MethodAttr - Inherited
#<=> | Order by |
#add_alias | Abstract method. |
#add_line_numbers | Prepend |
#aref | HTML fragment reference for this method. |
#aref_prefix | Prefix for |
#full_name | Full method/attribute name including namespace. |
#html_name | HTML id-friendly method/attribute name. |
#markup_code | Turns the method's token stream into HTML. |
#name_prefix | '::' for a class method/attribute, '#' for an instance method. |
#output_name | Name for output to HTML. |
#parent_name | Name of our parent with special handling for un-marshaled methods. |
#path | Path to this method for use with HTML generator output. |
#pretty_name | Method/attribute name with class/instance indicator. |
#search_record | Used by Generator::JsonIndex to create a record for the search engine. |
#see | A method/attribute to look at, in particular if this method/attribute has no documentation. |
#type | Type of method/attribute (class or instance). |
CodeObject - Inherited
#each_parent | Yields each parent of this CodeObject. |
#file_name | File name where this CodeObject was found. |
#ignore | Use this to ignore a CodeObject and all its children until found again (#record_location is called). |
#options | The options instance from the store this CodeObject is attached to, or a default options instance if the CodeObject is not attached. |
#parent_file_name | File name of our parent. |
#parent_name | Name of our parent. |
#record_location | Records the TopLevel (file) where this code object was defined. |
#start_doc | Enable capture of documentation unless documentation has been turned off by :enddoc: |
#stop_doc | Disable capture of documentation. |
#suppress | Use this to suppress a CodeObject and all its children until the next file it is seen in or documentation is discovered. |
Generator::Markup - Included
#aref_to | Generates a relative URL from this object's path to |
#as_href | Generates a relative URL from |
#cvs_url | Build a webcvs URL starting for the given |
#description | Handy wrapper for marking up this object's comment. |
#formatter | Creates an Markup::ToHtmlCrossref formatter. |
Text - Included
#expand_tabs | Expands tab characters in |
#flush_left | Flush |
#markup | Convert a string in markup format into HTML. |
#normalize_comment | Strips hashes, expands tabs then flushes |
#parse | Normalizes |
#snippet | The first |
#strip_hashes | Strips leading # characters from |
#strip_newlines | Strips leading and trailing n characters from |
#strip_stars | Strips /* */ style comments. |
#to_html | Converts ampersand, dashes, ellipsis, quotes, copyright and registered trademark symbols in |
#wrap | Wraps |
Constructor Details
.new(text, name) ⇒ AnyMethod
Creates a new AnyMethod
with a token stream text
and #name
# File 'lib/rdoc/any_method.rb', line 49
def initialize text, name super @c_function = nil @dont_rename_initialize = false @token_stream = nil @calls_super = false @superclass_method = nil end
Instance Attribute Details
#c_function (rw)
The C function that implements this method (if it was defined in a C file)
# File 'lib/rdoc/any_method.rb', line 27
attr_accessor :c_function
#call_seq (rw)
Different ways to call this method
# File 'lib/rdoc/any_method.rb', line 32
attr_reader :call_seq
#call_seq=(call_seq) (rw)
Sets the different ways you can call this method. If an empty #call_seq is given nil is assumed.
See also #param_seq
#calls_super (rw)
If true this method uses super
to call a superclass version
# File 'lib/rdoc/any_method.rb', line 42
attr_accessor :calls_super
#dont_rename_initialize (rw)
Don't rename #initialize to ::new
# File 'lib/rdoc/any_method.rb', line 22
attr_accessor :dont_rename_initialize
#params (rw)
Parameters for this method
# File 'lib/rdoc/any_method.rb', line 37
attr_accessor :params
#store=(store) (writeonly)
Sets the store for this method and its referenced code objects.
# File 'lib/rdoc/any_method.rb', line 293
def store= store super @file = @store.add_file @file.full_name if @file end
Instance Method Details
#add_alias(an_alias, context = nil)
Adds an_alias
as an alias for this method in context
.
# File 'lib/rdoc/any_method.rb', line 62
def add_alias an_alias, context = nil method = self.class.new an_alias.text, an_alias.new_name method.record_location an_alias.file method.singleton = self.singleton method.params = self.params method.visibility = self.visibility method.comment = an_alias.comment method.is_alias_for = self @aliases << method context.add_method method if context method end
#aref_prefix
Prefix for aref
is 'method'.
# File 'lib/rdoc/any_method.rb', line 79
def aref_prefix 'method' end
#arglists
The call_seq or the param_seq with method name, if there is no call_seq.
Use this for displaying a method's argument lists.
#marshal_dump
Dumps this AnyMethod
for use by ri. See also #marshal_load
# File 'lib/rdoc/any_method.rb', line 130
def marshal_dump aliases = @aliases.map do |a| [a.name, parse(a.comment)] end is_alias_for = [ @is_alias_for.parent.full_name, @is_alias_for.singleton, @is_alias_for.name ] if @is_alias_for [ MARSHAL_VERSION, @name, full_name, @singleton, @visibility, parse(@comment), @call_seq, @block_params, aliases, @params, @file.relative_name, @calls_super, @parent.name, @parent.class, @section.title, is_alias_for, ] end
#marshal_load(array)
Loads this AnyMethod
from array
. For a loaded AnyMethod
the following methods will return cached values:
-
#full_name
-
#parent_name
# File 'lib/rdoc/any_method.rb', line 167
def marshal_load array initialize_visibility @dont_rename_initialize = nil @token_stream = nil @aliases = [] @parent = nil @parent_name = nil @parent_class = nil @section = nil @file = nil version = array[0] @name = array[1] @full_name = array[2] @singleton = array[3] @visibility = array[4] @comment = array[5] @call_seq = array[6] @block_params = array[7] # 8 handled below @params = array[9] # 10 handled below @calls_super = array[11] @parent_name = array[12] @parent_title = array[13] @section_title = array[14] @is_alias_for = array[15] array[8].each do |new_name, comment| add_alias RDoc::Alias.new(nil, @name, new_name, comment, @singleton) end @parent_name ||= if @full_name =~ /#/ then $` else name = @full_name.split('::') name.pop name.join '::' end @file = RDoc::TopLevel.new array[10] if version > 0 end
#name
Method name
If the method has no assigned name, it extracts it from #call_seq.
# File 'lib/rdoc/any_method.rb', line 216
def name return @name if @name @name = @call_seq[/^.*?\.(\w+)/, 1] || @call_seq[/^.*?(\w+)/, 1] || @call_seq if @call_seq end
#param_list
A list of this method's method and yield parameters. call-seq
params are preferred over parsed method and block params.
# File 'lib/rdoc/any_method.rb', line 229
def param_list if @call_seq then params = @call_seq.split("\n").last params = params.sub(/.*?\((.*)\)/, '\1') params = params.sub(/(\{|do)\s*\|([^|]*)\|.*/, ',\2') elsif @params then params = @params.sub(/\((.*)\)/, '\1') params << ",#{@block_params}" if @block_params elsif @block_params then params = @block_params else return [] end if @block_params then # If this method has explicit block parameters, remove any explicit # &block params.sub!(/,?\s*&\w+/, '') else params.sub!(/\&(\w+)/, '\1') end params = params.gsub(/\s+/, '').split(',').reject(&:empty?) params.map { |param| param.sub(/=.*/, '') } end
#param_seq
Pretty parameter list for this method. If the method's parameters were given by call-seq
it is preferred over the parsed values.
# File 'lib/rdoc/any_method.rb', line 261
def param_seq if @call_seq then params = @call_seq.split("\n").last params = params.sub(/[^( ]+/, '') params = params.sub(/(\|[^|]+\|)\s*\.\.\.\s*(end|\})/, '\1 \2') elsif @params then params = @params.gsub(/\s*\#.*/, '') params = params.tr("\n", " ").squeeze(" ") params = "(#{params})" unless params[0] == ?( else params = '' end if @block_params then # If this method has explicit block parameters, remove any explicit # &block params.sub!(/,?\s*&\w+/, '') block = @block_params.gsub(/\s*\#.*/, '') block = block.tr("\n", " ").squeeze(" ") if block[0] == ?( block.sub!(/^\(/, '').sub!(/\)/, '') end params << " { |#{block}| ... }" end params end
#superclass_method
For methods that super
, find the superclass method that would be called.
# File 'lib/rdoc/any_method.rb', line 302
def superclass_method return unless @calls_super return @superclass_method if @superclass_method parent.each_ancestor do |ancestor| if method = ancestor.method_list.find { |m| m.name == @name } then @superclass_method = method break end end @superclass_method end