Class: YARD::CodeObjects::MethodObject
Relationships & Source Files | |
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
self,
Base
|
|
Instance Chain:
self,
Base
|
|
Inherits: |
YARD::CodeObjects::Base
|
Defined in: | lib/yard/code_objects/method_object.rb |
Overview
Represents a Ruby method in source
Class Method Summary
Base
- Inherited
Instance Attribute Summary
- #constructor? ⇒ Boolean readonly
-
#explicit ⇒ Boolean
rw
Whether the object is explicitly defined in source or whether it was inferred by a handler.
-
#is_alias? ⇒ Boolean
readonly
Tests if the object is defined as an alias of another method.
-
#is_attribute? ⇒ Boolean
readonly
Tests if the object is defined as an attribute in the namespace.
-
#is_explicit? ⇒ Boolean
readonly
Tests boolean #explicit value.
- #module_function? ⇒ Boolean readonly
-
#parameters ⇒ Array<Array(String, String)>
rw
Returns the list of parameters parsed out of the method signature with their default values.
- #reader? ⇒ Boolean readonly
-
#scope ⇒ Symbol
rw
The scope of the method (+:class+ or
:instance
). -
#scope=(v)
rw
Changes the scope of an object from
:instance
or:class
. - #writer? ⇒ Boolean readonly
Base
- Inherited
#base_docstring | The non-localized documentation string associated with the object. |
#dynamic | Marks whether or not the method is conditionally defined at runtime. |
#dynamic? | Is the object defined conditionally at runtime? |
#files | The files the object was defined in. |
#group, | |
#namespace | The namespace the object is defined in. |
#namespace= | Sets the namespace the object is defined in. |
#parent | Alias for Base#namespace. |
#root?, | |
#signature | The one line signature representing an object. |
#source | The source code associated with the object. |
#source= | Attaches source code to a code object with an optional file location. |
#source_type | Language of the source code associated with the object. |
#visibility, #visibility= |
Instance Method Summary
-
#aliases ⇒ Array<MethodObject>
Returns all alias names of the object.
-
#attr_info ⇒ SymbolHash?
Returns the read/writer info for the attribute if it is one.
-
#name(prefix = false) ⇒ String, Symbol
Returns the name of the object.
- #overridden_method ⇒ MethodObject?
-
#path ⇒ String
Override path handling for instance methods in the root namespace (they should still have a separator as a prefix).
-
#sep ⇒ String
Override separator to differentiate between class and instance methods.
Base
- Inherited
#== | Alias for Base#equal?. |
#[] | Accesses a custom attribute on the object. |
#[]= | Sets a custom attribute on the object. |
#add_file | Associates a file with a code object, optionally adding the line where it was defined. |
#add_tag | Add tags to the |
#copy_to | Copies all data in this object to another code object, except for uniquely identifying information (path, namespace, name, scope). |
#docstring | The documentation string associated with the object. |
#docstring= | Attaches a docstring to a code object by parsing the comments attached to the statement and filling the |
#eql? | Alias for Base#equal?. |
#equal? | Tests if another object is equal to this, including a proxy. |
#file | Returns the filename the object was first parsed at, taking definitions with docstrings first. |
#format | Renders the object using the templating system. |
#has_tag? | Tests if the |
#hash, | |
#initialize | Creates a new code object. |
#inspect | Inspects the object, returning the type and path. |
#line | Returns the line the object was first parsed at (or nil). |
#method_missing, | |
#name | The name of the object. |
#path | Represents the unique path of the object. |
#relative_path, | |
#sep | Override this method with a custom component separator. |
#tag | Gets a tag from the |
#tags | Gets a list of tags from the |
#title, #to_ary, | |
#to_s | Alias for Base#path. |
#type | Default type is the lowercase class name without the "Object" suffix. |
#format_source | Formats source code by removing leading indentation. |
#translate_docstring |
Constructor Details
.new(namespace, name, scope = :instance, &block) ⇒ MethodObject
# File 'lib/yard/code_objects/method_object.rb', line 37
def initialize(namespace, name, scope = :instance, &block) @module_function = false @scope = nil # handle module function if scope == :module other = self.class.new(namespace, name, &block) other.visibility = :private scope = :class @module_function = true end @visibility = :public self.scope = scope self.parameters = [] super end
Dynamic Method Handling
This class handles dynamic methods through the method_missing method in the class YARD::CodeObjects::Base
Instance Attribute Details
#constructor? ⇒ Boolean
(readonly)
# File 'lib/yard/code_objects/method_object.rb', line 78
def constructor? name == :initialize && scope == :instance && namespace.is_a?(ClassObject) end
#explicit ⇒ Boolean
(rw)
Whether the object is explicitly defined in source or whether it was inferred by a handler. For instance, attribute methods are generally inferred and therefore not explicitly defined in source.
# File 'lib/yard/code_objects/method_object.rb', line 18
attr_accessor :explicit
#is_alias? ⇒ Boolean
(readonly)
Tests if the object is defined as an alias of another method
# File 'lib/yard/code_objects/method_object.rb', line 126
def is_alias? return false unless namespace.is_a?(NamespaceObject) namespace.aliases.key? self end
#is_attribute? ⇒ Boolean
(readonly)
Tests if the object is defined as an attribute in the namespace
#is_explicit? ⇒ Boolean
(readonly)
Tests boolean #explicit value.
# File 'lib/yard/code_objects/method_object.rb', line 134
def is_explicit? explicit ? true : false end
#module_function? ⇒ Boolean
(readonly)
# File 'lib/yard/code_objects/method_object.rb', line 85
def module_function? @module_function end
#parameters ⇒ Array<Array(String, String)> (rw)
Returns the list of parameters parsed out of the method signature with their default values.
# File 'lib/yard/code_objects/method_object.rb', line 25
attr_accessor :parameters
#reader? ⇒ Boolean
(readonly)
# File 'lib/yard/code_objects/method_object.rb', line 107
def reader? info = attr_info info && info[:read] == self ? true : false end
#scope ⇒ Symbol
(rw)
The scope of the method (+:class+ or :instance
)
# File 'lib/yard/code_objects/method_object.rb', line 11
attr_reader :scope
#scope=(v) (rw)
Changes the scope of an object from :instance
or :class
# File 'lib/yard/code_objects/method_object.rb', line 58
def scope=(v) reregister = @scope ? true : false # handle module function if v == :module other = self.class.new(namespace, name) other.visibility = :private @visibility = :public @module_function = true @path = nil end YARD::Registry.delete(self) @path = nil @scope = v.to_sym @scope = :class if @scope == :module YARD::Registry.register(self) if reregister end
#writer? ⇒ Boolean
(readonly)
# File 'lib/yard/code_objects/method_object.rb', line 100
def writer? info = attr_info info && info[:write] == self ? true : false end
Instance Method Details
#aliases ⇒ Array<MethodObject
>
Returns all alias names of the object
# File 'lib/yard/code_objects/method_object.rb', line 149
def aliases list = [] return list unless namespace.is_a?(NamespaceObject) namespace.aliases.each do |o, aname| list << o if aname == name && o.scope == scope end list end
#attr_info ⇒ SymbolHash?
Returns the read/writer info for the attribute if it is one
# File 'lib/yard/code_objects/method_object.rb', line 93
def attr_info return nil unless namespace.is_a?(NamespaceObject) namespace.attributes[scope][name.to_s.gsub(/=$/, '')] end
#name(prefix = false) ⇒ String, Symbol
Returns the name of the object.
#overridden_method ⇒ MethodObject
?
#path ⇒ String
Override path handling for instance methods in the root namespace (they should still have a separator as a prefix).
# File 'lib/yard/code_objects/method_object.rb', line 161
def path @path ||= !namespace || namespace.path == "" ? sep + super : super end
#sep ⇒ String
Override separator to differentiate between class and instance methods.