Class: YARD::CodeObjects::ClassObject
- Inherits:
-
NamespaceObject
- Object
- Base
- NamespaceObject
- YARD::CodeObjects::ClassObject
- Defined in:
- lib/yard/code_objects/class_object.rb
Overview
A ClassObject represents a Ruby class in source code. It is a ModuleObject with extra inheritance semantics through the superclass.
Instance Attribute Summary collapse
-
#aliases ⇒ Hash
inherited
from NamespaceObject
readonly
A hash containing two keys, :class and :instance, each containing a hash of objects and their alias names.
-
#attributes ⇒ Hash
inherited
from NamespaceObject
readonly
A hash containing two keys, class and instance, each containing the attribute name with a { :read, :write } hash for the read and write objects respectively.
-
#base_docstring ⇒ Docstring
inherited
from Base
readonly
The non-localized documentation string associated with the object.
-
#child(opts = {}) ⇒ Base?
inherited
from NamespaceObject
Looks for a child that matches the attributes specified by
opts
. -
#children ⇒ Array<Base>
inherited
from NamespaceObject
readonly
The list of objects defined in this namespace.
-
#class_attributes ⇒ Hash
inherited
from NamespaceObject
Only the class attributes.
-
#class_mixins ⇒ Array<ModuleObject>
inherited
from NamespaceObject
readonly
Class mixins.
-
#constants(opts = {}) ⇒ Array<ConstantObject>
inherited
from NamespaceObject
Returns all constants in the namespace.
-
#cvars ⇒ Array<ClassVariableObject>
inherited
from NamespaceObject
Returns class variables defined in this namespace.
-
#dynamic ⇒ Boolean
inherited
from Base
Marks whether or not the method is conditionally defined at runtime.
-
#files ⇒ Array<String>
inherited
from Base
readonly
The files the object was defined in.
-
#group ⇒ String
inherited
from Base
The group this object is associated with.
-
#groups ⇒ Array<String>
inherited
from NamespaceObject
A list of ordered group names inside the namespace.
-
#included_constants ⇒ Array<ConstantObject>
inherited
from NamespaceObject
Returns constants included from any mixins.
-
#included_meths(opts = {}) ⇒ Object
inherited
from NamespaceObject
Returns methods included from any mixins that match the attributes specified by
opts
. -
#instance_attributes ⇒ Hash
inherited
from NamespaceObject
Only the instance attributes.
-
#instance_mixins ⇒ Array<ModuleObject>
inherited
from NamespaceObject
readonly
Instance mixins.
-
#meths(opts = {}) ⇒ Array<MethodObject>
inherited
from NamespaceObject
Returns all methods that match the attributes specified by
opts
. -
#mixins(*scopes) ⇒ Array<ModuleObject>
inherited
from NamespaceObject
Returns for specific scopes.
-
#namespace ⇒ NamespaceObject
(also: #parent)
inherited
from Base
The namespace the object is defined in.
-
#signature ⇒ String
inherited
from Base
The one line signature representing an object.
-
#source ⇒ String?
inherited
from Base
The source code associated with the object.
-
#source_type ⇒ Symbol
inherited
from Base
Language of the source code associated with the object.
-
#superclass ⇒ ClassObject
The ClassObject that this class object inherits from in Ruby source.
-
#visibility ⇒ Symbol
inherited
from Base
The visibility of an object (:public, :private, :protected).
Instance Method Summary collapse
-
#constants(opts = {}) ⇒ Array<ConstantObject>
Returns the list of constants matching the options hash.
-
#inheritance_tree(include_mods = false) ⇒ Array<NamespaceObject>
Returns the inheritance tree of the object including self.
-
#inherited_constants ⇒ Array<ConstantObject>
Returns only the constants that were inherited.
-
#inherited_meths(opts = {}) ⇒ Array<MethodObject>
Returns only the methods that were inherited.
-
#initialize(namespace, name, *args, &block) ⇒ ClassObject
constructor
Creates a new class object in
namespace
withname
. -
#is_exception? ⇒ Boolean
Whether or not the class is a Ruby Exception.
-
#meths(opts = {}) ⇒ Array<MethodObject>
Returns the list of methods matching the options hash.
Constructor Details
#initialize(namespace, name, *args, &block) ⇒ ClassObject
Creates a new class object in namespace
with name
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/yard/code_objects/class_object.rb', line 12 def initialize(namespace, name, *args, &block) super if is_exception? self.superclass ||= "::Exception" unless P(namespace, name) == P(:Exception) else case P(namespace, name).path when "BasicObject" nil when "Object" self.superclass ||= "::BasicObject" else self.superclass ||= "::Object" end end end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method in the class YARD::CodeObjects::Base
Instance Attribute Details
#aliases ⇒ Hash (readonly) Originally defined in class NamespaceObject
A hash containing two keys, :class and :instance, each containing a hash of objects and their alias names.
#attributes ⇒ Hash (readonly) Originally defined in class NamespaceObject
A hash containing two keys, class and instance, each containing the attribute name with a { :read, :write } hash for the read and write objects respectively.
#base_docstring ⇒ Docstring (readonly) Originally defined in class Base
The non-localized documentation string associated with the object
#child(opts = {}) ⇒ Base? Originally defined in class NamespaceObject
Looks for a child that matches the attributes specified by
opts
.
#children ⇒ Array<Base> (readonly) Originally defined in class NamespaceObject
The list of objects defined in this namespace
#class_attributes ⇒ Hash Originally defined in class NamespaceObject
Only the class attributes
#class_mixins ⇒ Array<ModuleObject> (readonly) Originally defined in class NamespaceObject
Class mixins
#constants(opts = {}) ⇒ Array<ConstantObject> Originally defined in class NamespaceObject
Returns all constants in the namespace
#cvars ⇒ Array<ClassVariableObject> Originally defined in class NamespaceObject
Returns class variables defined in this namespace.
#dynamic ⇒ Boolean Originally defined in class Base
Marks whether or not the method is conditionally defined at runtime
#files ⇒ Array<String> (readonly) Originally defined in class Base
The files the object was defined in. To add a file, use #add_file.
#groups ⇒ Array<String> Originally defined in class NamespaceObject
Returns a list of ordered group names inside the namespace
#included_constants ⇒ Array<ConstantObject> Originally defined in class NamespaceObject
Returns constants included from any mixins
#included_meths(opts = {}) ⇒ Object Originally defined in class NamespaceObject
Returns methods included from any mixins that match the attributes
specified by opts
. If no options are specified, returns all
included methods.
#instance_attributes ⇒ Hash Originally defined in class NamespaceObject
Only the instance attributes
#instance_mixins ⇒ Array<ModuleObject> (readonly) Originally defined in class NamespaceObject
Instance mixins
#meths(opts = {}) ⇒ Array<MethodObject> Originally defined in class NamespaceObject
Returns all methods that match the attributes specified by
opts
. If no options are provided, returns all methods.
#mixins(*scopes) ⇒ Array<ModuleObject> Originally defined in class NamespaceObject
Returns for specific scopes. If no scopes are provided, returns all mixins.
#namespace ⇒ NamespaceObject Also known as: parent Originally defined in class Base
The namespace the object is defined in. If the object is in the top level namespace, this is Registry.root
#signature ⇒ String Originally defined in class Base
The one line signature representing an object. For a method, this will be of the form “def meth(arguments…)”. This is usually the first source line.
#source_type ⇒ Symbol Originally defined in class Base
Language of the source code associated with the object. Defaults to
:ruby
.
#superclass ⇒ ClassObject
The YARD::CodeObjects::ClassObject that this class object inherits from in Ruby source.
7 8 9 |
# File 'lib/yard/code_objects/class_object.rb', line 7 def superclass @superclass end |
#visibility ⇒ Symbol Originally defined in class Base
Returns the visibility of an object (:public, :private, :protected)
Instance Method Details
#constants(opts = {}) ⇒ Array<ConstantObject>
Returns the list of constants matching the options hash.
98 99 100 101 |
# File 'lib/yard/code_objects/class_object.rb', line 98 def constants(opts = {}) opts = SymbolHash[:inherited => true].update(opts) super(opts) + (opts[:inherited] ? inherited_constants : []) end |
#inheritance_tree(include_mods = false) ⇒ Array<NamespaceObject>
Returns the inheritance tree of the object including self.
42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/yard/code_objects/class_object.rb', line 42 def inheritance_tree(include_mods = false) list = (include_mods ? mixins(:instance, :class) : []) if superclass.is_a?(Proxy) || superclass.respond_to?(:inheritance_tree) list += [superclass] unless superclass == P(:Object) || superclass == P(:BasicObject) end [self] + list.map do |m| next m if m == self next m unless m.respond_to?(:inheritance_tree) m.inheritance_tree(include_mods) end.flatten.uniq end |
#inherited_constants ⇒ Array<ConstantObject>
Returns only the constants that were inherited.
106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/yard/code_objects/class_object.rb', line 106 def inherited_constants inheritance_tree[1..-1].inject([]) do |list, superclass| if superclass.is_a?(Proxy) list else list += superclass.constants.reject do |o| child(:name => o.name) || list.find {|o2| o2.name == o.name } end end end end |
#inherited_meths(opts = {}) ⇒ Array<MethodObject>
Returns only the methods that were inherited.
76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/yard/code_objects/class_object.rb', line 76 def inherited_meths(opts = {}) inheritance_tree[1..-1].inject([]) do |list, superclass| if superclass.is_a?(Proxy) list else list += superclass.meths(opts).reject do |o| next(false) if opts[:all] child(:name => o.name, :scope => o.scope) || list.find {|o2| o2.name == o.name && o2.scope == o.scope } end end end end |
#is_exception? ⇒ Boolean
Whether or not the class is a Ruby Exception
32 33 34 |
# File 'lib/yard/code_objects/class_object.rb', line 32 def is_exception? inheritance_tree.reverse.any? {|o| BUILTIN_EXCEPTIONS_HASH.has_key? o.path } end |
#meths(opts = {}) ⇒ Array<MethodObject>
Returns the list of methods matching the options hash. Returns all methods if hash is empty.
63 64 65 66 67 68 69 70 71 |
# File 'lib/yard/code_objects/class_object.rb', line 63 def meths(opts = {}) opts = SymbolHash[:inherited => true].update(opts) list = super(opts) list += inherited_meths(opts).reject do |o| next(false) if opts[:all] list.find {|o2| o2.name == o.name && o2.scope == o.scope } end if opts[:inherited] list end |